我想我可以制作一些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脚本也足够了
更新:
浏览撒克逊示例,我发现了XPathExample
documentation。不幸的是,我不能使用它
发布于 2012-01-25 16:25:34
您可以从命令行运行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"
results.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
发布于 2012-01-25 17:19:43
正如@DanielHaley所说,从命令行使用XQuery是更好的选择。从命令行提供XPath没有多大用处,因为XPath不提供控制输出格式的方法。XPath是XQuery的一个子集,因此如果愿意,您可以使用XQuery接口来计算XPath表达式。
请注意,开源Saxon的当前版本是Saxon-HE 9.4.0.2。您可以通过命令行上的-t选项找出您使用的是哪个版本。听起来您可能已经找到了与您的Linux发行版捆绑在一起的旧版本(Saxon-B),而@prunge向您指出了一个更老的版本(saxon6.5),它只支持XSLT1.0和XPath 1.0。
更新:截至2019年1月,当前版本为9.9.0.2
发布于 2012-03-24 02:05:51
另一种选择是在oXygen等工具中使用XPath。它的XPath Builder View是用于构建和测试XPath表达式的一个非常方便的接口。该工具有一个Linux version,它内置了对Saxon和其他处理器(Xerces、LIBXML、XSV、MSXML4.0、MSXML .NET和SQC.)的支持。
https://stackoverflow.com/questions/8997709
复制相似问题