Subject: Re: Clarification on node-set definition From: Mike Brown <mike@xxxxxxxx> Date: Sun, 26 Nov 2000 20:29:18 -0700 (MST) |
Gavin Bong wrote: > The XPath spec defines a node-set as:- > > - an unordered collection of nodes without duplicates. > > "Unordered" here basically means it hasn't been sorted on any > properties of each node in the set. Is it correct to say that it is > returned in document/sourcetree order ? No, the order in which nodes are returned, if they are in fact provided sequentially, is up to the implementation. The set itself does not have an inherent order. Once you have a node-set, you can then process the nodes in a particular order, document order or reverse document order being the 2 most common ones. This order is imposed upon the set at the time that it is processed, though, not before. Example: The XML <foo a1="one">bar</foo> becomes the node tree root |___element 'foo' | \__attribute 'a1' w/value 'one' | |___text 'bar' If I use an XPath expression to select a node-set consisting of all nodes: //node() The set is { root, element 'foo', attribute 'a1', text 'bar' }. Because I am writing the set linearly, I have to put the nodes in some order, so I happened to choose document order. It would have been just as accurate to say the set is { root, element 'foo', text 'bar', attribute 'a1' } because the set doesn't have an order. It just contains those specific, nonrepeating nodes. Now let's say the current node is the text node and I select its ancestors: ancestor::* This will give me a node-set consisting of { root, element 'foo' }. There is some significance to the fact that it is the ancestor axis. It means that if I add a predicate to this expression I will get a context with the root node at position 2 and the element 'foo' at position 1: reverse document order. Likewise if I do a <xsl:for-each select="ancestor::*" I will process the element node before the root. It doesn't mean that the set itself is in reverse document order, though.. confused yet? > e.g. if my xml doc was generated such that there is some sort order based on > position in the sourcetree - then my app would consider it sorted. I think you're probably creating an abstraction that will sufficiently explain what's going on, 99% of the time. It's not accurate, though. - Mike ____________________________________________________________________ Mike J. Brown, software engineer at My XML/XSL resources: webb.net in Denver, Colorado, USA http://www.skew.org/xml/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Clarification on node-set definitio, Gavin Bong | Thread | RE: Clarification on node-set defin, Kay Michael |
Re: xmlinst problems, Mike Brown | Date | RE: xmlinst problems, madhu |
Month |