Subject: Re: simulating for with foreach
From: "Mohsen Saboorian" <mohsens@xxxxxxxxx>
Date: Wed, 5 Jul 2006 15:22:06 +0330
|
Thank you very much. That fully solved my problem, but just for my
curiosity, why position() (and also last()) do return sequential
numbers instead of real positions. I mean position() returns 1, 2, 3
instead of 1, 4, 9...
Thanks.
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
|