[xquery-talk] XQuery - Grammar? Implementations?
Yoshi Okamoto
yoshiokamoto at yahoo.com
Fri Jan 30 19:29:08 PST 2009
Dear XQuery subscribers,
I am sometimes fighting to understand all the details of the XQuery grammar. If you have some time, I would be delighted if you could have a look at the following example: I have defined a function with a single string argument:
[0] declare function local:f($a as xs:string) { $a };
If I pass on an element as follows:
[1] let $a := <X>Y</X> return local:f($a)
it is accepted by most XQuery implementations which I tried (I am testing with Saxon, BaseX, MonetDB, Zorba, Qizx, Kawa and MXQuery). However, when I cast the element before passing it on:
[2] let $a as xs:string := <X>Y</X> return local:f($a)
some implementations (also Saxon, which I regard as reference implementation) return [XPTY0004] as error. A third version with an explicit cast:
[3] let $a := xs:string(<X>Y</X>) return local:f($a)
is finally accepted by all implementations.
If possible, can someone tell me what the difference are between the versions, especially [1] and [2]? I tried to find the answer in the specification, but I was not successful.
Thank you very much for your attention and help!
Best Regards,
Yoshi Okamoto
More information about the talk
mailing list