使用 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 尚未达到该状态。)
我有一堆文件夹 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 尚未达到该状态。)