我在XSLT周围很困难,但是听说可以将XML文件分割成多个文件。基本上我想将所有的元素复制到第一个文件,最后一个文件,然后添加每个输出文件的单个文件内容。
如果有可能,有人可以给我一些指针吗?
谢谢,
complete.xml
<rootelem> <elem> <file attr1='1'> <content>content file 1</content> </file> <file attr2='2'> <content>content file 2</content> </file> <file attr3='3'> <content>content file 3</content> </file> </elem> </rootelem>
输出:
complete_PART1.xml
<rootelem> <elem> <file attr1='1'> <content>content file 1</content> </file> </elem> </rootelem>
complete_PART2.xml
<rootelem> <elem> <file attr2='2'> <content>content file 2</content> </file> </elem> </rootelem>
complete_PART3.xml
<rootelem> <elem> <file attr3='3'> <content>content file 3</content> </file> </elem> </rootelem>
回复你对@ Dimitre的回答的评论…
你写了,
<xsl:template match="/"> <xsl:for-each select="elem/file"> <xsl:result-document method="xml" href="file_{@id}-output.xml"> <xsl:copy-of select="."/> </xsl:result-document> </xsl:for-each> </xsl:template>
这不符合您的XML,它的rootelem作为最外层的元素,您的评论将root表示为最外层的元素。你可能想要这样的东西:
<xsl:template match="/root"> <xsl:for-each select="elem/file"> <xsl:result-document method="xml" href="file_{@id}-output.xml"> <root> <xsl:copy-of select="/root/@*" /> <elem> <xsl:copy-of select="../@* | ." /> </elem> </root> </xsl:result-document> </xsl:for-each> </xsl:template>
您可以获得优胜者,尝试使用< xsl:copy>而不是根和elem的字面结果元素,但它似乎不值得的努力,除非他们会变化。