使用XSLT将XML分割成多个文件
发布时间:2020-12-16 08:04:54 所属栏目:百科 来源:网络整理
导读:我在XSLT周围很困难,但是听说可以将XML文件分割成多个文件。基本上我想将所有的元素复制到第一个文件,最后一个文件,然后添加每个输出文件的单个文件内容。 如果有可能,有人可以给我一些指针吗? 谢谢, complete.xml rootelem elem file attr1='1' conte
我在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的字面结果元素,但它似乎不值得的努力,除非他们会变化。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |