[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: // expanding to descendant-or-self::node()

Subject: Re: // expanding to descendant-or-self::node()
From: Evan Lenz <evan@xxxxxxxxxxxx>
Date: Tue, 16 Sep 2008 16:57:40 -0700
Re:  // expanding to descendant-or-self::node()
Evan Lenz wrote:
Evan Lenz wrote:
Andrew Welch wrote:
currently // expands to /descendant-or-self::node()/ which is not owhat
one would first think of, but it works consistently without depending on
the following step. And that expansion is at the level of expression
terms not syntax fragments.

one might expect // to expand to descendant:: but descendant:: itself
isn't really an expression, just part of the syntax for an axis step and
that causes problems..

//foo could have been defined to be /descendant::foo
but you can not define
//@foo to be descendant::@foo as that's a syntax error, wheras
/descendant-or-self::node()/@foo is all foo attributes in the document,
which is the desired meaning.

similarly any other axis, including child::
//child::foo can't expand to /descendant::child::foo

//@foo and //child:: would both be errors - //@* would need to be
//*/@foo and //child:: doesn't make sense anyway
Not quite. If // was short for /descendant::, then //*/@foo would still not be equivalent. That's because, in XPath as actually designed, /descendant::*/@foo isn't the same as //@*. The former excepts attributes of the context node, whereas //@* also includes attributes of the context node.

So, instead, you'd have to write (@* | ./descendant::*/@*). In that case, the actual definition of // is handy.


Oops, quick correction. When starting at the document node, there wouldn't be any attributes. So what I meant to say was that .//descendant::*/@* is not the same as .//@*.
Aargh. I should just give up. :-) Against my better judgment, here's one last try at communicating what I meant to say:

./descendant::*/@* is not the same thing as .//@*


Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.