Hallo Thomas,
Quelltext:
<xsl:apply-templates select="Handbuch/Handbuchinhalt/Kapitel">
<xsl:with-param name="Zaehlen">1</xsl:with-param>
</xsl:apply-templates>Damit initiierst du das Template für _jedes einzelnen_ <Kapitel> mit dem Zähler 1 auf.
Wenn ich aber call-template benutze, um aus dem Starttemplate auf das nächste Template zuzugreifen und den Parameter zu übergeben, dann kann ich den Knoten Kapitel nicht matchen.:-/
Allerdings wird mit Call-template die Anzahl der Kapitel anstatt 27x nur 1x ausgegeben, die ich mit Count() ermittelt habe.
Quelltext:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:preserve-space elements="test"/>
<!-- Globaler Paramter, der die Anzahl der Kapitelüberschriften speichert -->
<xsl:param name="CountKapitel" select="count(//Kapitel)" />
<xsl:template match="/">
<html>
<head>
<title>Handbuch</title>
</head>
<body>
<pre>
<!-- Lokaler Parameter, der die Nummerierung der Hauptkapitel steuern soll -->
<xsl:call-template name="Schleife">
<xsl:with-param name="HauptkapitelNr">0</xsl:with-param>
</xsl:call-template>
</pre>
</body>
</html>
</xsl:template>
<xsl:template match="Handbuch/Handbuchinhalt" name="Schleife">
<xsl:param name="HauptkapitelNr" />
<!-- Test: in welchem Knoten bin ich -->
<xsl:value-of select="name()" />
xsl:choose
<xsl:when test="Kapitel[@kapiteltyp='Hauptkapitel'] ">
<xsl:call-template name="Hauptkapitel" />
</xsl:when>
</xsl:choose>
</xsl:template>
[...]
Viele Grüße
verenice