Re: What does 'reverse document order' mean?

Subject: Re: What does 'reverse document order' mean?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 15 Nov 2000 09:25:01 GMT
> 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()&lt;last()"> 

which is like 

(preceding-sibling::elt)[position() &lt; 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


Current Thread