当前位置: 首页 > 知识库问答 >
问题:

添加xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“到根元素

段成益
2023-03-14

我需要将XML转换为另一个XML,并更改名称空间。我需要在根元素中添加名称空间t。输入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>

共有1个答案

鞠凌龙
2023-03-14

有什么原因不能简单地做到:

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

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

 类似资料: