我有一个xslt,我需要在多个xml文件上运行,这些文件存在于一个文件夹&source;'他的文件层次结构如下:
文件1 :source / a / 1.xml 文件2 :source / b / 2.xml 文件3 :source / b / 3.xml 文件4 :source / c / 4.xml
等等。如何在这些xml文件上运行以下xslt
<xsl:template match="/">
<xsl:for-each select="collection( 'source//*.xib')">
<xsl:variable name="filename" select="document-uri(.)"/>
<xsl:variable name="filename1">
<xsl:value-of select="substring-after($filename,'source/')"/>
</xsl:variable>
<xsl:result-document href="res/{$filename1}">
<xsl:apply-templates/>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
答案 0 :(得分:1)
您需要告诉我们您使用的是哪个XSLT处理器。 XSLT 2.0 collection()
函数识别的URI与处理器有关。此外,您还没有说过此目录结构中是否还有其他您不想处理的文件。
在Saxon中,如果要处理目录中的所有XML文件,可以使用
collection('source?recurse=yes;select=*.xml')