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 terminology

[ Lists Home | Date Index | Thread Index ]

Michael Kay wrote:
> # >
> # > examples :
> # > /foo/bar[2]/oof[5]/@rab
> # > /foo/bar[2]/oof[5]/text()[2]
> # >
> # > is there a name or should i invent one ?
> # 
> # I'm pretty sure that this is what Ted Nelson called a "Tumbler" in the
> # Xanadu terminology. -Tim
> 
> It is not, of course, the simplest XPath expression to reach a given node.
> There are shorter expressions such as
> 
> /*[1]/*[3]/*[4]
> 
> Or
> 
> (//*)[87]
> 
> Both the above also have the great advantage that they have no dependency on
> namespace prefixes.
> 
> Michael Kay
> 

I won't retain the last form because it doesn't cross the tree from 
child to child

For debugging purpose, I'm looking for a path that allow to localize at 
a glance the pointed node by simply loading the xml file on a browser, 
for example.

Of course, with flat structures, it would be hard to do so with *[846]

I would also prefer the form where the elements are named instead of using *
However the * usage could be reserved when a prefix is redefined in the 
document. To preserve simplicity, * must be used if a prefix is 
redefined; thus, when a prefix is used, it is bound to the same URI that 
those declared in the document. It is better, I think, to use the same 
prefixes used in the document than create new ones if they are redefined 
because the path produced would work only with explicit prefix mappings 
other than those that appear in the document.

I got it ! Thanks :)

But what about the name ?

PS :
if my explanations wasn't so clear, i was talking about something like 
this :

<a:foo xmlns:a="a">
   <a:bar xmlns:a="A">
</a:foo>

the path /a:foo/a1:bar is not good, because a1 is not present in the 
document; /*/* must be used instead

/a:foo/* and /*/a:bar can't be used because another declaration could 
appear somewhere else in the document, in another branch
-- 
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------




 

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

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