使用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节点下的所有文件。

最简单的方法是使用命名模板开始转换,不使用输入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。

最新更新