我試圖在撒克遜運行下面的代碼命名空間在地圖撒克遜-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(for $ mov in doc(「movies.xml」)/ movies/movie return map:entry($ mov/@ id,avg($ mov/ratings/child :: node())))'Still說錯誤 –
你能否請開一個新的問題? –