Subject: Re: 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/
|