RE: [xsl] matching namespace declaration

Subject: RE: [xsl] matching namespace declaration
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 28 Sep 2004 14:49:13 +0100
Firstly, namespace declarations don't appear as attributes in the XPath data
model, so you can't find them on the attribute axis (which is where you are
looking when you write @x).

Secondly, there's no point doing this in a predicate, because your match
pattern match="meta:htmldescription" won't match unless the namespace is
correct.

If you want you could add a template rule:

<xsl:template match="*[local-name() = 'htmldescription']" priority="0.9">
  <xsl:message>The htmldescription element is in the wrong
namespace</xsl:message>
</xsl:template>

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Jean-Roch Meurisse [mailto:jrm@xxxxxxxxxxxxxxxx] 
> Sent: 28 September 2004 14:37
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] matching namespace declaration 
> 
> Hi everybody,
> 
> We have a bunch of documents with the following structure
> 
> <meta:htmldescription xmlns:meta="http://www.cetic.be/retroweb";>
>          <meta:element>....</meta:element>
>          ...
>          <meta:element>...</meta:element>
> </meta:htmldescription>
> 
> We want to transform these documents using xslt and would 
> like to check at 
> the same time that they have the correct namespace declaration.
> We tried with the following template but it doesn't work
> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
> version="1.0" xmlns:meta="http://www.cetic.be/retroweb";>
>                    <xsl:output method="xml" indent="yes"/>
>          <xsl:template match="meta:htmldescription[@xmlns:meta = 
> 'http://www.cetic.be/retroweb'">
>                  <root>
>                          <xsl:apply-templates/>
>                  </root>
>          </xsl:template>
> ...
> </xsl:stylesheet>
> 
> can somebody help us
> 
> Thanks in advance

Current Thread