如何在没有名称空间的情况下将名称空间和xsi添加到传入XML

拉姆吉特

我有要求,我必须在没有命名空间的情况下将命名空间和xsi添加到源xml中的元素中。在Source XML中,我只是获取节点,并且没有名称空间,另一个程序需要BizTalk将Namespace和XSI添加到XML进行处理。

我试过了:

  1. 用于添加名称空间管道的组件。(它只是添加了名称空间而不是xsi位)
  2. 使用Map来设置所需的格式,是的,没有运气,只有名称空间。

需要您的帮助。

我的源XML就像

<?xml version="1.0" encoding="UTF-16"?> 
<Document>
    <CstmrPmtStsRpt>
        <GrpHdr>
            <MsgId></MsgId>
            <CreDtTm></CreDtTm>
            <InitgPty>                 
                <Id>
                    <OrgId>
                        <BICOrBEI></BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <OrgnlGrpInfAndSts>
             <OrgnlMsgId></OrgnlMsgId>
            <OrgnlMsgNmId></OrgnlMsgNmId>
            <OrgnlNbOfTxs></OrgnlNbOfTxs>
            <OrgnlCtrlSum></OrgnlCtrlSum>
            <GrpSts>ACCP</GrpSts>
        </OrgnlGrpInfAndSts>
    </CstmrPmtStsRpt>
</Document>

我的必填格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="MyNamespace">     
    <CstmrPmtStsRpt>
        <GrpHdr>
            <MsgId></MsgId>
            <CreDtTm></CreDtTm>
            <InitgPty>                 
                <Id>
                    <OrgId>
                        <BICOrBEI></BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <OrgnlGrpInfAndSts>
            <OrgnlMsgId></OrgnlMsgId>
            <OrgnlMsgNmId></OrgnlMsgNmId>
            <OrgnlNbOfTxs></OrgnlNbOfTxs>
            <OrgnlCtrlSum></OrgnlCtrlSum>
            <GrpSts>ACCP</GrpSts>
        </OrgnlGrpInfAndSts>
    </CstmrPmtStsRpt>
</Document>
费哈

使用如下namespace属性xsl:element

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="*">
        <xsl:element name="{local-name()}" namespace="MyNamespace">
            <xsl:namespace name="xsi" select="'http://www.w3.org/2001/XMLSchema-instance'"/>
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

编辑:由于您需要使用XSLT-1.0。使用以下样式表:

<?xml version="1.0" encoding="UTF-16"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/Document">
        <Document xmlns="MyNamespace" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <xsl:apply-templates/>           
        </Document>
    </xsl:template>

    <xsl:template match="*">
        <xsl:element name="{local-name()}" namespace="MyNamespace">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

请注意,您需要为此知道rootnode的名称(在本例中为Document)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有名称空间的情况下访问XML元素

如何在没有名称空间的情况下进行封送?

如何在没有名称空间的情况下调用Ruby类

XML中没有名称空间的元素

如何将名称空间添加到现有的xml文件

XSLT-将名称空间添加到节点XML

避免将名称空间添加到XML(java)

XSLT:如何在同一篇文章中访问名称空间类型和没有名称空间类型的元素

如何将名称空间添加到SQL Server生成的XML输出

如何在没有属性字段的情况下仅获取设备名称和可用空间百分比?

XML中具有相同的前缀和多个名称空间-如何在不影响Python中其他元素的情况下添加元素属性

XSLT创建没有名称空间的内容

没有名称空间的XSLT复制节点

如何将xml的一部分转换为没有名称空间的新xml?

将xml转换为不包含soapEnvolpe和名称空间的名称,还使用xslt将名称空间添加到内部元素

在Python中遍历没有名称空间的XML树

XML到XSD,没有名称空间绑定错误

没有名称空间时如何在laravel 5.6上使用google-api-php-client

node-soap将名称空间添加到信封

Spring-将@Bean添加到没有名称属性的字符串

将列名添加到没有名称的表列

如何在没有 .xml 和资源的情况下将字符串添加到微调器

为什么将名称空间前缀添加到我的XML属性?

为什么在XML序列化期间将名称空间添加到子节点?

将名称空间添加到已经创建的XML文档中

将名称空间属性添加到php中的xml节点

将名称空间添加到XML根VB.net时出现问题

使用XSLT将名称空间添加到XML的特定节点

在序列化期间将名称空间和前缀添加到soap消息头