OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] [XPath] is it legal ?

[ Lists Home | Date Index | Thread Index ]

> as everything is a node, one can match a node like this :
>      node()

I assume we're talking about XPath path expressions here, not XSLT match
patterns: so it might be better to use the verb "select" rather than
"match".

Yes, node() is short for child::node(), it selects any node on the child
axis.

> which works well in the axis that are walking through the tree
> what about other axis ?
>      @node()
>      namespace::node()
> which would give the same as (respectively) :
>      @*
>      namespace::*

Correct.

> and above all what about :
>      @comment()
>      @text()
>      @p-i(target)
>      namespace::comment()
>      namespace::text()
>      namespace::p-i(target)
> which are all empty if they are legal
> 
> but are they legal ?

Yes, they are legal in XPath 1.0. They all select an empty set of nodes. In
XPath 2.0, with static typing, they have a static type of empty-sequence(),
which is a type error that can be reported at compile time if the processor
chooses to do static type checking.

> 
> here are the last ones :
>      /@*
>      /namespace::*
> 
Again these are legal, and select nothing. The same applies to, for example,
@*/@*

> 
> 
> Will you be hurted if someone (like me) was writting 
> something like this :
>      $foo/@bar/@oof
> 
If your data conforms to the XPath data model, then this will select
nothing. If you want to design a language similar to XPath that works on a
different data model, for example one in which attributes can have
attributes, then you are free to do so (but please don't call it XPath).

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






 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS