我想我可以制作一些 XSL 样式表,然后将其用作带有参数选项的模板,以在命令行上使用 Saxon XSLT 处理器评估 XPath 表达式,例如:
<xsl:template match="/">
<xsl:copy-of select="saxon:evaluate($xpath-param)"/>
</xsl:template>
另一种可能性是使用他们的 Java API:http://www.saxonica.com/documentation/xpath-api/intro.xml 但我不知道 Java
有没有办法让 Saxon 从命令行评估 XPath 表达式?
如果可能的话,Shell 脚本也足够了
更新:
浏览 Saxon documentation ,我发现了
XPathExample
示例。不幸的是我不能使用它 最佳答案
您可以从命令行运行 Saxon (XQuery)。您可以通过使用 -q
指向具有 XPath/XQuery 的文件来完成此操作,也可以使用 -qs
直接传递查询字符串。
下面是使用 -qs
处理简单 XPath 的示例:
input.xml
<a>
<b id="x"/>
<b id="z"/>
<b id="x"/>
</a>
Saxon 命令行 (我使用 Saxon9-HE 进行测试)
java -cp "saxon9he.jar" net.sf.saxon.Query -s:"input.xml" -qs:"/a/b[@id='x']" -o:"results.xml"
结果.xml
<b id="x"/><b id="x"/>
注意:我可以通过将
-qs
更改为类似这样的内容来使我的输出格式良好: -qs:"<results>{/a/b[@id='x']}</results>"
。有关更多命令行选项,请查看此处:http://www.saxonica.com/html/documentation/using-xquery/commandline.html
关于xml - 如何在 Java 中使用没有编码的 Saxon XPath 处理器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8997709/