首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的命令行xquery

简单的命令行xquery
EN

Stack Overflow用户
提问于 2012-12-18 00:32:39
回答 4查看 5K关注 0票数 3

我正在尝试从linux shell中找到一个简单的cli命令来执行xquery。我想要的是避免我需要安装的外部依赖(使用fedora18)。

我已经找到了可以通过yum安装的saxon和xqilla。如果没有其他东西,我可以使用它们,但它们不在基本系统中。我希望找到的是类似于用于执行xslt处理(com.sun.org.apache.xalan.internal.xsltc.cmdline.Transform).的java内部类的东西。

我的另一个想法是使用XSLT将文档转换为所需的xquery结果,但不能使用一行程序。

我可以用xqilla做什么的示例(但搜索另一个实用程序):

代码语言:javascript
复制
$ xqilla -i TEST-com.ecample.testcase.MyTestCase.xml <(echo '/testsuite/@failures + /testsuite/@errors')

更新:不完全是我想要的问题,但我决定使用默认安装的perl XML::Twig,这样我就可以灵活地使用perl实现复杂的逻辑。这也带来了很好的速度提升,因为不需要为每个XML文件派生一个进程。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-18 02:22:32

JDK中没有捆绑的XQuery处理器,因此您必须单独安装一个。不清楚为什么你会认为这是一个问题。

票数 1
EN

Stack Overflow用户

发布于 2012-12-18 01:21:27

对于XQuery 1,有我的Xidel。其工作原理如下:

代码语言:javascript
复制
 $ xidel TEST-com.ecample.testcase.MyTestCase.xml -e 'xquery version "1.0"; /testsuite/@failures + /testsuite/@errors'

完全无依赖关系,但不是在基础系统中,不是java,并且它不支持XML模式……

票数 3
EN

Stack Overflow用户

发布于 2012-12-20 01:35:58

编辑:我刚刚注意到你说你已经找到撒克逊了。无论如何,我都会留下我的答案,以防这个例子在将来对任何人有帮助。

您可以从命令行运行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更改为以下内容,我可以使我的输出格式良好:

代码语言:javascript
复制
-qs:"<results>{/a/b[@id='x']}</results>"

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

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

https://stackoverflow.com/questions/13918076

复制
相关文章

相似问题

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