[xquery-talk] range implementations -- which is correct?

Michael Kay mhk at mhk.me.uk
Wed Jun 22 00:27:33 PDT 2005


Saxon is correct against the most recent working draft: the effective
boolean value of a sequence of several integers is now an error. Before the
most recent draft, the EBV of any sequence containing more than one item was
true; so Galax was correct. There was a prehistory in which "[1 to 2]" was
recognized as some kind of custom syntax to extract a subsequence - at that
stage (1 to 2) wasn't a general-purpose expression that could be composed
with other expressions - so MarkLogic is reflecting that history. However,
this had disappeared from the language before the May 2003 draft.

Now try the correct syntax in each of the products:

( <a/>, <b/>, <c/> )[ position() = 1 to 2 ]

Michael Kay
http://www.saxonica.com/

> 
> What's the result of invoking
> 
>        ( <a/>, <b/>, <c/> )[ 1 to 2 ]
> 
> ----------------------------
> 
> MarkLogic 3.0 (May 2003 wd) returns
> 
>      <a/>
>      <b/>
> 
> Galax 0.5.0 (Oct 2004 wd) returns
> 
>      <a/>
>      <b/>
>      <c/>
> 
> Saxon 8.4 (Feb 2005 wd) returns
> 
>    "Error: Effective boolean value is not defined for a sequence
>     of two or more items starting with an atomic value
> 
> The situation is made somewhat more confusing because each 
> implementation is
> implemented against a different version of the wd. More 
> precisely there are
> two questions:
> 
> (1) Which of the above results are correct (or incorrect) for 
> the version of
> the working draft against which they were implemented, and
> (2) Which are correct (or incorrect) against the most recent 
> working draft
> of April 2005?
> 
> Howard
> 
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
> 




More information about the talk mailing list