我有一个像这样的源XML(如下所示),其中有一个PR标签,其下可以有多个Pr Line标签,但在最终的XML中,我想要源XML(包含多个Pr Line标签)如目标xml中所示进行拆分。
来源:
<PRSet>
<PR>
<PRNUM>100</PRNUM>
<VENDOR>XYZ LLC</VENDOR>
<PRLINE>
<PRLINENUM>101</PRLINENUM>
<DESCRIPTION>Burner Lamp</DESCRIPTION>
</PRLINE>
<PRLINE>
<PRLINENUM>102</PRLINENUM>
<DESCRIPTION>Stove</DESCRIPTION>
</PRLINE>
</PR>
</PRSet>
当单个PR标签中有多个PRLine标签时,最终的xml应如下所示:
目标:
<PRSet>
<PR>
<PRNUM>100</PRNUM>
<VENDOR>XYZ LLC</VENDOR>
<PRLINE>
<PRLINENUM>101</PRLINENUM>
<DESCRIPTION>Burner Lamp</DESCRIPTION>
</PRLINE>
</PR>
<PR>
<PRNUM>100</PRNUM>
<VENDOR>XYZ LLC</VENDOR>
<PRLINE>
<PRLINENUM>102</PRLINENUM>
<DESCRIPTION>Stove</DESCRIPTION>
</PRLINE>
</PR>
任何人都可以使用XSLT Transformation提供解决方案。 非常感谢提前。
答案 0 :(得分:1)
您描述的转换可以使用以下XSLT样式表实现:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="PRSet">
<xsl:copy>
<xsl:apply-templates select="PR/PRLINE" />
</xsl:copy>
</xsl:template>
<xsl:template match="PRLINE">
<PR>
<xsl:copy-of select="../PRNUM|../VENDOR|." />
</PR>
</xsl:template>
</xsl:stylesheet>