将多个xml文件合并为一个文件(不同的文件夹)

时间:2018-03-01 11:28:21

标签: xml xslt xslt-2.0

我对以下内容有点困惑。我有大约200-xml文件,我想将所有文件合并为1个文件。所有200个文件都在不同的文件夹中(200个文件夹;))。结构如下:

\文件\工作\ folder1.xml1

\文件\工作\ folder2.xml2

...

\文件\工作\ folder200.xml200

我有xsl将所有文件合并到一个文件中,但.xml文件需要在同一个文件夹中,这需要很多工作。我的问题是,如何使xsl工作,以便它读取所有文件夹并组合所有xml文件或如何获取所有xml文件并将它们放在同一个文件夹中。

我使用的xsl是:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:output method="xml"/>
    <xsl:template match="/">
        <xsl:copy>
            <xsl:apply-templates mode="rootcopy"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="node()" mode="rootcopy">
        <xsl:copy>
            <xsl:variable name="folderURI" select="resolve-uri('.',base-uri())"/>
            <xsl:for-each select="collection(concat($folderURI, '?select=*.xml;recurse=yes'))/*/node()">
                <xsl:apply-templates mode="copy" select="."/>
            </xsl:for-each>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="node()|@*" mode="copy">
        <xsl:copy>
            <xsl:apply-templates mode="copy" select="@*"/>
            <xsl:apply-templates mode="copy"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="*"/>
</xsl:stylesheet>

亲切的问候,

ASB

0 个答案:

没有答案