verenice: XSL / number()

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

  1. 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."/>&#160;<xsl:value-of select="./text()"/>
       <br />
     </xsl:template>

    Grüße
    Thomas

    1. Guten Morgen, Thomas,
      KRASS, es funktioniert!:o)
      Vielen vielen Dank für Deine schnelle Hilfe!!!!!!

      Viele Grüße
      verenice