使用 xslt 2.0 在目录中生成包含文件列表的文档

generating a document with list of files in a directory using xslt 2.0

我有一堆文件夹 xml 文件和部分二进制图像文件。

我正在使用以下内容生成这些文件的列表:

    <xsl:variable name="string" select="iri-to-uri(concat(@name, '/?select=*.(xml|gxf)'))"/>
    <xsl:variable name="input" select="collection($string)"/>
    <xsl:for-each select="$input">
    <file>
    <xsl:value-of select="tokenize(document-uri(.), '/')[last()]"/>
    </file>
    </xsl:for-each>

工作正常,当然二进制文件除外。我怎样才能得到这些文件的uri?使用 saxon9he 的纯 xslt 2.0 可能吗?

可以使用 uri-collection() 函数来完成,但那是 XPath 3.0。因此,您可以使用 XQuery 使用 Saxon-HE 9.6 来完成此操作,但不能使用 XSLT。

let $string := iri-to-uri(concat(@name, '/?select=*.(xml|gxf)'))
let $input := uri-collection($string)
for $i in $input
return
    <file>
      {tokenize($i, '/')[last()]}
    </file>

(当 XQuery 3.0 和 XPath 3.0 成为 W3C 推荐标准时,我们将其支持移到了 HE 产品中。XSLT 3.0 尚未达到该状态。)