【问题标题】:Remove 1 namespace from elememt从元素中删除 1 个命名空间
【发布时间】:2018-04-18 17:54:02
【问题描述】:

目前我有一个 XML 文档,其中根节点有 2 个命名空间,其中列出了类似这样的内容

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

我现在的转变是这样的

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="node()">
        <xsl:copy>
            <xsl:copy-of select="@addy1"/>
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

生成的 xml 几乎是完美的,除了我想从 Document 元素中排除 xmlns:ns2(xmlns 很好)我需要添加什么才能复制带有 Document 的默认命名空间,而不是 xmlns2

【问题讨论】:

    标签: xml xslt xslt-1.0 xslt-2.0


    【解决方案1】:

    使用

    <xsl:template match="node()">
        <xsl:copy copy-namespaces="no">
            <xsl:copy-of select="@addy1"/>
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>
    

    https://xsltfiddle.liberty-development.net/3NzcBsN

    【讨论】:

    • 成功了!谢谢马丁
    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2019-10-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多