在各种文件夹的xml文件上运行xslt

时间:2016-02-22 09:26:51

标签: xml xslt

我有一个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>

1 个答案:

答案 0 :(得分:1)

您需要告诉我们您使用的是哪个XSLT处理器。 XSLT 2.0 collection()函数识别的URI与处理器有关。此外,您还没有说过此目录结构中是否还有其他您不想处理的文件。

在Saxon中,如果要处理目录中的所有XML文件,可以使用

collection('source?recurse=yes;select=*.xml')