我想我可以制作一些 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/

10-11 14:46