I originally posted this question in the xalan-j-users mailinglist
thinking it was a bug in Xalan but after getting the same result with
the saxon xslt processor I'm not too sure...
I'm having problems when using the exslt:node-set() function as well.
I'm not sure if it's related or if I've just missed something basic but
I'll explain it anyway:
*** here is my xml document:
<root>
<foo>
<bar id="1"/>
<bar id="2"/>
<bar id="3"/>
</foo>
</root>
*** and here is my xslt script:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exslt="http://exslt.org/common">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:message>correct: <xsl:for-each
select="/root/foo/bar">found! </xsl:for-each></xsl:message>
<xsl:variable name="result-tree-fragment">
<xsl:for-each select="/root/foo/bar">
<bar id="{@id}"/>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="/root/foo">
<xsl:message>still correct: <xsl:for-each
select="/root/foo/bar">found! </xsl:for-each></xsl:message>
</xsl:for-each>
<xsl:for-each select="exslt:node-set($result-tree-fragment)/bar">
<xsl:message>broken: <xsl:for-each
select="/root/foo/bar">found!</xsl:for-each></xsl:message>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
when parsed by xalan the output looks like this:
file:/home/test.xsl; Line #10; Column #-1; correct: found! found! found!
file:/home/test.xsl; Line #19; Column #-1; still correct: found! found!
found!
file:/home/test.xsl; Line #23; Column #-1; broken:
file:/home/test.xsl; Line #23; Column #-1; broken:
file:/home/test.xsl; Line #23; Column #-1; broken:
I expected it to look like this:
file:/home/test.xsl; Line #10; Column #-1; correct: found! found! found!
file:/home/test.xsl; Line #19; Column #-1; still correct: found! found!
found!
file:/home/test.xsl; Line #23; Column #-1; broken: found! found! found!
file:/home/test.xsl; Line #23; Column #-1; broken: found! found! found!
file:/home/test.xsl; Line #23; Column #-1; broken: found! found! found!
can anybody help?