Bei Rekursion in XSLT keine Parameterübergabe.
fleedo
- xsl
Hallo @all,
Folgende XML-Datei soll per XSL transformiert werden.
<gle>
<gl>...</gl>
<gl>
<gl>
<gl>...</gl>
</gl>
</gl>
<gle>
Ich brauche nun einen rekursiven Code, der mir die Ebene der Verschachtelung zählt. Ich befinde mich gerade im Knoten <gle>. Mein Entwurf:
<xsl:template match="gl">
<xsl:param name="recCount" select="0"/>
<!-- Prüfe ob gleichartiges Kind existiert -->
<xsl:if test="child::gl">
<xsl:apply-templates select="child::gl">
<xsl:with-param name="recCount" select="recCount + 1"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
Mein Debugger sagt mir, dass der Parameter bei jedem neu gefunden Match von gl wieder 0 ist. Es wird also nicht hochgezählt. Wisst ihr, wo hier mein Denkfehler liegt?
Danke und Gruß
Robert
Hi,
Mein Debugger sagt mir, dass der Parameter bei jedem neu gefunden Match von gl wieder 0 ist. Es wird also nicht hochgezählt. Wisst ihr, wo hier mein Denkfehler liegt?
Wenn das
<xsl:if test="child::gl">
<xsl:apply-templates select="child::gl">
eintrifft, wird doch auch
> ~~~xml
<xsl:template match="gl">
> <xsl:param name="recCount" select="0"/>
wieder erneut ausgeführt.
MfG ChrisB
Hi,
Mein Debugger sagt mir, dass der Parameter bei jedem neu gefunden Match von gl wieder 0 ist. Es wird also nicht hochgezählt. Wisst ihr, wo hier mein Denkfehler liegt?
Wenn das
<xsl:if test="child::gl">
<xsl:apply-templates select="child::gl">
> eintrifft, wird doch auch
> > ~~~xml
<xsl:template match="gl">
> > <xsl:param name="recCount" select="0"/>
wieder erneut ausgeführt.
MfG ChrisB
Hi ChrisB,
danke für die Antwort. Ich habe mich an die Beispiele aus dem XSLT-Standard gehalten. Dort ist es auch ähnlich realisiert.Siehe:
http://www.w3.org/TR/xslt20/#element-with-param
Gruß Robert
Hi,
Mein Debugger sagt mir, dass der Parameter bei jedem neu gefunden Match von gl wieder 0 ist. Es wird also nicht hochgezählt. Wisst ihr, wo hier mein Denkfehler liegt?
Wenn das
<xsl:if test="child::gl">
<xsl:apply-templates select="child::gl">
> > eintrifft, wird doch auch
> > > ~~~xml
<xsl:template match="gl">
> > > <xsl:param name="recCount" select="0"/>
wieder erneut ausgeführt.
MfG ChrisB
Hi ChrisB,
danke für die Antwort. Ich habe mich an die Beispiele aus dem XSLT-Standard gehalten. Dort ist es auch ähnlich realisiert.Siehe:
http://www.w3.org/TR/xslt20/#element-with-paramGruß Robert
Hi nochmal,
hat sich erledigt. Funktioniert mit <xsl:with-param name="recCount" select="$recCount+1"/> im apply-templates Element.
Danke und Gruß
Robert