[xquery-talk] Context item dependant function in a step of a
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.
> -----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
> 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.
> > 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,
> talk at x-query.com
More information about the talk