Hello, Sorry, I didn't know that the JRE Xalan and the official Xalan are different things. Looking at the source code, the JRE version indeed appears outdated. The test data I provided originally reproduces the bug in the JRE Xalan. For some reason their version ignores the "plmxml" prefix and allows to call "key" on a non-existent key name. I downloaded the official Xalan 2.7.2 and updated the XSLT file. Now it is as follows:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings" xmlns:exslt="http://exslt.org/common"> <xsl:key name="keyname" match="Foo" use="@id"/> <xsl:template match="Root"> <xsl:variable name="created"> <Created/> </xsl:variable> <xsl:apply-templates select="exslt:node-set($created)"> <xsl:with-param name="prm" select="@attr"/> </xsl:apply-templates> </xsl:template> <xsl:template match="Created"> <xsl:param name="prm"/> <Output> <Display> <xsl:value-of select="$prm"/> </Display> <Usage> <xsl:value-of select="key('keyname',$prm)"/> </Usage> <Display> <xsl:value-of select="$prm"/> </Display> </Output> </xsl:template> </xsl:stylesheet> In the official Xalan 2.7.2 it works even worse than in JRE: both "Display" elements are empty. Looks like the parameter is not being passed to the template. This might be connected to the fact that "created" is not a node-set but a result-tree-fragment. But anyway, how should I pass the parameter in this case? In Saxon the example works fine: both "Display" elements contain the correct value "foo". JRE Xalan: <Output xmlns:exslt="http://exslt.org/common" xmlns:str="http://exslt.org/strings"> <Display>foo</Display> <Usage/> <Display/> </Output> Xalan 2.7.2: <Output xmlns:exslt="http://exslt.org/common" xmlns:str="http://exslt.org/strings"> <Display/> <Usage/> <Display/> </Output> Saxon HE 11: <Output xmlns:exslt="http://exslt.org/common" xmlns:str="http://exslt.org/strings"> <Display>foo</Display> <Usage/> <Display>foo</Display> </Output> Sergey Bederov Senior Developer Cortona3D www.cortona3D.com<http://www.cortona3d.com/>