You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从XML元素中移除单个命名空间?附现有XML及XSLT代码

移除XML中的指定命名空间解决方案

针对你提供的XML文档和XSLT需求,这里有一个可行的方案来移除其中一个命名空间(比如默认的www.ns1.com),同时保留另一个命名空间的内容:

首先,先回顾你的原XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns = "www.ns1.com" xmlns:ns2 = "www.ns2.com">
  <node1>
    <node2 addy1="something">value</node2>
  </node1>
</Document>

完整的XSLT转换代码

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ns1="www.ns1.com"  <!-- 声明要移除的默认命名空间,用于匹配元素 -->
                xmlns:ns2="www.ns2.com"  <!-- 保留需要的命名空间 -->
                exclude-result-prefixes="ns1"> <!-- 输出时排除ns1前缀 -->

  <!-- 输出设置,保留格式 -->
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

  <!-- 匹配根节点,创建不带ns1命名空间的根元素 -->
  <xsl:template match="ns1:Document">
    <Document xmlns:ns2="www.ns2.com">
      <xsl:apply-templates select="@* | node()"/>
    </Document>
  </xsl:template>

  <!-- 匹配所有ns1命名空间下的元素,创建不带命名空间的新元素 -->
  <xsl:template match="ns1:*">
    <xsl:element name="{local-name()}">
      <xsl:apply-templates select="@* | node()"/>
    </xsl:element>
  </xsl:template>

  <!-- 匹配所有属性、文本等内容,直接复制 -->
  <xsl:template match="@* | text() | comment() | processing-instruction()">
    <xsl:copy/>
  </xsl:template>

</xsl:stylesheet>

代码解释

  • 命名空间声明:我们先声明原XML的ns1和ns2命名空间,这样XSLT才能正确匹配对应命名空间下的元素。exclude-result-prefixes="ns1"确保输出结果里不会出现ns1的前缀。
  • 根节点模板:专门匹配原根元素ns1:Document,创建一个不带默认命名空间但保留ns2的新根元素。
  • 元素模板:匹配所有ns1命名空间下的子元素,用local-name()获取元素的本地名称,创建不带命名空间的新元素。
  • 通用复制模板:直接复制属性、文本、注释等内容,确保其他内容不会丢失。

转换后的输出结果

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:ns2="www.ns2.com">
  <node1>
    <node2 addy1="something">value</node2>
  </node1>
</Document>

如果你需要移除的是ns2命名空间,只需要调整模板匹配的命名空间即可:把ns1相关的替换成ns2,保留默认命名空间。比如根节点模板改成匹配ns2:相关元素,创建不带ns2的元素。

内容的提问来源于stack exchange,提问作者TheUltimateHack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:46:52