Subject: RE: (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/
|