This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: What does 'reverse document order' mean?
- To: xsl-list at mulberrytech dot com
- Subject: Re: What does 'reverse document order' mean?
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Wed, 15 Nov 2000 09:25:01 GMT
- References: <taTNWCA43iE6Ew0g@light.demon.co.uk>
- Reply-To: xsl-list at mulberrytech dot com
> Am I guilty of muddled thinking, or inadequate study of the spec? Or is
> there some subtlety that I am missing?
guilty of uuencoding an example that was small enough to inline:-)
> since preceding-sibling:: selects siblings in
> 'reverse document order', the first node in the set
Note that node sets are called sets (rather than lists) on purpose, not
by accident. They are intrinsically unordered.
[1] in a step selects the first node in the direction specified by the
axis used in the step, but anywhere else it refers to document order.
so
preceding-sibling::elt[1]
selects the immediately preceding elt sibling,
but
(preceding-sibling::elt)[1]
selects the first elt sibling in document order.
You did
<xsl:variable name="sibling-preceders" select="preceding-sibling::elt"/>
<xsl:for-each select="$sibling-preceders">
<xsl:value-of select="."/> <xsl:if test="position()<last()">
which is like
(preceding-sibling::elt)[position() < last()]
so position() and last() refer to document order here.
To see _why_ it has to be that way (other than because that was the will
of the w3c)
consider
<xsl:variable name="sibling-preceders"
select="preceding-sibling::elt|../*[@id]"/>
now the variable contains all the preceding elts (which were "collected
backwards" and all sibling elements with an id attribute (which were
collected forwards) note these two sets overlap but | is set union,
an elt with an id is selected by both clauses, but only appears in the
node set once. So a constructed node set is justa set of nodes, each
individual node doesn't "remember" what axis was used to select it.
So if you caome later to apply a position() construct to the node set,
at that point the set is considered in document order.
David
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet delivered
through the MessageLabs Virus Control Centre. For further information visit
http://www.star.net.uk/stats.asp
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list