xml - 使用 Saxon 9.6HE 自动执行多个文件的 xquery

标签 xml command-line xquery saxon

我有一个查询,它在文件中指定要读取的文档。

我需要对许多文件执行此查询,因此我需要从命令行传递文件名之类的东西。

我不知道该怎么做。我该如何解决我的问题?

我的查询文件的示例是

for $i in doc("myfile") 
return $i

我正在使用此命令行运行它

#!/bin/bash
java -cp "./tagsoup/tagsoup-1.2.1.jar:./saxon/saxon9he.jar" net.sf.saxon.Query -x:org.ccil.cowan.tagsoup.Parser  $1

最佳答案

最简单的方法是将源文档作为查询的上下文项传递。将查询更改为

for $i in . return $i

(简化为“.”)

并在命令行的-s:source.xml选项中设置源文档。

例如,您还可以在查询中声明外部变量并从命令行设置它们

declare variable $uri external; doc($uri)

然后

java net.sf.saxon.Query -q:query.xq uri=source.xml

我从问题中猜想您没有找到 Saxon XQuery 命令行的文档:它在这里:

http://saxonica.com/documentation/index.html#!using-xquery/commandline

请注意,虽然这是您问题的直接答案,但使用 @DanielHaley 建议的 collection() 方法您将获得更好的性能,因为它避免了初始化 Java VM 和编译每个文件的查询的开销已处理。

关于xml - 使用 Saxon 9.6HE 自动执行多个文件的 xquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42474527/

相关文章:

xml - 多大的 RSS 提要 XML 文件太大了?

java - 排除 xpath 表达式中的子元素

windows - 批处理脚本中是否有一种方法可以仅在从 Windows 管理器调用时保持控制台打开?

xquery - XQuery 实际是如何使用的?

android - 为什么 AppBar 会在我的应用栏背景中添加方 block

java - 使用 XSLT 中的 id 选择 XML 值

ruby - 将长文件名转换为短文件名 (8.3)

macos - 如何以编程方式为未识别的 .app 添加异常

Oracle XQuery 删除、插入、更新

xpath - 简单解释xpath和xquery