如何使用XSLT删除XML的1级元素中的名称空间 [英] How can we remove name space in level 1 elements of the xml using xslt

查看:16
本文介绍了如何使用XSLT删除XML的1级元素中的名称空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有此XML

<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <UserInfo xmlns="">
      <name>ss</name>
      <addr>XXXXXX</addr>
     </UserInfo>
</Request>

我希望输出XML为

<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <UserInfo>
          <name>ss</name>
          <addr>XXXXXX</addr>
         </UserInfo>
    </Request>

请在xsl中帮助我..

推荐答案

您输入和输出在语义上是相同的,但如果要删除xmlns="",则可以执行以下操作:

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

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

  <xsl:template match="*/*">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:apply-templates select="@* | node()"/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

在示例输入上运行时,结果为:

<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UserInfo>
    <name>ss</name>
    <addr>XXXXXX</addr>
  </UserInfo>
</Request>

这篇关于如何使用XSLT删除XML的1级元素中的名称空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆