[xquery-talk] Is this a valid query?

Adam Retter adam.retter at googlemail.com
Sun Jan 10 14:03:41 PST 2016


Thanks Mike, that is exactly the kinda detail I needed, and the bug
report has many good comments.

Personally I do like the idea and syntax from an XQuery authoring
perspective of being able to do:

X => map:for-each(A, ?) meaning map:for-each(A, X)

However, I am not precious about it. So whichever way it is decided,
as long as the spec defines, I will be both happy and informed ;-)

Thanks again. Adam.

On 10 January 2016 at 21:51, Michael Kay <mike at saxonica.com> wrote:
> There's an open bug against the spec on the use of ?-placeholders in conjunction with the arrow operator.
>
> https://www.w3.org/Bugs/Public/show_bug.cgi?id=29346
>
> The grammar allows it, but the semantics have not been specified.
>
> My own view is that
>
> X => map:for-each(A, ?)
>
> should mean
>
> map:for-each(X, A, ?)
>
> which is an error because there are too many arguments.
>
> But we need to await the WG decision on this bug.
>
> Michael Kay
> Saxonica
>
>
>> On 10 Jan 2016, at 19:30, Adam Retter <adam.retter at googlemail.com> wrote:
>>
>> Given this valid XQuery (1):
>>
>> map:for-each(
>>    map {
>>        "a" : "1",
>>        "b" : "2",
>>        "c" : "3"
>>    },
>>    ?
>> )(function($k, $v) {
>>    "$k=" || $k
>> })
>>
>> I am wondering, if rewriting it to the following form results in a
>> valid query with the same execution result (2):
>>
>> function($k, $v) {
>>    "$k=" || $k
>> } =>
>>    map:for-each(
>>        map {
>>            "a" : "1",
>>            "b" : "2",
>>            "c" : "3"
>>        },
>>        ?
>>    )()
>>
>> In my mind it does, however I can't find a current implementation
>> (eXist, BaseX, Saxon-EE) which will execute it, I guess this is due to
>> evaluation order of the expressions (although I get parser errors).
>>
>> If I add some brackets to (2), to add precedence to the evaluation
>> order so that I have (3):
>>
>> function($k, $v) {
>>    "$k=" || $k
>> } =>
>>    (
>>    map:for-each(
>>        map {
>>            "a" : "1",
>>            "b" : "2",
>>            "c" : "3"
>>        },
>>        ?
>>    ))()
>>
>>
>> Then it does seem to execute on BaseX and Saxon, but it feels like I
>> shouldn't need to add the brackets and that (2) should work! Can
>> someone add some comment/insight for me as to whether the XQuery spec
>> requires these brackets to make the parse and execution correct?
>> Somehow, I can't see it at the moment...
>>
>>
>> Thanks Adam.
>>
>> --
>> Adam Retter
>>
>> skype: adam.retter
>> tweet: adamretter
>> http://www.adamretter.org.uk
>> _______________________________________________
>> talk at x-query.com
>> http://x-query.com/mailman/listinfo/talk
>
>



-- 
Adam Retter

skype: adam.retter
tweet: adamretter
http://www.adamretter.org.uk


More information about the talk mailing list