我是XSLT
和SAXON
的新手,我希望完成以下任务:
我有一个长长的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。