RE: creation order vs. document order

?

It is not possible for child nodes to be in anything other than document
order.

The point is that nodes have a deterministic document order only when they
are placed in the same tree. Nodes from different trees have a
non-deterministic implementation-dependent document order.  A FLWOR
statement whose return clause is a constructor always returns a sequence of
(unrelated) trees.

for $i in (1, 2, 3)
return <x id="{$i}"/>

returns a sequence of three (unrelated) x elements.  It always returns this
sequence in the same order:
<x id="1"/><x id="2"/><x id="3"/>
by the definition of FLWOR.

However, the relative document order of any two of these nodes is
implementation-defined.

let $nodes := (for $i in (1, 2, 3) return <x id="{$i}"/>)
return $nodes[1] << $nodes[2]

may return true or false, depending on the implementation.


-----Original Message-----
From: www-ql-request@w3.org [mailto:www-ql-request@w3.org] On Behalf Of Jan
Hidders
Sent: Tuesday, September 23, 2003 10:09 AM
To: www-ql@w3.org
Subject: Re: creation order vs. document order



Hello Michael,

Michael Brundage wrote:
> 
> Completely separately from this, every node in the data model is ordered
> relative to every other one.  Your query happens to be creating a sequence
> of c elements, each in its own fragment.  Consider the two queries below:
> 
> let $tree1 := (<x><y/><y/></x>)/y
> return $tree1[1] << $tree1[2]
> 
> always returns true.  The two y child elements of x are siblings of one
> another, and the first one always comes before the second in document
order.

That's actually true regardless of whether the children of the x element 
are in document order or not because the let clause uses a path 
expression which returns always a result in document order.

-- 
    Jan Hidders

  .---------------------------------------------------------------------.
  | Post-doctoral researcher               e-mail: jan.hidders@ua.ac.be |
  | Dept. Math. & Computer Science         tel: (+32) 3 218 08 73       |
  | University of Antwerp                  fax: (+32) 3 218 07 77       |
  | Middelheimlaan 1, BE-2020 Antwerpen, BELGIUM     room: G 3.21       |
  `---------------------------------------------------------------------'

Received on Tuesday, 23 September 2003 15:12:05 UTC