Hallo,
naja jedenfalls sollte das in der xsl dann so aussehen:
Darf ich ein paar leise Zweifel anmelden?
<xsl:template match="Seite">
<xsl:apply-templates select="Kapitel" />
<xsl:apply-templates select="Unterkapitel" />
</xsl:template>
Tja, damit hat er auch in der inneren <Seite> _alle_ Kapitel und somit (nach deiner Templatestruktur) wiederum _alle_ Seite(n) dabei. Du hast damit eine wunderschöne Endlosschleife erzeugt, das ist kaum gewollt.
<xsl:template match="Kapitel">
<xsl:apply-templates select="Block" />
<xsl:apply-templates select="Unterkapitel" />
<xsl:apply-templates select="Seite" />
</xsl:template>
Gilt das selbe wie oben:
Seite ruft Kapitel auf --> Kapitel ruft Seite auf --> Seite ruft Kapitel auf -->usw. usf.
<xsl:template match="Block">
xsl:choose
<!-- damit frägst du ab ob das "übernächst-höhere" Element kapitel ist, das wort test ist festgelegt und bleibt so stehen -->
<xsl:when test="name(../..)='Kapitel'">
<xsl:value-of select="." />
</xsl:when>
</xsl:choose>
</xsl:template>
Da fehlt die Bedingung für Blocks deren parent::node() nicht Kapitel ist.
Irgendwie nicht das Wahre. Was meinst du?
Grüße
Thomas