XSL-FO Variable inkrementieren in for-each

nrg

Top Contributor
Hallo Zusammen,

folgender Versuch von mir:

Code:
<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?
 
S

SlaterB

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

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

Top Contributor
danke. das hilft schonmal sehr :)

aber wie pack ich das jetzt in eine Bedingung?

Code:
<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)

Code:
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
 
S

SlaterB

Gast
verschiedenes ausprobieren ist nicht verboten

<xsl:when test="position() = 1">
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen

Neue Themen


Oben