Subject: Re: [xsl] xpath-default-namespace with a variable From: Martin Honnen <Martin.Honnen@xxxxxx> Date: Mon, 19 Sep 2011 15:15:02 +0200 |
I am using XSLT 2 via AltovaXML.
I have a need to look up "key" terms in an external glossary document. The external document has a default namespace at the root level. The code works fine like this:
<xsl:param name="GLOSSARY" select="'./working_files/glossary.xml'"/>
<xsl:key name="definitions" match="glossentry" use="term/@key" xpath-default-namespace="http://www.abcdef.com/hij"/>
<xsl:variable name="glossaryDocument" select="document($GLOSSARY)"/>
...
<xsl:variable name="definition"> <xsl:for-each select="$glossaryDocument"> <xsl:value-of select="key('definitions', $normalizedText)/definition" xpath-default-namespace=" http://www.abcdef.com/hij"/> </xsl:for-each> </xsl:variable>
After testing I decided to replace the "hardcoded" namespace with a "global" variable. I was surprised to find that this did not work.
<xsl:variable name="glossNS" select="'http://www.abcdef.com/hij'" as="xs:anyURL"/>
<xsl:key name="definitions" match="glossentry" use="term/@key" xpath-default-namespace="{$glossNS}"/>
...
<xsl:value-of select="key('definitions', $normalizedText)/definition" xpath-default-namespace="{$glossNS}"/>
I've check the spec and I can't find anything to make me believe this shouldn't work but it's entirely possible I may have missed some subtlety.
Can anyone tell me if this a bug or expected behaviour?
<xsl:stylesheet id? = id extension-element-prefixes? = tokens exclude-result-prefixes? = tokens version = number xpath-default-namespace? = uri
Martin Honnen --- MVP Data Platform Development http://msmvps.com/blogs/martin_honnen/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xpath-default-namespace with , Murray McDonald | Thread | Re: [xsl] xpath-default-namespace w, Martin Honnen |
[xsl] xpath-default-namespace with , Murray McDonald | Date | Re: [xsl] xpath-default-namespace w, Martin Honnen |
Month |