具有可变数量源文件的 XSLT 工作流程

标签 xslt workflow saxon xproc

我有一堆具有固定的、基于国家/地区的命名架构的 XML 文件:report_en.xmlreport_de.xmlreport_fr.xml现在我想编写一个 XSLT 样式表,通过 document() XPath 函数读取这些文件中的每一个,提取一些值并生成一个带有摘要的 XML 文件。我的问题是:如何在不知道要处理的文件的确切名称的情况下迭代源文件?

目前,我计划生成一个包含所有文件名的辅助 XML 文件,并在样式表中使用辅助 XML 文件进行迭代。文件列表将使用小型 PHP 或 bash 脚本生成。有更好的选择吗?

我知道XProc ,但目前我无法选择投入太多时间。也许有人可以发布 XProc 解决方案。优选地,该解决方案包括工作流程步骤,其中报告以 HTML 格式下载并整理:)

我将使用 Saxon 作为我的 XSLT 处理器,因此如果我可以使用特定于 Saxon 的扩展,这些也可以。

最佳答案

您可以使用标准 XPath 2.x collection() 函数, as implemented in Saxon 9.x

Saxon 实现允许在函数的 string-Uri 参数中使用搜索模式,因此您可以在目录路径之后指定以 report_ 开头的任何文件名的模式> 然后还有另外两个字符,然后以 .xml 结尾。

示例:

这个 XPath 表达式:

collection('file:///c:/?select=report_*.xml')

选择位于 c:\ 的每个 XML 文档的文档节点,该文件的名称以 report_ 开头,包含 0 个或多个字符,最后以.xml.

关于具有可变数量源文件的 XSLT 工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951343/

相关文章:

string - [XSLT] : Remove string in XSLT

html - XSLT 允许不匹配的标签?

sharepoint - 如何在SharePoint工作流中摆脱用户的办公室状态

java - XPath 查询 : How to refer to the 'current node' (Java/Saxon)

java - 如何使用 XPath 检查 XML 中是否存在元素?

xml - XSLT——将文本节点的值解释为 XPath 查询(并在转换中使用它)

git - 防止 `git` 使用给定的提交消息推送提交

git - 有选择地提交到主存储库的技术

java - Java Eclipse 中的 Serializer() 方法 "constructor serializer() is not defined"

xml - 如何计算节点中的不同值?