|
Subject: Re: [xsl] Working with QNames in strings in XSLT 2.0 From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Tue, 9 Sep 2008 09:02:36 +0100 |
> I'm trying to work with the XSLT 2.0 functions for manipulating QNames, but
> am at a loss for how to check QName strings in XSLT. I am using Saxon-B
> 9.1.0.
>
> I will have input documents of the form:
>
> customer1.xml:
> <foo xmlns:a="urn:item-namespace-1.0" mode="a:blip" value="ping"/>
>
> customer2.xml:
> <foo xmlns:b="urn:item-namespace-1.0" mode="b:blip" value="pong"/>
>
> I want to write a template which will match the <foo> elements with @mode
> attributes set to the QName of {'urn:item-namespace-1.0','blip'}, however
> using a NS prefix taken from the document. I can't figure out how to do
> this. My best guess (which doesn't work) is:
>
> <xsl:template match="foo[resolve-QName(@mode,.) =
> QName('urn:item-namespace-1.0','blip')]">
> <bar value="{./@value}">found element foo with right mode</bar>
> </xsl:template>
match="*[namespace-uri-from-QName(resolve-QName(@mode, .)) eq
'urn:item-namespace-1.0']"
will compare the namespaces regardless of prefix
alternatively, get all of the in-scope-prefixes(), loop through them
and get the namespace-uri-for-prefix() to find the one bound to that
namespace, then just check the value of @mode (eg name() eq
'b:blip')... but I'm not sure you need to worry about the actual
prefix in this case?
cheers
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Working with QNames in string, Ian Stokes-Rees | Thread | RE: [xsl] Working with QNames in st, Michael Kay |
| Re: [xsl] xslt function, Mukul Gandhi | Date | Re: [xsl] Namespace de-duplication , David Carlisle |
| Month |