首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT使用XSLT从xml中删除一个根元素的所有属性。

XSLT使用XSLT从xml中删除一个根元素的所有属性。
EN

Stack Overflow用户
提问于 2013-12-17 17:34:55
回答 1查看 1.7K关注 0票数 1

我有一个大型XML文件的以下根元素:

代码语言:javascript
复制
<Interchange xmlns='http://www.e2b.no/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'   
xsi:schemaLocation='http://www.e2b.no/XMLSchema Interchange'>

我要去找

代码语言:javascript
复制
<Interchange>

请注意,对不起,我不会举例说明我的尝试--我将使用基本模板:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                          xmlns:e2b='http://www.e2b.no/XMLSchema'>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*" />

<!-- copy everything as-is apart from exceptions below -->
<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="e2b:Interchange">
<Interchange>
<xsl:apply-templates/>
</Interchange>
</xsl:template>

</xsl:stylesheet>

当我测试时,我意外地将大XML发送到开头输入:

代码语言:javascript
复制
<?xml version='1.0' encoding='ISO-8859-1'?>
<Interchange>

insted

代码语言:javascript
复制
<?xml version='1.0' encoding='ISO-8859-1'?>
<Interchange xmlns='http://www.e2b.no/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'  
xsi:schemaLocation='http://www.e2b.no/XMLSchema Interchange'>

因为我对上一个问题回答肯定。

请提出建议,有任何想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 17:58:08

使用

代码语言:javascript
复制
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                          xmlns:e2b='http://www.e2b.no/XMLSchema'
 exclude-result-prefixes="e2b">



<!-- copy everything as-is apart from exceptions below -->
<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>

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

<xsl:template match="/e2b:Interchange">
  <xsl:element name="{local-name()}">
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

</xsl:stylesheet>

这种方法对于将元素从e2b命名空间转换为无命名空间是必要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20640958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档