Re: [xsl] simulating for with foreach

Subject: Re: [xsl] simulating for with foreach
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 5 Jul 2006 12:29:37 +0100
> > <xsl:for-each select="node[position() mod 4 = 1]">
> > This is exactly what I want, but although this for-each iterates over
> > 1, 5, 9, ... elements, when I print position() inside this loop, it
> > prints 1, 2, 3, 4, ...
> > 
> > How can I figutre out which child element is now selected, 1? 5? ...

Well as I said in my reply, normally you _want_ position() to go in that
sequence so you can number the output, check for the last item using
position()=last() etc.

So either you keep position() that way and just calculate the old
position by inverting the formula, (position()-1)*4+1 in this case
or you do as you originally did and select them all and use xsl:if just
to process teh opnes you want.

<xsl:for-each select="nodes">
<xsl:if test="position() mod 4 = 1">
 ...

then inside the xsl:if position() will be 1,5,...

really I'm not sure what the problem is that you are having, since it
seems like the final preferred answer is the code you started with?

David

Current Thread