xsl-list
[Top] [All Lists]

Re: [xsl] Working with QNames in strings in XSLT 2.0

2008-09-09 04:03:00
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/

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>