Subject: RE: [xsl] Return position in for-each From: "Michael Kay" <mhk@xxxxxxxxx> Date: Fri, 23 Jul 2004 00:15:25 +0100 |
In general, move the "test" condition into a predicate in the select expression of the xsl:for-each. Change <xsl:for-each select="x"> <xsl:if test="y"> to <xsl:for-each select="x[y]"> In your example it's not quite so easy because you are defining a variable before the <xsl:if>, and the variable itself accesses the position. I don't understand your logic well enough at this time of night to suggest a rewrite. Incidentally, <xsl:variable name="x"><xsl:value-of select="y"/></xsl:variable> should in 99.99% of cases be rewritten <xsl:variable name="x" select="y"/> Michael Kay > -----Original Message----- > From: Karl J. Stubsjoen [mailto:karl@xxxxxxxxxxxxxxxxxxxx] > Sent: 22 July 2004 23:46 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Return position in for-each > > Hello, > > A disadvantage to an xsl:for-each is that the position() > increases by one > for each step. so, if an xsl:if test validates the current > step and says > "Yes apply templates for this step", "don't apply templates > for this step", > and you are interested in a positiion which reflects the > total number of > "YES" steps... well you have a problem. Take into consideration this > for-each rule: > > <xsl:for-each select="Entry"> > <xsl:variable name="element_name"><xsl:value-of > select="concat('competitor_name_',position())"/></xsl:variable> > <xsl:if > test="string($BROWSER_VARS//ELEMENT[@name=$element_name]/.)"> > <tr> > > <!-- [[[ HERE WE ADD A COLUMN THAT HAS AN INCREMENTING > NUMBER ]]] --> > <td><xsl:value-of select="concat(position(),'.')"/></td> > > <!-- [[[ HERE WE GET THE REST OF THE COLUMN DATA ]]] --> > <xsl:apply-templates select="Element" mode="PRINTER_FRIENDLY"> > <xsl:with-param name="position"><xsl:value-of > select="position()"/></xsl:with-param> > </xsl:apply-templates> > </tr> > </xsl:if> > </xsl:for-each> > > > Is there a work-around, or another way to accomplish an > incrementing number > for the TD? > > Karl
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Return position in for-each, Karl J. Stubsjoen | Thread | RE: [xsl] Return position in for-ea, Karl J. Stubsjoen |
RE: [xsl] Infinite Loop when param , Karl J. Stubsjoen | Date | RE: [xsl] Return position in for-ea, Karl J. Stubsjoen |
Month |