如何用XSLT连接很多XML文件?

时间:2013-11-10 12:37:54

标签: xml file xslt concatenation

我有一个包含许多XML文件的文件夹,我想要一个简单的XSLT转换,它可以将所有这些文件合并为一个,并将所有数据放在一个名为<files>...</files>的节点下。 我不关心订单。

P.S。我没有索引文件,其中包含所有文件的名称。我在谷歌上搜索了“XSLT连接XML文件”但结果总是谈到使用document()函数并从索引文件中获取文件的名称。 如果可能的话,我想使用collection()函数来查看此问题的解决方案。

1 个答案:

答案 0 :(得分:7)

XSLT 2.0处理器通常允许使用collection函数(从目录/文件夹中提取文件),但该函数的参数与处理器有关。使用Saxon 9你可以使用

<xsl:param name="folder-url" select="'file:///C:/dir/folder'"/>

<xsl:template name="main">
  <files>
   <xsl:copy-of select="collection(concat($folder-url, '?select=*.xml'))"/>
  </files>
</xsl:template>

有关详细信息,请参阅http://www.saxonica.com/documentation/index.html#!sourcedocs/collections,分别查看XSLT 2.0处理器的文档。