[xsl] XPath references using exsl:node-set() stop working when default name-space defined.

Subject: [xsl] XPath references using exsl:node-set() stop working when default name-space defined.
From: Matt Poff <matt.poff@xxxxxxxxxxxxxxx>
Date: Tue, 28 Aug 2007 14:01:03 +1200
Previously working references to nodes stored inside a variable and referenced using the exsl:node-set() function are no longer working properly since I defined a default name-space for my document.

I'm using XSLT 1.0 and the syntax is as below:

  <xsl:template name="document" match="document">
       ...

<xsl:variable name="args">
<local-pub-id><xsl:value-of select="./@pub-id" /></local-pub-id>
<local-doc-type><xsl:value-of select="./@type" /></local-doc-type>
<element-num><xsl:value-of select="./@element" /></element-num>
</xsl:variable>


       <xsl:value-of select="exsl:node-set($args)/local-pub-id" />
       ...
  </xsl:template>


It works fine when I take out the default name-space declaration but I need to keep that in. I *can* reference the nodes in the variable using the form:


<xsl:value-of select="exsl:node-set($args)[1]" />

But this is also less than desirable. Do I need to put namespace declarations in the variable node or similar? Using the libxml2 processor.


Hope you can help,


Matt

Current Thread