[xquery-talk] Error when using predicate after arrow operator

John Snelson John.Snelson at marklogic.com
Thu Apr 13 12:44:01 PDT 2017


The equivalence holds for how it functionally behaves, not for what 
grammar the parser allows. You need parentheses:

("1.2.3" => tokenize("\."))[. < "3"]


John

On 13/04/2017 20:09, Joe Wicentowski wrote:
> Hi all,
>
> As I understand the arrow operator
> (https://www.w3.org/TR/xquery-31/#id-arrow-operator), the following
> query:
>
>    "1.2.3" => tokenize("\.")
>
> is equivalent to:
>
>     tokenize("1.2.3", "\.")
>
> If this is so, then can anyone shed light on why appending a predicate
> to the former would raise an error but not so for the latter?  In
> Saxon, eXist, and BaseX, the following expression:
>
>    "1.2.3" => tokenize("\.")[. < "3"]
>
> raises an error like:
>
>    XPST0003: Unexpected token "[" beyond end of query
>
> whereas the pre-XQuery 3.1 approach:
>
>     tokenize("1.2.3", "\.")[. < "3"]
>
> returns the results I'd expect:
>
>    ("1", "2")
>
> Thanks,
> Joe
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk


-- 
John Snelson, Principal Engineer              http://twitter.com/jpcs
MarkLogic Corporation                         http://www.marklogic.com



More information about the talk mailing list