RE: [xsl] Usage of key inside a for loop of a RTF does not work properly

Subject: RE: [xsl] Usage of key inside a for loop of a RTF does not work properly
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 5 Jan 2005 09:45:02 -0000
The key() function selects nodes in the document that contains the context
node. If the context node is in an RTF, it will select nodes in the RTF. If
you want to select nodes in a different document, first make that document
current. You can do this using xsl:for-each in XSLT 1.0, or in 2.0 by using
$doc/key('k', val).

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

> -----Original Message-----
> From: Ranjan K. Baisak [mailto:ranjanbaisak@xxxxxxxxx] 
> Sent: 05 January 2005 07:12
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Usage of key inside a for loop of a RTF does 
> not work properly
> 
> <xsl:for-each
> select="exslt:node-set($leverreference)/*">
> 		<xsl:variable name="referid" select="@levelref"/>
> 		
> 		<xsl:for-each
> select="key('professionlevelkey','$referid')">
> 			<xsl:value-of select="@name"/>
> 		</xsl:for-each>
> 	</xsl:for-each>
> The output of above does not produce any output.
> The definition of professionlevelkey key is <xsl:key 
> name="professionlevelkey" match="//professionlevel"
> use="@id"/>
> 
> But if I use
> <xsl:for-each
> select="exslt:node-set($leverreference)/*">
> 		<xsl:variable name="referid" select="@levelref"/>
> 		
> 		<xsl:for-each select="//professionlevel">
> <xsl:if test="$referid=@id">
> 			<xsl:value-of select="@name"/>
> </xsl:if>
> 		</xsl:for-each>
> 	</xsl:for-each>
> It gives correct  output.
> Weird....not sure whatz wrong in usage of key inside
> RTF..
> 
> regards,
> Ranjan
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 

Current Thread