当尝试从bash运行查询字符串时,Saxon-HE 9.7:“没有可用的基本URI”错误

时间:2016-12-26 05:52:22

标签: xquery saxon

根据Saxon的documentation

  

java net.sf.saxon.Query -qs:doc('a.xml')// p 1选择内部元素   当前目录中的文件a.xml。

我正试图从bash脚本中做到这一点:

java net.sf.saxon.Query -qs:doc"('myFile.xml')"/rootElt/@myAtt

但是,我收到以下错误:XTDE1162: Relative URI passed to document() function (myFile.xml); but no base URI is available

根据文档,这不应该发生:

  

静态基URI(在调用doc()函数时使用)是   当前目录。

我尝试过使用绝对URI,但令人惊讶的是,我仍然得到完全相同的错误消息。

我可以使用一些帮助吗?

1 个答案:

答案 0 :(得分:2)

解决。传递查询字符串时,没有基本URI(文件系统中没有包含查询的资源),因此传递一个resolve-uri()作为第二个参数:

-qs:"doc(resolve-uri('myFile.xml', 'file:$PWD/'))/rootElt/@myAtt/xs:string(.)"

在我看来,Saxonica应该使用这个细节来更新命令行选项-qs的文档(可能需要一段时间才能自行解决这个问题)。