Re: [xsl] XPATH for attribute with different namespace from element

Subject: Re: [xsl] XPATH for attribute with different namespace from element
From: Joerg Pietschmann <joerg.pietschmann@xxxxxx>
Date: Mon, 04 Feb 2002 09:42:38 +0100
Edward.Middleton@xxxxxxxxxxx wrote:
> I am trying to make a template match for an rss about attribute
> but I can't seem to get anything to work.
...
> This is my rss file
> <?xml version="1.0" encoding="UTF-8"?>
> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
> 	xmlns="http://purl.org/rss/1.0";>
        ^^^^^^^^^^^^
Here is the problem: you are putting the "channel" element in
a namespace. This means...

> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"
> 	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
> 	xmlns="http://purl.org/rss/1.0";>
...
> 	<xsl:template match="rdf:RDF/channel/@rdf:about">
                                     ^^^^
...in order to match it, is has to be in the namespace too. Declaring
the default namespace as you did above only affects literal result
elements in the style sheet, not the XPaths araund in  matches and
selects. You have to use an explicit namespace prefix:

  <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
    xmlns:rss="http://purl.org/rss/1.0";>
...
    <xsl:template match="rdf:RDF/rss:channel/@rdf:about">

That's becoming a FAQ.

HTH
J.Pietschmann

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread