我在下面的一个文件中有这个XML
<?xml version="1.0" encoding="utf-8"?>
<document>
<file> <!--File1.xml-->
<content>content file 1</content>
</file>
<file> <!--File2.xml-->
<content>content file 2</content>
</file>
<file> <!--File3.xml-->
<content>content file 3</content>
</file>
</document>
如何编写XSLT以将其分解为多个文件,如下所示
File1.xml
<?xml version="1.0" encoding="utf-8"?>
<document>
<file>
<content>content file 1</content>
</file>
</document>
File2.xml
<?xml version="1.0" encoding="utf-8"?>
<document>
<file>
<content>content file 2</content>
</file>
</document>
等。
感谢您的帮助。
答案 0 :(得分:2)
使用XSL 2.0:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="document/file">
<xsl:result-document href="file{position()}.xml">
<document>
<xsl:copy-of select="current()"/>
</document>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我使用Saxon测试了这一点,它使用以下命令支持XSLT 2.0:
java -jar saxon9.jar -xsl:transform.xsl -s:input.xml
此命令会生成三个文件:file1.xml
,file2.xml
和file3.xml
。
$ cat file1.xml
<?xml version="1.0" encoding="UTF-8"?>
<document>
<file> <!--File1.xml-->
<content>content file 1</content>
</file>
</document>