如何使用多个输入文件和单个输出文件执行XSLT

时间:2013-05-26 09:07:34

标签: xml xslt command-line xslt-2.0 saxon

我想使用XSLT读取子目录中的所有XML文件,并将结果输出到单个XML文件,但我不确定如何执行转换。

如果源uri和输出uri都是目录,则下面的语法有效,但如果源uri是目录而输出uri是文件名则不起作用。

我认为uri中的空格不是问题。如果uris是引号(如果源和输出都是文件名或两个目录),下面的语法对我有用。

我正在使用Saxon HE处理器,但如果有必要,我愿意使用其他工具。

java -jar c:\ saxon \ saxon9he.jar -s:“C:\ Temp \ 2011 Valid XML”-o:“C:\ Temp \ LookupTables.xml”-xsl:“C:\ Temp \ LookupTables的.xsl“

1 个答案:

答案 0 :(得分:1)

样式表需要考虑输入,例如使用collection函数http://www.saxonica.com/documentation/index.html#!sourcedocs/collections

<xsl:template name="main">
  <root>
    <xsl:apply-templates select="collection('file:///C:Temp/dir?select=*.xml')/*"/>
  </root>
</xsl:template>

然后使用-it:main命令行选项运行Saxon,以从模板main开始,该模板将拉入该目录中的所有*.xml个文件。

当然,您需要确保模板处理并根据需要转换文件中的节点,但由于您没有提供任何XML结构示例,因此我们建议不要提供太多帮助。