我有一些 XSL 文件可以递归地处理目录中的所有文件,基本上它读取一个名为 collection 的变量:
<xsl:variable name="collection">
<xsl:copy-of select="collection(iri-to-uri('./?select=*.xml;recurse=yes'))/*"/>
</xsl:variable>
然后,我们有类似的东西:
<xsl:for-each-group select="$collection/configuration/services/service" group-by="serviceKey" >
这有一段时间没问题,但现在我想传入一个构成变量集合的文件列表。我正在使用 java,所以我可以有效地传递一个以逗号分隔的文件路径列表或 URI,但我不确定如何在 XSL 文件中处理它,以便它像递归 iri-to-uri 函数一样填充集合变量正在工作。
最佳答案
另一种解决方案是在您的 Java 应用程序中实现 CollectionURIResolver。您可以在运行转换之前将其指定给 Saxon。当您调用 collection() 函数时,Saxon 将调用您的 CollectionURIResolver,它可以传回文档或 URI 列表。
http://www.saxonica.com/documentation/index.html#!javadoc/net.sf.saxon.lib/CollectionURIResolver
关于java - 将 XSLT 2.0 函数 iri-to-uri 替换为来自通过 Java 传入的参数的 URI 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995487/