2012-11-26 109 views
1

下複製子元素我有一個XML文件格式如下不同的元素

<root> 
<entities> 
    <entity> 
     <entity_name></entity_name> 
     <entity_id></entity_id> 
    </entity> 
    <entity> 
     <entity_name></entity_name> 
     <entity_id></entity_id> 
    </entity> 
    <entity> 
     <entity_name></entity_name> 
     <entity_id></entity_id> 
    </entity> 
</entities> 

我試圖把它轉換成以下使用XSLT的XML格式。

<root> 
<entity_name></entity_name> 
<entity_id></entity_id> 

<entity_name></entity_name> 
<entity_id></entity_id> 

<entity_name></entity_name> 
<entity_id></entity_id> 

我是新來的XSLT,並已試圖去,因爲許多小時的解決方案。 請提出建議,如果我可以獲得一些很好的參考來學習XSLT,我會非常感激。

回答

1

您可以通過在標準XSLT形象建設實現這一轉變

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

就其本身而言,它只是所有的元素複製原樣。所以,你需要做的是添加額外的模板,與你實體實體元素匹配,但只是輸出他們的孩子,而不實際複製元素本身。

嘗試以下XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="entities|entity"> 
     <xsl:apply-templates /> 
    </xsl:template> 

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

當施加到下面的XSLT

<root> 
    <entities> 
     <entity> 
     <entity_name/> 
     <entity_id/> 
     </entity> 
     <entity> 
     <entity_name/> 
     <entity_id/> 
     </entity> 
     <entity> 
     <entity_name/> 
     <entity_id/> 
     </entity> 
    </entities> 
</root> 

以下是輸出

<root> 
    <entity_name></entity_name> 
    <entity_id></entity_id> 
    <entity_name></entity_name> 
    <entity_id></entity_id> 
    <entity_name></entity_name> 
    <entity_id></entity_id> 
</root> 
+0

非常感謝添℃。它工作完美:) – Sanjeev