Re: Re: Variable references in path expressions

Latest working draft of XQuery Section 3.2, does not allow atomic values to
be returned in the path except the last step.
That is expression like   (1, 2, 3)/(1, 2, 3) is not allowed.
I've asked this question, and the reason given by the WG is that someone
found 10/5 giving 5 is useless.

However, as in the previous discussion, expr like
    (<a1/>, <a2/>, <a3/>)/(<b1/>, <b2/>, <b3/>) giving (<b1/>, <b2/>, <b3/>)
which is valid. But there's really no major difference between 10/5  vs.
<a10>/<a5>.

Why should we allow latter but not the former?

Henry

----- Original Message ----- 
From: "Michael Kay" <mhk@mhk.me.uk>
To: <www-ql@w3.org>
Sent: Tuesday, April 26, 2005 10:05 PM
Subject: FW: Re: Variable references in path expressions


>
> (Resending from the appropriate email address)
>
> Someone has corrected me off-list on part of my answer:
>
> >
> > However, will
> >
> >     let
> >       $a := (<a1/>, <a2/>, <a3/>),
> >       $b := (<b1/>, <b2/>, <b3/>)
> >     return
> >       $a/$b
> >
> > return
> >
> >     (<b1/>, <b2/>, <b3/>, <b1/>, <b2/>, <b3/>, <b1/>, <b2/>, <b3/>)
> >
> > because the expression bound to $b constructs unique elements
> > each time it is evaluated?
>
> I answered incorrectly: Yes.
>
> I was thinking of a different case, $a/b() where the function b() returns
> three elements. In that case, b() must be evaluated three times, and
returns
> three different elements each time. With a variable reference, however,
the
> variable must be evaluated exactly once, and the same value is used each
> time. So the result is
> (<b1/>, <b2/>, <b3/>) or some permutation thereof (since these elements
are
> not in the same tree, their relative document order is unpredictable).
>
> Michael Kay
> http://www.saxonica.com/
>
>
>
>

Received on Tuesday, 26 April 2005 15:34:23 UTC