如何使用XSLT拆分XML标记

时间:2013-02-16 08:47:56

标签: xslt

我有一个像这样的源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提供解决方案。 非常感谢提前。

1 个答案:

答案 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>