首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中使用没有编码的Saxon XPath处理器

如何在Java中使用没有编码的Saxon XPath处理器
EN

Stack Overflow用户
提问于 2012-01-25 12:11:40
回答 3查看 7.3K关注 0票数 3

我想我可以制作一些XSL样式表,然后将其用作带参数选项的模板,在命令行上使用Saxon XSLT处理器计算XPath表达式,如下所示:

代码语言:javascript
运行
复制
<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。不幸的是,我不能使用它

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-25 16:25:34

您可以从命令行运行Saxon (XQuery)。为此,可以使用-q指向包含XPath/XQuery的文件,也可以使用-qs直接传递查询字符串。

下面是一个使用-qs处理简单XPath的示例:

input.xml

代码语言:javascript
运行
复制
<a>
  <b id="x"/>
  <b id="z"/>
  <b id="x"/>
</a>

Saxon命令行(我使用Saxon9-HE进行测试)

代码语言:javascript
运行
复制
java -cp "saxon9he.jar" net.sf.saxon.Query -s:"input.xml" -qs:"/a/b[@id='x']" -o:"results.xml"

results.xml

代码语言:javascript
运行
复制
<b id="x"/><b id="x"/>

注意:通过将-qs更改为-qs:"<results>{/a/b[@id='x']}</results>"__,我可以使输出格式良好。

有关更多命令行选项,请查看此处:http://www.saxonica.com/html/documentation/using-xquery/commandline.html

票数 7
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2012-03-24 02:05:51

另一种选择是在oXygen等工具中使用XPath。它的XPath Builder View是用于构建和测试XPath表达式的一个非常方便的接口。该工具有一个Linux version,它内置了对Saxon和其他处理器(Xerces、LIBXML、XSV、MSXML4.0、MSXML .NET和SQC.)的支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8997709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档