【问题标题】:XSLT Namespace ChangeXSLT 命名空间更改
【发布时间】:2012-04-05 08:16:13
【问题描述】:

我有以下几点:

<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>

提前致谢

【问题讨论】:

    标签: xml xslt xpath namespaces


    【解决方案1】:

    用途:

    <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>
    

    【讨论】:

    • @Mike,谢谢。但是您应该注意到,在您的示例中,所有元素都在默认命名空间中,而不是在 Namespace.com 中。我的解决方案将所有元素放在 TheNewNamespace.com 命名空间中。
    • 该示例仅反映了我的实际 xml 文档的布局,即使可能是这种情况,XSLT 仍然像在命名空间中一样读取它:/ 如果我在尝试解析时没有声明它我找不到任何节点等。
    • 已经被要求将xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 添加到命名空间中,因此它现在包含两个,我如何将第二个添加到这样的输出中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    相关资源
    最近更新 更多