我在commant提示符下运行此命令:
java -cp "saxon9he.jar" net.sf.saxon.Query -s:"xml document" -qs:'//Customer[@CustomerID="HUNGC"]//Country' -o:"results.xml"
我得到了这个: 源文档被忽略 - 查询不访问上下文项
有谁知道可能是什么问题以及如何解决? 谢谢!
答案 0 :(得分:1)
警告意味着它所说的内容:您提供了一个源文档,但您的XPath表达式没有使用它。
如果您想了解XPath表达式不使用源文档的原因,请向我们展示您的XPath表达式。给出此警告的示例是-qs:“2 + 2”,其中表达式的结果为4,无论源文档中是否有任何内容。
(在你的评论之后)
我通常在表达式和单引号中使用双引号。它可能取决于你使用的shell,但我怀疑表达式已被传递给Saxon周围的单引号和所有,这意味着整个表达式只是一个字符串文字。 - Michael Kay 7小时前
答案 1 :(得分:0)
您收到此错误消息,因为您希望在可能不存在的文档(XPath expression
)上执行无效的XPath表达式(xml document
)。
用输入文档和要执行的查询替换字符串xml document
和XPath expression
。
<强>
-qs:querystring
强>允许以内联方式指定查询(如果它包含空格,则需要在表达式周围引用以保持命令行处理器满意)。例如,当前目录中的
java net.sf.saxon.Query -qs:doc('a.xml')//p[1] selects elements within the file a.xml
。<强>
-s:filename-or-URI
强>从指定文件中获取输入。如果指定了
-u
选项,或者名称以“file:
”或“http:
”开头,则假定该名称是URI而不是文件名。该文件必须包含XML文档。文档的文档节点作为上下文项可供查询使用。可以将源文档指定为“-
”以从标准输入获取源。
答案 2 :(得分:0)
Here是一个如何使用Saxon作为XPath命令行工具的示例:
saxon () { java -cp saxon9he.jar net.sf.saxon.Query "$@" ; }
xpath () { saxon '!method=text' -s:- -qs:"$1" ; }
这是svn:
输出的示例svn info --xml | xpath '/info/entry/repository/root/text()'