使用 SAXON 和 XSLT 合并 XML 个文件

Merging XML Files Using SAXON and XSLT

我是 XSLTSAXON 的新手,我希望完成以下任务:

我有一长串 XML 文件代表一些基准,所有结构如下:

<benchmark>
    <xpath>
        <query>xxxxx</query>
        <ast depth="6" size="11">
            ...
        </ast>
        <schemas>
            <validation schema="xquery-3.0.xsd" valid="yes"/>
            ...
        </schemas>
    </xpath>
    <xpath>
        <query>yyyyy</query>
        <ast depth="6" size="11">
            ...
        </ast>
        <schemas>
            <validation schema="xquery-3.0.xsd" valid="yes"/>
            ...
        </schemas>
    </xpath>
</benchamark>

我只想将它们全部合并到一个 XML 文件中,该文件包含一个根 benchmark 节点下所有文件的所有内容(所有 <xpath> 元素及其子元素)。

最简单的方法是使用命名模板开始转换,不输入 XML,但使用 collection 函数从目录中提取所有数据:

<xsl:template name="main">
  <benchmark>
    <xsl:copy-of select="collection('../../benchmark/?select=*xml')/*/node()"/>
  </benchmark>
</xsl:template>

然后使用选项 -xsl:mergefiles.xsl -it:main -o:merged-file.xml.

调用 Saxon