2012-04-05 139 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