Оба моих примеров вернуть ключ со значением увеличивается на 1
.
Чем больше «императив» способом было бы получить список всех ключей, петля над ними и посмотреть значения для каждого из них:
declare namespace map="http://www.w3.org/2005/xpath-functions/map";
let $x := map{'a':1, 'b':2}
for $key in map:keys($x)
return $key || $x($key) + 1
Более элегантный, функциональный подход должен был бы использовать map:for-each
на «карте» (возможно, анонимный) функции на карте (это термин в функциональном программировании при применении функции для каждого значения списка или последовательности):
declare namespace map="http://www.w3.org/2005/xpath-functions/map";
let $x := map{'a':1, 'b':2}
return map:for-each($x, function($key, $value) { $key || $value + 1 })
в отличие от большинства других функций XQuery и функций, документации BaseX (которая обычно ограничивает к содержимому, специфичному для BaseX) предлагает довольно легко прочитать и понять ссылку и руководство по XQuery map feature.
(BTW, это функциональность, указанная как часть еще неизданного XQuery 3.1, а не 3.0, предположительно, вы используете один из двигателей, опережающий спецификацию). –