首页 > 解决方案 > 使用 SAXON 和 XSLT 合并 XML 文件

问题描述

我是新手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文件包含一个根节点下所有文件的所有内容(所有<xpath>元素及其子元素)benchmark

标签: xmlxsltsaxon

解决方案


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

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

然后使用 options 调用 Saxon -xsl:mergefiles.xsl -it:main -o:merged-file.xml


推荐阅读