我正在尝试从linux shell中找到一个简单的cli命令来执行xquery。我想要的是避免我需要安装的外部依赖(使用fedora18)。
我已经找到了可以通过yum安装的saxon和xqilla。如果没有其他东西,我可以使用它们,但它们不在基本系统中。我希望找到的是类似于用于执行xslt处理(com.sun.org.apache.xalan.internal.xsltc.cmdline.Transform).的java内部类的东西。
我的另一个想法是使用XSLT将文档转换为所需的xquery结果,但不能使用一行程序。
我可以用xqilla做什么的示例(但搜索另一个实用程序):
$ xqilla -i TEST-com.ecample.testcase.MyTestCase.xml <(echo '/testsuite/@failures + /testsuite/@errors')更新:不完全是我想要的问题,但我决定使用默认安装的perl XML::Twig,这样我就可以灵活地使用perl实现复杂的逻辑。这也带来了很好的速度提升,因为不需要为每个XML文件派生一个进程。
发布于 2012-12-18 02:22:32
JDK中没有捆绑的XQuery处理器,因此您必须单独安装一个。不清楚为什么你会认为这是一个问题。
发布于 2012-12-18 01:21:27
对于XQuery 1,有我的Xidel。其工作原理如下:
$ xidel TEST-com.ecample.testcase.MyTestCase.xml -e 'xquery version "1.0"; /testsuite/@failures + /testsuite/@errors'完全无依赖关系,但不是在基础系统中,不是java,并且它不支持XML模式……
发布于 2012-12-20 01:35:58
编辑:我刚刚注意到你说你已经找到撒克逊了。无论如何,我都会留下我的答案,以防这个例子在将来对任何人有帮助。
您可以从命令行运行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
https://stackoverflow.com/questions/13918076
复制相似问题