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: Sat, 15 Oct 2005 10:21:36 +0100
> Still XSLT 1.0:
> 
> If I do
> 
>  <xsl:variable name="fragment" select="//ul"/>
> 
> (not using a for-each) everything works fine and I can cast the
> variable to a nodeset and access it as documented.

You don't need to cast it to a node-set, it already is a node-set.
> 
> However if I try
> 
> <xsl:variable name="fragment">
>     <xsl:for-each select="//ul">
>         <xsl:copy-of select="."/>
>     </xsl:for-each>
> </xsl:variable>
> 
> 
> I only get a count() of 1 when transforming this test-document:

In this case the variable is a result-tree-fragment, not a node-set. In most
1.0 products you can convert an RTF to a node-set using the vendor's
xx:node-set() extension function. The resulting node set contains a single
node, the root of a tree (it's like "/" in a source document). So count()
will give 1. To count the ul elements, you need to do
count(xx:node-set($fragment/*))

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

Current Thread