- From: "Karr, David" <david.karr@w...>
- To: "Michael Kay" <mike@s...>,<xml-dev@l...>
- Date: Wed, 22 Oct 2008 13:37:33 -0700
Title: Can Xpath 1.0 print "position()" results?
Ok, here's a contrived example:
<foolist>
<foo>alpha</foo>
<foo>beta</foo>
<foo>gamma</foo>
<foo>delta</foo>
</foolist>
Write an xpath
expression that returns the position in "foolist" of the "foo" element with the
content "gamma".
The following XPath 1.0 expression returns the value of
position():
position()
It doesn't print it of course, XPath doesn't know
anything about printers, that part is up to you.
But this isn't very useful. The value of position() is
the "context position" in the dynamic evaluation context of the XPath
expression, which is whatever the caller sets it up to be. In fact, most XPath
APIs don't give you any way to initialize the context position to anything but
1, and I'm not sure what use it would be if they allowed anything else. (An
exception is when XPath is embedded in XSLT, in which case the context
position tells you something about what's happening on the XSLT side of the
boundary.)
I suspect you don't want to know the context position at
all. I suspect you want to know the position of some node in a tree relative
to its neighbours, for example the number of preceding siblings it has. If you
explain what you really want, then I'm sure we can tell you how to get
it.
Michael Kay
http://www.saxonica.com/
Not that I really need to know this, but
someone asked this on StackOverflow, and now I gotta know. :)
Is it possible for a plain Xpath 1.0
query to return a "position()" value? I know it can be used in
predicates, but that simply results in the found element at that
position. I know I can return the "text()" result from an Xpath, but
is it not possible to return the "position()" value? If that's the
case, I imagine there are other functions that might seem logical to get
values from that won't work like
this.
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
|