2012-04-05 103 views
2

我有以下幾點:XSLT命名空間變化

<Data xmlns:x="Namespace.com"> 
    <Node></Node> 
    <Node2></Node2> 
    <Node3></Node3> 
</Data> 

如何使用XSLT我可以改變數據節點中的一個命名空間沒有看到空間聲明出現在其他地方。

所需的輸出:

<Data xmlns:x="TheNewNamespace.com"> 
    <Node></Node> 
    <Node2></Node2> 
    <Node3></Node3> 
</Data> 

在此先感謝

回答

2

用途:

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

    <xsl:template match="*"> 
    <xsl:element name="{name()}" namespace="TheNewNamespace.com"> 
     <xsl:copy-of select="@*"/> 
     <xsl:apply-templates/> 
    </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 
+0

完美的答案TY,將接受一次允許一分鐘。 – Mike 2012-04-05 08:29:16

+0

@Mike,謝謝。但是您應該注意,在您的示例中,所有元素都處於默認名稱空間中,而不是在'Namespace.com'中。我的解決方案將所有元素放在'TheNewNamespace.com'命名空間中。 – 2012-04-05 08:31:01

+0

該示例僅反映了我實際的xml文檔的佈局,即使可能如此,XSLT仍將其讀取爲如果它位於名稱空間中:/如果在嘗試解析時不聲明它,則不會找到任何節點等。 – Mike 2012-04-05 08:41:58