This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: how to increment a variable in a for-each loop
- From: "Joerg Heinicke" <joerg dot heinicke at gmx dot de>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 24 Jan 2002 00:33:37 +0100
- Subject: Re: [xsl] how to increment a variable in a for-each loop
- References: <20020123231412.58539.qmail@web10005.mail.yahoo.com>
- Reply-to: xsl-list at lists dot mulberrytech dot com
<xsl:for-each select="."> contains always only the current element, so the
position is always 1 -> red background. Remove the for-each and it will
work. A shortened version of your template:
<xsl:template match="*" mode="diff_cols">
<fo:table-cell background-color="red">
<xsl:if test="position() mod 2 = 0">
<xsl:attribute name="background-color">blue</xsl:attribute>
</xsl:if>
<fo:block><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:template>
Regards,
Joerg
----- Original Message -----
From: "yan bai" <bytj@yahoo.com>
To: <xsl-list@lists.mulberrytech.com>
Sent: Thursday, January 24, 2002 12:14 AM
Subject: Re: [xsl] how to increment a variable in a for-each loop
> I have a code snippet as below:
> <xsl:template match="*" mode="diff_cols">
> <xsl:for-each select=".">
> <xsl:if test="position() mod 2 = 1">
> <fo:table-cell background-color="red">
> <fo:block><xsl:value-of select="."/></fo:block>
> </fo:table-cell>
> </xsl:if>
> <xsl:if test="position() mod 2 = 0">
> <fo:table-cell background-color="blue">
> <fo:block><xsl:value-of
> select="."/></fo:block>
> </fo:table-cell>
> </xsl:if>
> </xsl:for-each>
> </xsl:template>
>
> Unfortunately, it did not work. The background color
> in all columns is red.
>
> Can you help to debug?
>
> Yan
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list