[
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 |
-----------------------
|