Subject: Re: [xsl] How to query a temporary document in a variable From: Jean-Pierre Bergamin <jpbergamin@xxxxxxxxx> Date: Mon, 10 Sep 2012 15:39:08 +0200 |
I found the answer here: http://www.dpawson.co.uk/xsl/rev2/namespace2.html I cite: "if an xpath-default-namespace is in force, then there is no way to select elements in no namespace. But you can reset it, for any region of the stylesheet, by putting xpath-default-namespace="" on any XSLT element." So in my case this will work: <xsl:value-of xpath-default-namespace="" select="$propertyMap/entry[@key='foo']" /> Best regards, James 2012/9/10 Jean-Pierre Bergamin <jpbergamin@xxxxxxxxx>: > 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to query a temporary , Jean-Pierre Bergamin | Thread | Re: [xsl] How to query a temporary , Andrew Welch |
Re: [xsl] How to query a temporary , Jean-Pierre Bergamin | Date | Re: [xsl] How to query a temporary , Andrew Welch |
Month |