RE: [xsl] (How) can I randomly access the result of a <xsl:for-each select="...?

Subject: RE: [xsl] (How) can I randomly access the result of a <xsl:for-each select="...?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 14 Oct 2005 18:31:24 +0100
First, you put the result in a variable:

<xsl:variable name="x">
  <xsl:for-each select=...
    <something/>
  </xsl:for-each>
</xsl:variable>

In XSLT 1.0, to address into this variable, you need the xx:node-set()
extension (in your case, xalan:nodeset()).

In 2.0, you can use it directly.

<xsl:variable name="evens" as="xs:integer*">
  <xsl:for-each select="1 to 100">
    <xsl:sequence select=". * 2"/>
  </xsl:for-each>
</xsl:variable>

<xsl:value-of select="$evens[5]"/>

Though for this example it's easier to use an XPath "for" expression.

Michael Kay
http://www.saxonica.com/

 

> -----Original Message-----
> From: Ferdinand Soethe [mailto:xsl-list@xxxxxxxxxx] 
> Sent: 14 October 2005 18:18
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] (How) can I randomly access the result of a 
> <xsl:for-each select="...?
> 
> Perhaps I have searched for the wrong key words ...
> 
> Is it possible to randomly access each member of the set of nodes
> created by <xsl:for-each select="... I know I can find the position of
> the currently processed node with position() and use the first() and
> last() to access the respective nodes. But can I also access each
> individual member with something like xyz[memberNo]?
> 
> I figure that there should be a 'root' element that contains the set
> but I haven't found a way to address that.
> 
> Btw: I'm using xalan-J
> 
> Thanks a lot.
> 
> --
> Ferdinand Soethe

Current Thread