Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maps XQuery 3.0和萨克森地图_Maps_Xquery_Saxon - Fatal编程技术网

Maps XQuery 3.0和萨克森地图

Maps XQuery 3.0和萨克森地图,maps,xquery,saxon,Maps,Xquery,Saxon,我想在Saxon中试验地图功能(http://www.saxonica.com/documentation/expressions/xpath30maps.xml),但我无法通过查询编译。也许我遗漏了一些参数,或者我使用了一个错误的名称空间,但我就是找不到正确的答案。这是我的查询代码: xquery version "3.0"; (: i have also tried http://www.w3.org/2005/xpath-functions/map, no difference :) i

我想在Saxon中试验地图功能(http://www.saxonica.com/documentation/expressions/xpath30maps.xml),但我无法通过查询编译。也许我遗漏了一些参数,或者我使用了一个错误的名称空间,但我就是找不到正确的答案。这是我的查询代码:

xquery version "3.0";

(: i have also tried http://www.w3.org/2005/xpath-functions/map, no difference :)
import module namespace map = "http://ns.saxonica.com/map";

map:get(map { 1 := 'aaa'}, 1)
从命令行调用:

"c:\Program Files\Saxonica\SaxonEE9.4N\bin\Query.exe" -s:play.xml -q:play2.xq" -qversion:3.0
命令以错误结尾,无法找到命名空间“”的模块http://ns.saxonica.com/map"
当我省略模块名称空间映射声明时,错误是没有声明前缀映射,所以我假定它一定是

如果这有帮助的话不知道,但是BaseX XQuery处理器还提供了Michael Kay的map方案的实施(仍由W3最终确定):

如果这有帮助的话不知道,但是BaseX XQuery处理器还提供了Michael Kay的map方案的实施(仍由W3最终确定):

您应该使用
声明命名空间
而不是
导入模块命名空间
来访问内置函数。据我所知,模块导入仅适用于用户提供的模块

文件
map.xq

declare namespace map="http://www.w3.org/2005/xpath-functions/map";
map:get(map { 1 := 'aaa'}, 1)
很好用:

> "C:\Program Files\Saxonica\SaxonEE9.4N\bin\Query.exe" -qversion:3.0 map.xq
<?xml version="1.0" encoding="UTF-8"?>aaa
“C:\Program Files\Saxonica\SaxonEE9.4N\bin\Query.exe”-qversion:3.0 map.xq
aaa

我也在Saxon EE 9.4.0.2J(Java版本)上试用过,效果也一样。

您应该使用
声明命名空间
,而不是
导入模块命名空间
来访问内置函数。据我所知,模块导入仅适用于用户提供的模块

文件
map.xq

declare namespace map="http://www.w3.org/2005/xpath-functions/map";
map:get(map { 1 := 'aaa'}, 1)
很好用:

> "C:\Program Files\Saxonica\SaxonEE9.4N\bin\Query.exe" -qversion:3.0 map.xq
<?xml version="1.0" encoding="UTF-8"?>aaa
“C:\Program Files\Saxonica\SaxonEE9.4N\bin\Query.exe”-qversion:3.0 map.xq
aaa

我也在Saxon EE 9.4.0.2J(Java版本)上试用过,效果也一样。

Michael Kay刚刚发布了一篇新的博客文章,详细介绍了Saxon地图的实现:

Michael Kay刚刚发布了一篇新的博客文章,详细介绍了Saxon地图的实现:

我发现映射功能仅在Saxon 9.4中实现。您是否验证了您正在使用的Saxon版本确实是9.4?如果您确实有Saxon 9.4,那么请查看以下代码示例:。虽然它是XSLT,但您可以轻松地将其转换为等效的XQuery代码。您是否验证了您正在使用的Saxon版本确实是9.4?如果您确实有Saxon 9.4,那么请查看以下代码示例:。尽管它是XSLT,但您可以轻松地将其转换为等效的XQuery代码。