when using an abbreviated syntax for map:get, the following expression is evaluated by Saxon correctly:

let $m := map{'x' := 5, 'y' := 'hi'} return $m('x') eq 5

but this one is rejected as syntactically incorrect:

map{'x' := 5, 'y' := 'hi'}('x') eq 5

I have to write an additional pair of parentheses:

(map{'x' := 5, 'y' := 'hi'})('x') eq 5


Is this the desired behavior?


It surprised me a little, since both of the following expressions are accepted:

function($x) {$x + 1}(2)

(function($x) {$x + 1})(2)



Jakub Malư


Ph. D. candidate

XML Research Group

Department of Software Engineering

Faculty of Mathematics and Physics
Charles University in Prague, Czech Republic