2013-02-16 86 views
0

我有一個源XML是這樣的(如下所示),其中有一個PR標記,其下可以有多個Pr線標記,但在最終的XML中,我希望源XML(包含多個Pr線標籤)將按照目標xml中所示分割。如何使用XSLT拆分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> 

當多個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轉換提供解決方案。 很多預先感謝。

回答

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> 
+0

感謝巴勃羅,它完美.. – user2076251 2013-02-16 09:53:48

+0

很高興我能幫助;) – 2013-02-16 09:57:12