xsl-list
[Top] [All Lists]

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

2012-09-10 08:04:22
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(_dot_)Honnen(_at_)gmx(_dot_)de>:
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/


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--