Re: process order (still...)

Subject: Re: process order (still...)
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 13 Apr 2000 18:48:57 +0100 (BST)
> I don't want to put words in David's mouth

why not? They may have been clearer:-)

> So when process order is mentioned in the XSLT spec, it means the order in
> which nodes are added to the result tree? That's what I was assuming

There are two possible meanings for 
   The order in which nodes are added to the result tree
and I don't know which you mean.

One is the `spatial order' ie which node becomes the first child, which
the second, etc. This ordering is (I think) totally determined in
XSLT by the document order in the input and the templates used.
Different processors only produce different results because the input
nodes may be ordered differently (attributes, as much discussed, but
also nodes from different document() calls are in system dependent
order) but once the input is determined then the output for a given
stylesheet is specified.

The ordering that I was trying to stress was different and
implementation dependent is the `chronological' order in which nodes
are added to the result tree. That is when the actual templates
get fired. This may happen in any order, or all at the same time.
For a pure XSL stylesheet the end result does not depend on this
`processing order' as there are no side effects (that's the point about
having no side effects) but if you use extensions then they typically do
(unfortunately) and so then you may get very different results on
different systems.

There is one xsl instruction that creates a side effect: xsl:message
writing to the terminal lets you see the `chronological' order of
template execution, and whether variables are evaluated at the
point of definition or the point of use and several other things that
may and do differ between systems. But note this doesn't affect
the result tree.


David


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


Current Thread