2016-04-25 120 views
0

首先,讓我提供示例xml,以便您清楚之後會發生什麼。如何使用XSLT 1.0複製XML中的特定元素

<a>1</a> 
<b>1</b> 
<c>1</c> 
<d>1</d> 
<e>1</e> 
<f>1</f> 

是可以複製節點從a到b和從e到f。我需要忽略節點c和d。

<xsl:copy>它可以複製元素,但我需要從原始XML中獲取特定元素。

謝謝。

+0

你的問題不明確。請顯示轉換的預期輸出 - 並且不要在每個節點中使用具有相同值的示例。 –

回答

0

確定您可以刪除所需元素。只需在標識轉換後在指定元素上寫入空模板即可。

源XML

<root> 
    <a>1</a> 
    <b>1</b> 
    <c>1</c> 
    <d>1</d> 
    <e>1</e> 
    <f>1</f> 
</root> 

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:strip-space elements="*"/> 

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

    <!-- Empty Template to Remove Elements --> 
    <xsl:template match="c|d"/> 

</xsl:stylesheet> 

輸出XML

<root> 
    <a>1</a> 
    <b>1</b> 
    <e>1</e> 
    <f>1</f> 
</root> 

可替換地,選擇部分icular節點保持:

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:strip-space elements="*"/> 

    <!-- Root Template Match -->  
    <xsl:template match="root"> 
    <xsl:copy> 
     <xsl:apply-templates select="a|b|e|f"/> 
    </xsl:copy> 
    </xsl:template> 

    <!-- Select Particular Elements --> 
    <xsl:template match="a|b|e|f"> 
     <xsl:copy-of select="."/> 
    </xsl:template> 

</xsl:stylesheet>