如何将大量XML放在一起并在Windows中进行转换

时间:2012-07-18 08:41:53

标签: xml windows xslt cmd

我在文件夹中有很多XML文件 - 一本书的一页XML。我需要将所有XML放在一个根XML文件中,然后使用XSL进行第一次转换,以删除命名空间和不需要的属性(我有一个XSL样式表),保存新的XML,然后使用另一个样式表再次转换它(I已经准备好了)并保存结果文本文件。 我在家中使用一个XML文件在Oxygen中执行此操作,但我需要自动执行此过程,并使用某些脚本运行它。我必须在Windows中工作,没有氧气,客户没有任何软件,并希望自己制作。 如何在不使用带有!ENTITY标签的根XML的情况下将XML放在一起?我可以使用哪些软件工具(用于XSL转换)?如何为Windows制作这样的脚本? 我用Python编程,用Java编写一些。 非常感谢你。

2 个答案:

答案 0 :(得分:0)

请参阅有关如何使用multiple source documents的XSLT规范。

答案 1 :(得分:0)

为了将XML文件放在一起以便您可以将它们作为一个文件处理,一个选项是编写一个cmd.exe批处理脚本,该脚本生成一个根XML实体引用所有XML文件的根XML文件。

也许是这样的(假设没有扩展名的XML文件名是允许的实体名称):

@echo off
del root.xml 2> nul
(
    echo ^<!DOCTYPE root [
    for %%f in (*.xml) do (echo ^<!ENTITY %%~nf SYSTEM "%%f"^>)
    echo ]^>
    echo ^<root^>
    for %%f in (*.xml) do (echo ^&%%~nf;)
    echo ^</root^>
) > root.tmp
move root.tmp root.xml > nul

或者,您可以使用某些XML标记输出文件名,并使用XSLT中的document()函数访问文件。

要从命令行运行XSLT转换,您可以使用例如msxsl.exe命令行实用程序,它是可能已安装在系统上的MSXML库的前端。

msxsl root.xml stylesheet.xsl