xsl-list
[Top] [All Lists]

Re: [xsl] XPath matching elements with or without prefix by inherited namespace

2008-01-12 08:24:35
Michael Kay wrote:
How do I reliably match the "elem" element in both of the below
documents:

<?xml version="1.0" encoding="UTF-8?>
<p:example xmlns:p="something">
  <elem>value</elem>
</p:example>

<?xml version="1.0" encoding="UTF-8?>
<p:example xmlns:p="something">
  <p:elem>value</p:elem>
</p:example>

I believe that these are effectively identical as the prefix on elem in the latter case is redundant and same the namespace definition is inherited from p:example.

Wrong. In the first case elem is in no namespace, in the second case elem is
in the "something" namespace. So any code that wants to match has to test
for two different element names.

Or use local-name:

<xsl:apply-templates select="*[local-name() = 'elem']" />

or:

<xsl:template match="*[local-name() = 'elem']">
   .....
</

However, this use is discouraged as it may easily introduce hard to find bugs. If you use an SA processor, you effectively remove the "Aware"ness from the match using this approach.

Cheers,
-- Abel

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