Subject: RE: simulating for with foreach
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 5 Jul 2006 10:27:51 +0100
|
You're not making your requirements very clear.
If you have the sequence of positions as input (in XSLT 1.0 this would have
to be in a node-set, e.g.
<xsl:variable name="positions">
<p>1</p>
<p>5</p>
<p>6</p>
</xsl:variable>
then you can process the nodes at those positions using
<xsl:variable name="nodes" select="nodes"/>
<xsl:for-each select="$positions/p">
<xsl:variable name="pos" select="number(.)"/>
<xsl:apply-templates select="$nodes/node[$pos]"/>
</xsl:for-each>
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Mohsen Saboorian [mailto:mohsens@xxxxxxxxx]
> Sent: 05 July 2006 10:19
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: simulating for with foreach
>
> Hi,
> I would like to know if it is possible to iterate over a set
> of elements (say node in this example) in a special way (not
> every element, but 1, 3, 5, ... or any other sequence). (XSLT
> 1) <nodes>
> <node />
> <node />
> <node />
> <node />
> </nodes>
> I know that one way is to <xsl:iterate> and use <xsl:if> and
> position(), but there are situations in which you can not use
> position() because it doesn't give you the exact node (for
> example when you have #text elements randomly beside <node>.
>
> Thanks.
|