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" ?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <!-- aufruf der schleife
--> - <xsl:template match="/">
- <xsl:call-template name="fori">
<xsl:with-param name="myCounter" select="0" />
</xsl:call-template>
</xsl:template> - <xsl:template name="fori">
<xsl:param name="myCounter" /> - <!-- hochzaehlen für naechsten durchlauf
-->
<xsl:variable name="mbCounter" select="$myCounter + 1" /> - <!-- ausgabe
-->
<xsl:number value="$mbCounter" format="1" /> - <xsl:if test="$mbCounter < 5">
- <!-- bis 5
--> - <!-- naechster(leider rekursiver) aufruf mit $myCounter+1
--> - <xsl:call-template name="fori">
<xsl:with-param name="myCounter" select="$mbCounter" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Gruß
Franz