2012-12-13 187 views
0

我目前正在進行XML重構。在這裏我的XML示例:將元素屬性放入子元素的元素中

<SECTION SectionID = "S"> 
    <DATA> 
     <ITEM ID="GLOBAL_DOCSTATUS_1000"> 
     <D>template</D> 
     <E>template</E> 
     <R>шаблон</R> 
     <K>шаблон</K> 
     </ITEM> 
    </DATA> 
</SECTION> 

我需要把一個屬性@SectionID作爲一個元素的<ITEM>標籤內的新<SECTIONID>標籤與它的數據。

結果應該是這樣的:

<SECTION> 
    <DATA> 
    <ITEM ID="GLOBAL_DOCSTATUS_1000"> 
    <D>template</D> 
    <E>template</E> 
    <R>шаблон</R> 
    <K>шаблон</K> 
     <SECTIONID>S</SECTIONID> 
    </ITEM> 
    </DATA> 
</SECTION> 

回答

1
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="@*|node()"> 
    <xsl:copy> 
    <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="SECTION"> 
    <xsl:copy> 
    <xsl:apply-templates select="@*[name()!='SectionID']|node()"/> 
    </xsl:copy> 
</xsl:template> 

    <xsl:template match="SECTION[@SectionID]/DATA/ITEM"> 
    <xsl:copy> 
    <xsl:apply-templates select="@*|node()"/> 
    <SECTIONID><xsl:value-of select="../../@SectionID" /></SECTIONID> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

它的工作。我對此感到困惑: – macnur