XSL / number()
verenice
- xsl
0 Thomas J.S.0 verenice
Hallo,
ich gebe mit der Funktion number() die Kapitelnummerierung automatisch aus. Das funktioniert auch ganz gut. Allerdings werden die Unterkapitel nicht ausgegeben, wenn ich nicht for-each benutze.
Benutze ich for-each, dann werden die Unterkapitel ausgegeben und richtig nummeriert. Allerdings werden dann alle Kapitelüberschriften mehrfach ausgegeben.
Woran könnte das Verhalten liegen?
Quelltext:
<xsl:template match="Handbuch/Handbuchinhalt/Kapitel | Handbuch/Handbuchinhalt/Kapitel/Kapitel">
<xsl:for-each select="//Kapitel">
<xsl:number level="multiple" format="1.1"/>
xsl:text </xsl:text>
<xsl:value-of select="./text()" />
<br />
</xsl:for-each>
</xsl:template>
Vielen Dank schon mal im voraus.
Viele Grüße
verenice
Hallo,
Benutze ich for-each, dann werden die Unterkapitel ausgegeben und richtig nummeriert. Allerdings werden dann alle Kapitelüberschriften mehrfach ausgegeben.
Woran könnte das Verhalten liegen?
Das Problem hast du durch for-each, damit führst du für jedes Kapitel-Element dies Nummerierung durch, d.h. bei jedem erzeugst du die gesamte Liste.
Ich würde das so trennen:
<xsl:template match="Handbuch/Handbuchinhalt">
<xsl:apply-templates select=".//Kapitel" mode="toc" />
<hr />
<h3>Ab hier was anderes</h3>
</xsl:template>
<xsl:template match="Kapitel" mode="toc">
<xsl:number level="multiple" format="1.1.1."/> <xsl:value-of select="./text()"/>
<br />
</xsl:template>
Grüße
Thomas
Guten Morgen, Thomas,
KRASS, es funktioniert!:o)
Vielen vielen Dank für Deine schnelle Hilfe!!!!!!
Viele Grüße
verenice