You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成无前缀多命名空间的ISO20022 SWIFT SAA兼容XML?

解决方案:生成无命名空间前缀的ISO20022 SWIFT报文XML

要实现目标XML的无前缀输出,需要从XSD结构编写和Mapforce输出配置两方面调整:

一、正确编写XSD Schema

三个命名空间对应独立XSD,主XSD通过xs:import引入其他两个,确保所有XSD的elementFormDefault设为qualified(保证元素归属对应命名空间)。

1. 主XSD(namespace1,data.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="namespace1"
           xmlns="namespace1"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:ns2="namespace2"
           xmlns:ns3="namespace3"
           elementFormDefault="qualified">

    <!-- 引入其他命名空间的Schema -->
    <xs:import namespace="namespace2" schemaLocation="header.xsd"/>
    <xs:import namespace="namespace3" schemaLocation="doc.xsd"/>

    <!-- 定义根元素Data及内部结构 -->
    <xs:element name="Data">
        <xs:complexType>
            <xs:sequence>
                <!-- Data下的其他元素 -->
                <xs:element name="Body">
                    <xs:complexType>
                        <xs:sequence>
                            <!-- 引用namespace2的Header全局元素 -->
                            <xs:element ref="ns2:Header"/>
                            <!-- 引用namespace3的Doc全局元素 -->
                            <xs:element ref="ns3:Doc"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

2. Header的XSD(namespace2,header.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="namespace2"
           xmlns="namespace2"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <!-- 定义Header元素及子元素 -->
    <xs:element name="Header">
        <xs:complexType>
            <xs:sequence>
                <!-- 替换为实际业务元素 -->
                <xs:element name="MessageId" type="xs:string"/>
                <xs:element name="CreationDate" type="xs:dateTime"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

3. Doc的XSD(namespace3,doc.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="namespace3"
           xmlns="namespace3"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

    <!-- 定义Doc元素及子元素 -->
    <xs:element name="Doc">
        <xs:complexType>
            <xs:sequence>
                <!-- 替换为实际业务元素 -->
                <xs:element name="TransactionId" type="xs:string"/>
                <xs:element name="Amount" type="xs:decimal"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

二、Mapforce输出配置调整

Mapforce默认会为跨命名空间元素分配前缀,需手动修改元素输出属性:

  • 打开映射项目,选中Header元素(来自namespace2),在右侧属性面板中:
    1. 将命名空间前缀设为空
    2. 勾选在该元素上声明默认命名空间
  • 对Doc元素(来自namespace3)执行完全相同的设置
  • 确保XML输出组件的全局命名空间设置中,不为namespace2、namespace3分配固定前缀

完成以上设置后,生成的XML会自动在Header和Doc元素上声明局部默认命名空间,其子元素将继承该命名空间且无前缀。

内容的提问来源于stack exchange,提问作者Sam CMS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:57:09