在一批xml文件上运行saxon xquery,并为每个输入文件生成一个输出文件

时间:2014-01-09 13:35:43

标签: xquery saxon

如何使用build in命令行在文件目录上使用Saxon HE 9.5运行xquery?我想将一个文件作为输入并生成一个文件作为输出。

这听起来非常明显,但如果不使用仅在PE和EE中可用的撒克逊扩展,我无法弄明白。

我可以使用fn:collection()或使用输入参数读取目录中的文件。但是我只能生成一个输出文件。

为了简单起见,假设我的文件01.xml,02.xml,... 99.xml有一个目录“input”。然后我有一个“输出”目录,我想生成具有相同名称的文件--01.xml,02.xml,... 99.xml。

有什么想法吗?

我的真实数据集足够大(成千上万个文件),我不想触发jvm,因此编写一个shell脚本来调用每个文件的saxon命令行是不可能的。

如果没有内置的命令行选项,我可能只编写自己的快速java类。

1 个答案:

答案 0 :(得分:1)

XQuery语言中不存在从单个查询生成多个输出文件的能力(仅在XSLT中),并且Saxon的XQuery命令行中不存在处理一批输入文件的能力(仅在XSLT中)命令行)。

您可以从Ant,XProc或xmlsh(或者当然是Java)重复调用单个文档查询,或者您可以在XSLT中编写代码。