RE: [xsl] Manipulating values from an xml file using xsl key

Subject: RE: [xsl] Manipulating values from an xml file using xsl key
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 7 Sep 2006 17:03:17 +0100
> 	       <xsl:for-each select="document('xmlFile.xml')">
> 	          <xsl:variable name="vXmlName"     
> select="key('fileIndex',.)"/>
> 	          <xsl:variable name="vXmlPathName" select="name()"/>
> 	         
> 	          <a class="hyperlink" 
> href="javascript:selectXml('{$vXmlName}','{$vXmlPathName}');">ccc</a>
> 	       </xsl:for-each>
> 
> where am I going wrong?
> 

In the second argument of key() you are using expressions that are relative
to the context node: "." and "name()". But you have changed the context node
in the xsl:for-each. Use variables defined outside the for-each.

In XSLT 2.0 you can do

key('fileIndex',., document('xmlFile.xml'))

which removes this usability problem.

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

Current Thread