2015-11-30 4 views
2

Я пытаюсь создать пару хеш-карты/ключевого значения, как структура в xquery. Я знаю, карта, как структура существует в XQuery: http://www.w3.org/2005/xpath-functions/map/Создание карты в XQuery

и даже нашел документацию в Saxon: http://www.saxonica.com/html/documentation/functions/map/

Однако я и не знаю, как создать карту или использовать его.

Вот мой код до сих пор:

declare namespace map="http://www.w3.org/2005/xpath-functions/map"; 
let $a := map:map() 

Но я получаю сообщение об ошибке:

Cannot find a matching 1-argument function named 
    {http://www.w3.org/2005/xpath-functions/map}map() 

Так как именно я использую карты в XQuery?

ответ

2

Синтаксис представлен в XSLT 3.0 и XQuery 3.1 и прошел через несколько итераций по мере развития рабочих чертежей. Текущий синтаксис (поддерживается в Saxon 9.7) позволяет

map{} 

для пустой карты

map{'a':1, 'b':2} 

для отображения с известным числом записей (и ключи и значения могут быть произвольными выражениями), и

map:merge(for $x in //emp return map{$x!name : [email protected]}) 

для карты со статически неизвестным количеством записей.

+0

Это похоже на правильный путь, но теперь я получаю следующее сообщение об ошибке: 'Чтобы использовать синтаксис XPath 3.1, вы должны настроить парсер XPath для его обработки'. Как это сделать –

+0

Зависит от интерфейса, который вы используете: командной строки? API s9api? XQJ? –

+0

Я использую Командную строку –