[xsl] selecting a node inside <xsl:for-each> fails?

Subject: [xsl] selecting a node inside <xsl:for-each> fails?
From: "Rene Ladan" <r.c.ladan@xxxxxxxxx>
Date: Tue, 6 Jun 2006 11:55:50 +0200
Hi,

I'm trying to select a node which has attribute c set to '2', but the
selection $root//*[@c=.] (where . is an iterator over the sequence
('1', '2', '3'))  returns nothing instead of node <b>.
Changing this into $root//*[@c=string(.)] does not work either.

The 'explicit' expression and the two expressions ('outside' and
'direct') after the <xsl:for-each> do work.

Any ideas?

I'm using Saxon B-8.7-Java.

Regards.
Rene

-- test-select.xml --

<a>
 <b c="2" e="f">
   <g/>
 </b>
</a>

-- test-select.xsl --
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xs="http://www.w3.org/2001/XMLSchema";>
 <xsl:variable name="root" as="node()" select="/"/>
 <xsl:template match="*">
   <xsl:variable name="nums" as="xs:string*" select="'1','2','3'"/>
   <xsl:for-each select="$nums">
     value=<xsl:value-of select="."/>
     <xsl:if test=".='2'">found</xsl:if>
     <!--both [@c=.] and [@c='{.}']  and [@c=string(.)] return nothing-->
     node=<xsl:copy-of select="$root//*[@c=.]"/>
     explicit=<xsl:copy-of select="$root//*[@c='2']"/><!--ok-->
   </xsl:for-each>
   outside=<xsl:copy-of select="$root//*[@c='2']"/><!--ok-->
   direct=<xsl:copy-of select="//*[@c='2']"/><!--ok-->
 </xsl:template>
</xsl:stylesheet>

--
GPG fingerprint = E738 5471 D185 7013 0EE0  4FC8 3C1D 6F83 12E1 84F6
(subkeys.pgp.net)

"It won't fit on the line."
		-- me, 2001

Current Thread