# XSL-FO Variable inkrementieren in for-each



## nrg (11. Mrz 2010)

Hallo Zusammen,

folgender Versuch von mir:


```
<xsl:variable name="test" select="0" />
  <xsl:template match="html:footersum">  
   <fo:table>
    <fo:table-column column-width="20mm" />
    <fo:table-body>
        <xsl:for-each select="html:table">
          <xsl:for-each select="html:tr">
            <fo:table-row>
	      <fo:table-cell>
                <fo:block>$test</fo:block>
              </fo:table-cell>
            </fo:table-row>
           <xsl:with-param name="test" select="($test) + 1" />
          </xsl:for-each>
        </xsl:for-each>
    </fo:table-body>
   </fo:table>
  </xsl:template>
```

warum klappt das nicht?


----------



## SlaterB (11. Mrz 2010)

<xsl:with-param 
ist doch nur zur Übergabe an Template-Aufrufe,
wenn dann was mit  <xslaram 

aber ob das Neudefinieren möglich ist weiß ich nicht, habe ich noch nicht gesehen,
evtl. wirklich nur per Template-Aufrufe, Rekursion usw.


für dein Beispiel könnte die vorhandene Funktion position() interessant sein, 
innerhalb des xsl:for-each müsste das die Elemente passend duchzählen, von 0 oder 1 beginnend

xsl:value-of select="position()"


----------



## nrg (11. Mrz 2010)

danke. das hilft schonmal sehr 

aber wie pack ich das jetzt in eine Bedingung?


```
<xsl:choose>   
<xsl:when test="@position='1'">
              <fo:table-cell>
                <fo:block>in der ersten Zeile schreibe das hier</fo:block>
              </fo:table-cell>
</xsl:when>   

<xsl:otherwise>
              <fo:table-cell>
                <fo:block>in den anderen Zeilen schreibe das hier</fo:block>
              </fo:table-cell>
</xsl:otherwise>   
</xsl:choose>
```

glaube ehrlich gesagt nicht, dass ich mit og postition die Methode auch aufrufe. Sollte denke eher postion() heissen aber das mag er nicht . (will mit fop eine PDF erzeugen)


```
System-ID unbekannt; Zeilennummer1800; Spaltennummer34; Unbekannter Knotentyp: p
osition
System-ID unbekannt; Zeilennummer1800; Spaltennummer34; Zusõtzliche nicht zulõss
ige Token: 'position', '(', ')', '=', ''1''
```

allerdings xsl:value-of select="position()" gibt auf jedenfall schon wie gewünscht aus! zeilenID von 1 beginnend.

danke schonmal


----------



## SlaterB (11. Mrz 2010)

verschiedenes ausprobieren ist nicht verboten

<xsl:when test="position() = 1">


----------



## nrg (11. Mrz 2010)

SlaterB hat gesagt.:


> verschiedenes ausprobieren ist nicht verboten



ich probier schon die ganze Zeit rum, das kannst du mir glauben . werd hier grad mit XSL-FO "ins kalte Wasser geschmissen". noch nie zuvor gemacht und meine ganzen "Erfolge" basieren nur auf try and error .

naja, wie auch immer. vielen dank!


----------

