Re: [xml-dev] "self" axis for an attribute context node

From
David Carlisle <>
To
Date
2007-03-12T10:33:01Z
ID
<>
Thread
Re: [xml-dev] "self" axis for an attribute context node
> I thought that the following XPath steps are equivanent:
> 
> something[name()='lalala']
> something[self::lalala]
> 
> However, it isn't so.

No, over on xsl-list we regularly have to steer people towards using
self:: (which is namespace-aware) rather than testing name() (which is
not) so even for elemnets (when they may both work in some cases) self::
is preferable.

For attributes (and other node types) self:: doesn't work at all as the
principle node type is element, so @*[self::type] means select all
attributes that are element nodes with name type, which is empty.
This is unfortunate as it means in XSLT1 to say "all attributes
except xlink:href"  you are more or less led to use
@*[not(name()='xlink:href')]
which forces you to fix a prefix, or to use local-name() and
namespace-uri and test the namepsace URI explictly)
In Xpath2 you can say 
@* except @link:href
which is a bit more readable, and safe for other prefixes.
 

David