xsl-list
[Top] [All Lists]

Re: [xsl] simulating for with foreach

2006-07-05 04:29:51
<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



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--