fjh: Variablenzuweisung in XSL (<xsl:variable>) mehrmals möglich?

Beitrag lesen

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