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

Re: Re: Re: limiting preceding axis by ancestor

Subject: Re: Re: Re: limiting preceding axis by ancestor
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Wed, 8 May 2002 23:58:49 -0700 (PDT)
forward axis
Joerg Heinicke <joerg dot heinicke at gmx dot de> wrote: 

> 
> I thought that this is true, *because* it's a reverse axis. I used
> [1] 
> because I wanted the nearest ancestor. The question for me is "Why is
> 
> the returned nodeset ancestor::foo upside down, so back in document 
> order again?"

Why should there be a question about this? Every node-set *is* (only)
in document order.

The (only) document order of any node-set has nothing to do with the
way a location step is evaluated by an XPath engine. It seems to me
that your confusion stems from mixing these two.

>From the XPath specs (http://www.w3.org/TR/xpath#predicates):

"An axis is either a forward axis or a reverse axis. An axis that only
ever contains the context node or nodes that are after the context node
in document order is a forward axis. An axis that only ever contains
the context node or nodes that are before the context node in document
order is a reverse axis. Thus, the ancestor, ancestor-or-self,
preceding, and preceding-sibling axes are reverse axes; all other axes
are forward axes. Since the self axis always contains at most one node,
it makes no difference whether it is a forward or reverse axis. The
proximity position of a member of a node-set with respect to an axis is
defined to be the position of the node in the node-set ordered in
document order if the axis is a forward axis and ordered in reverse
document order if the axis is a reverse axis. The first position is 1.

A predicate filters a node-set with respect to an axis to produce a new
node-set. For each node in the node-set to be filtered, the
PredicateExpr is evaluated with that node as the context node, with the
number of nodes in the node-set as the context size, and with the
proximity position of the node in the node-set with respect to the axis
as the context position; "


So it's the *proximity position* that is different (only) within a
predicate used in conjunction with a location step, not the ordering of
a node-set.


On the other side, the XSLT 1.0 specs clearly defines
(http://www.w3.org/TR/xslt#misc-func):

"Function: string generate-id(node-set?) 

The generate-id function returns a string that uniquely identifies the
node in the argument node-set that is first in document order."

And in general, the definitions of all XPath and XSLT functions that
require a single node as argument repeat the above definition -- they
operate on "the node in the argument node-set that is first in document
order".

Cheers,
Dimitre Novatchev.

....

> Dimitre Novatchev schrieb:
> > Joerg Heinicke <joerg dot heinicke at gmx dot de> wrote:
> > 
> > 
> >>The [1] is implicit and not needed, because generate-id() on a 
> >>nodeset returns the id of the first element in this nodeset. I
> wrote 
> >>it for maybe better understanding.
> >>
> >><xsl:if test=". = preceding::bar[generate-id(ancestor::foo[1]) = 
> >>generate-id(current()/ancestor::foo[1])]">
> > 
> > 
> > This is one case where the established belief that 
> > 
> > generate-id(someXPathExpression) =
> generate-id(someXPathExpression[1])
> > 
> > is *not* true.
> > 
> > This is clearly not so, because "ancestor" is a reverse axis.
> > 
> > generate-id(ancestor::foo[1]) 
> > 
> > will be applied on the nearest ancesstor (the last in document
> order)
> > 
> > while
> > 
> > generate-id(ancestor::foo)
> > 
> > will be applied on the outermost ancestor (the first in document
> > order).
> 
> 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Shopping - Mother's Day is May 12th!
> http://shopping.yahoo.com


__________________________________________________
Do You Yahoo!?
Yahoo! Shopping - Mother's Day is May 12th!
http://shopping.yahoo.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

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.
Email
First Name
Last Name
Company
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.