0

我有一个类似这样的源 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 转换实现此目的的解决方案。提前谢谢了。

4

1 回答 1

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>
于 2013-02-16T09:29:13.823 回答