【问题标题】:Add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" to the root element将 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 添加到根元素
【发布时间】:2021-04-20 01:27:15
【问题描述】:

我需要将 XML 转换为另一个更改命名空间的 xml。我需要在根元素中添加命名空间。 输入 XML:-

<?xml version="1.0" encoding="UTF-8"?>
<ZMM_Data>
    <IDOC BEGIN="1">
        <EDI_DC40 SEGMENT="1">
            <DIRECT>3</DIRECT>
        </EDI_DC40>
        <Z1ZMM_B SEGMENT="1">
            <BOOKNO>2000456</BOOKNO>
        </Z1ZMM_B>
    </IDOC>
</ZMM_Data>

我需要如下预期的输出 XML:-

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ZMM_Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <IDOC BEGIN="1">
        <EDI_DC40 SEGMENT="1">
            <DIRECT>3</DIRECT>
        </EDI_DC40>
        <Z1ZMM_B SEGMENT="1">
            <BOOKNO>2000456</BOOKNO>
        </Z1ZMM_B>
    </IDOC>
</ZMM_Data>

我在 XSLT 下尝试过,但没有得到想要的结果:-

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output version="1.0" encoding="UTF-8" standalone="no"/>

<xsl:template match="/*">

<xsl:element name="{local-name()}" namespace="http://www.w3.org/2001/XMLSchema-instance">

<xsl:copy-of select="./*" />

</xsl:element>

</xsl:template>

</xsl:stylesheet>

但退出为:-

<?xml version="1.0" encoding="UTF-8"?>
<ZMM_Data xmlns="http://www.w3.org/2001/XMLSchema-instance">
    <IDOC xmlns="" BEGIN="1">
        <EDI_DC40 SEGMENT="1">
            <DIRECT>3</DIRECT>
        </EDI_DC40>
        <Z1ZMM_B SEGMENT="1">
            <BOOKNO>2000456</BOOKNO>
        </Z1ZMM_B>
    </IDOC>
</ZMM_Data>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    你有什么理由不能简单地做:

    <xsl:template match="/ZMM_Data">
        <ZMM_Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <xsl:copy-of select="*" />
        </ZMM_Data>
    </xsl:template>
    

    这将向根元素添加(冗余)命名空间声明。您正在做的是将根元素放在命名空间中。

    【讨论】:

    • 嗨迈克尔,我遇到以下错误:- net.sf.saxon.s9api.SaxonApiException: org.xml.sax.SAXParseException;行号:1;列号:33;元素“xsl:template”的前缀“xsl”未绑定
    • 你可以在这里看到它的工作原理:xsltfiddle.liberty-development.net/bET2rWF
    • 好的,我将直接尝试进入我需要第一行的过程: 但目前正在获取:-
    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多