Variablenzuweisung in XSL (<xsl:variable>) mehrmals möglich?
Thomas
- xsl
0 fjh
Hallo Leute!
In einer XML-Transformation mit XSL habe ich das Problem, das sich
ein einfacher Zähler nicht realisieren läßt. Die Funktionen position(),
last() und count() sind mir bekannt, lösen aber nicht das Problem.
Folgendes einfaches Beispiel:
XML:
----
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="weg.XSL" ?>
<top>
<eintrag>
<bild>a</bild>
<bild>g</bild>
<bild>h</bild>
<bild>a</bild>
<bild>e</bild>
</eintrag>
</top>
XSL:
----
<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="top/eintrag/bild">
<xsl:if test=". ='a'">
<xsl:value-of select="." /> position <xsl:value-of select="position()" /><br/>
<xsl:variable name="x">1</xsl:variable>
<!-- dies geht nicht <xsl:value-of select="$x = $x + 1"/> -->
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Bei der 4 Schleifen-Iteration muß ich den Wert 2 (2 mal ist die if-bedingung erfüllt) haben, position() liefert aber
den Wert 4, die Variable-Zusweisung funktioniert nur einmal.
Wer kann mir helfen, wäre super?
Vielen Dank im voraus
Thomas
Hallo Thomas,
Bei der 4 Schleifen-Iteration muß ich den Wert 2 (2 mal ist die if-bedingung erfüllt) haben, position() liefert aber
den Wert 4, die Variable-Zusweisung funktioniert nur einmal.
Richtig, das ist so in XSLT, Lösung: Verwendung rekursiver Templates. Ein Beispiel dazu gibts im Archiv, aber den Link finde ich gerade nicht, da der Server ausgelastet ist. Deshalb hier ein Beispiel einer Schleifenrealisierung mit XSLT:
<?xml version="1.0" encoding="iso-8859-1" ?>
Gruß
Franz