Re: [xsl] How to query a temporary document in a variable

Subject: Re: [xsl] How to query a temporary document in a variable
From: Jean-Pierre Bergamin <jpbergamin@xxxxxxxxx>
Date: Mon, 10 Sep 2012 15:04:01 +0200
Hi Martin

I indeed use a default namespace by declaring it with xpath-default-namespace.
An complete example stylesheet looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:er="http://www.junisphere.net/eRanger";
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xs="http://www.w3.org/2001/XMLSchema"; version="2.0"
	xpath-default-namespace="http://graphml.graphdrawing.org/xmlns";>

	<xsl:output encoding="iso-8859-1" method="text" />

	<xsl:variable name="propertyMap">
		<entry key="foo">foo value</entry>
		<entry key="bar">bar value</entry>
	</xsl:variable>

	<xsl:template match="/">
		<xsl:value-of xmlns="" select="$propertyMap/entry[@key='foo']" />
	</xsl:template>
</xsl:stylesheet>

If xpath-default-namespace is deleted, "foo value" is output as
expected. How can I get the expected result with
xpath-default-namespace set?


Best regards,
James



2012/9/10 Martin Honnen <Martin.Honnen@xxxxxx>:
> Jean-Pierre Bergamin wrote:
>>
>> Hello xslt-users
>>
>> I'm trying to use a temporary document as a lookup table with saxon
>> 9.4 using xslt 2.0. The solution is also proposed in this
>> stackoverflow answer:
>> http://stackoverflow.com/questions/3626118/xslt-creating-a-map-in-xslt
>>
>> But I'm not getting any results when I query the variable that holds
>> the temporary document:
>>
>> <xsl:variable name="propertyMap">
>>         <entry key="foo">foo value</entry>
>>         <entry key="bar">bar value</entry>
>> </xsl:variable>
>>
>> <xsl:template match="/">
>>         <xsl:value-of select="$propertyMap/entry[position() = 1]"/>
>>         <xsl:value-of select="$propertyMap/entry[@key='foo']"/>
>>         <xsl:value-of select="$propertyMap[1]"/>
>> </xsl:template>
>>
>> The first two value-of expressions do not output anything, whereas the
>> third one outputs the whole propertyMap.
>>
>> Any idea what I'm missing here?
>
>
>
> Perhaps the stylesheet root element defines some default namespace (e.g.
>   <xsl:stylesheet
>      xmlns="http://www.w3.org/1999/xhtml"; ...>
> ) which gets into the way for the temporary elements you want to create so
> use e.g.
>   <xsl:variable xmlns="" name="propertyMap">...</xsl:variable>
>
> That's a guess of course, show us more context I guessed wrong.
>
>
> --
>
>         Martin Honnen --- MVP Data Platform Development
>         http://msmvps.com/blogs/martin_honnen/

Current Thread