[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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:xs="http://www.w3.org/2001/XMLSchema" version="2.0"

	<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:template match="/">
		<xsl:value-of xmlns="" select="$propertyMap/entry[@key='foo']" />

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,

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