Я пытаюсь запустить следующий код в саксонскомпространства имен для отображения в Saxon-EE
map:merge(for $mov in doc("movies.xml")/movies/movie return map:entry($mov/@id, avg($mov/ratings/child::node())))
Однако я получаю ошибку следующим образом:
XPST0081: Namespace prefix 'map' has not been declared
Я считаю, Мне нужно задать пространство имен в начале запроса.
Так что я искал немного и нашел ответ here и изменил мой код следующим образом:
import module namespace map="http://www.w3.org/2005/xpath-functions/map";
map:merge(for $mov in doc("movies.xml")/movies/movie return map:entry($mov/@id, avg($mov/ratings/child::node())))
я получаю другую ошибку: XQST0059: Cannot locate module for namespace http://www.w3.org/2005/xpath-functions/map
Что пространства имен я должен использовать?
UPDATE
Я попробовал новый код
declare namespace map = "http://www.w3.org/2005/xpath-functions/map";
map:merge(for $mov in doc("movies.xml")/movies/movie return map:entry($mov/@id, avg($mov/ratings/child::node())))
и использовали следующую команду
java -cp saxon9ee.jar net.sf.saxon.Query -qversion:3.1 -o:out mapq.xq
я получаю новую ошибку следующим образом
Error on line 2 at column 28 of file:mapq.xq
Cannot serialize a map using the xml method
Query failed with dynamic error: Cannot serialize a map using the xml method
Новый [адаптивный] (https://www.w3.org/TR/xslt-xquery-serialization-31/# адаптивный вывод) позволит вам выводить карты. Вы можете добавить следующие строки в пролог вашего запроса: declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization"; объявить выход опции: метод «адаптивный»; - Вероятно, было бы разумнее обсудить это в отдельной проблеме StackOverflow. –
Дорогой Доктор Я использую следующий код 'declare namespace map =" http://www.w3.org/2005/xpath-functions/map "; declare namespace output = "w3.org/2010/xslt-xquery-serialization"; объявить выход опции: метод «адаптивный»; map: merge (для $ mov in doc ("movies.xml")/movies/movie return map: entry ($ mov/@ id, avg ($ mov/ratings/child :: node()))) 'Still говорит ошибка –
Не могли бы вы открыть новую тему? –