Subject: Re: 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
|