[xquery-talk] Context item dependant function in a step of a pathexpression

Michael Kay mike at saxonica.com
Sat Aug 18 17:24:48 PDT 2007


The string() function is called once for each item in $a/B. There are no
items in $a/B, so string() is called zero times, so it doesn't matter what
its arguments are. Similarly, because $a/B/string() is an empty sequence,
the string-length() function is called zero times, so it doesn't matter what
its arguments are either.

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

> -----Original Message-----
> From: talk-bounces at x-query.com 
> [mailto:talk-bounces at x-query.com] On Behalf Of Pierrick Brihaye
> Sent: 17 August 2007 21:46
> To: talk at xquery.com
> Subject: [xquery-talk] Context item dependant function in a 
> step of a pathexpression
> 
> Hi,
> 
> With Saxon 8.9J, this XQuery :
> 
> let $a := <A/>
> for $b in $a/B/string()
> return string-length($b)
> 
> ... returns an empty sequence (0, if wrapped by count()).
> 
>  From http://www.w3.org/TR/xpath-functions/#func-string :
> 
> > If no argument is supplied, the context item (.) is used as the 
> > default argument. The behavior of the function if the argument is 
> > omitted is exactly the same as if the context item had been 
> passed as 
> > the argument.
> 
> then
> 
> > If $arg is the empty sequence, the zero-length string is returned.
> 
> I would thus have expected 0 as the result (1, if wrapped by 
> count()) since I understand the context item as being 
> "empty"... which is a concept which is not very conformant 
> with the specs I conceed.
> 
> But, maybe, the processing of a context item dependant 
> function when there is no context item (which is not the same 
> as being an "empty" 
> context item and would thus be more conformant with the specs 
> I guess) has to be skipped ; that would explain Saxon's 
> behaviour (and make much sense BTW)...
> 
> In such a case, how would such a behaviour cope with the 
> specs ? I couldn't find anything that would answer to this question.
> 
> Thank you for your answers,
> 
> Cheers,
> 
> p.b.
> 
> 
> 
> 
> 
> 
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk



More information about the talk mailing list