verenice: XSLT / Schleife und choose

Beitrag lesen

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