2009-11-28 72 views
0

我需要從xml文檔中提取一些xml節點。源是使用xslt轉換去除XmlNode

<root> 
    <customElement> 
     <child1></child1> 
     <child2></child2> 
    </customElement> 
    <child3></child3> 
    <child4></child4> 
</root> 

結果應該是

<root> 
    <child1></child1> 
    <child2></child2> 
    <child3></child3> 
    <child4></child4> 
</root> 

正如你看到的只有「customElement」元素被刪除,但子元素仍然是結果文檔的一部分。 我該如何使用xslt轉換來做到這一點。

+0

你能告訴我們你的企圖? – 2009-11-28 16:42:06

+0

之前曾詢問過相同的問題:http://stackoverflow.com/questions/1524786/removing-certain-xml-elements-via-xslt – 2009-11-29 08:06:09

回答

2

這裏有一個簡單的解決方案:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/> 

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

<!-- here we specify behavior for the node to be removed --> 
<xsl:template match="customElement"> 
    <xsl:apply-templates select="@*|node()"/> 
</xsl:template> 

</xsl:stylesheet> 
+1

+1。但是,'@ *'在後面的'apply-templates'中是無關緊要的。 (使用示例輸入,嘗試刪除''和''之間的空格,並向'customElement'添加一個屬性以查看會發生什麼情況:該屬性最終在輸出中的「root」節點中。 – 2009-11-29 08:10:46