首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在中间有无命名空间元素的XML文档是一种好做法吗?

在中间有无命名空间元素的XML文档是一种好做法吗?
EN

Software Engineering用户
提问于 2020-09-16 13:00:18
回答 1查看 279关注 0票数 1

我的XML如下所示:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<n0:OrderConfirmation xmlns:n0="http://company.org/interface/MVSI"
    xmlns:ord="urn:company.com:Order:XYZ:001">
    <MessageHeader>
        <ID>001</ID>
        <CreationDateTime>2020-09-10T07:39:26.697Z</CreationDateTime>
    </MessageHeader>
    <Order>
        <OrderID>00027847</SalesOrderID>
        <Status>Confirmed</Status>
        <Items>
            <Article>
                <ArticleID>ABC001</ArticleID>
                <LineItem>000001</LineItem>
            </Article>
        </Items>
    </Order>
</n0:OrderConfirmation>

我会说,更好的方法是声明一个默认名称空间,如下所示:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<n0:OrderConfirmation xmlns:n0="http://company.org/interface/MVSI"
    xmlns="urn:company.com:Order:XYZ:001">
    <MessageHeader>
        <ID>001</ID>
        <CreationDateTime>2020-09-10T07:39:26.697Z</CreationDateTime>
    </MessageHeader>
    <Order>
        <OrderID>00027847</SalesOrderID>
        <Status>Confirmed</Status>
        <Items>
            <Article>
                <ArticleID>ABC001</ArticleID>
                <LineItem>000001</LineItem>
            </Article>
        </Items>
    </Order>
</n0:OrderConfirmation>

或者更简化:根元素可以是默认命名空间的一部分:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<OrderConfirmation xmlns="urn:company.com:Order:XYZ:001">
    <MessageHeader>
        <ID>001</ID>
        <CreationDateTime>2020-09-10T07:39:26.697Z</CreationDateTime>
    </MessageHeader>
    <Order>
        <OrderID>00027847</SalesOrderID>
        <Status>Confirmed</Status>
        <Items>
            <Article>
                <ArticleID>ABC001</ArticleID>
                <LineItem>000001</LineItem>
            </Article>
        </Items>
    </Order>
<OrderConfirmation>

因为n0名称空间值对系统和系统生成的所有XML文档都是全局的。

我想知道这是否是XML中的一个很好的实践,让中间元素进入“无命名空间”,或者声明一个从未使用过的名称空间。

更新:为了提供更好的环境,我们正在整个企业中使用ESB集成不同的系统。系统可以分布在整个公司的几个部门。在实际情况中,我们将传入的XML转换为更规范化的XML,并使用与我们管理的数据类型相关的唯一命名空间(在这种情况下是顺序),就像所有其他系统都必须知道的规范数据模型一样。

EN

回答 1

Software Engineering用户

发布于 2020-09-16 14:42:38

有些人认为一切都应该在名称空间中,因为它记录了负责词汇表设计的人。如果您遵循这一思路,那么这适用于示例消息的有效负载,就像它适用于其他所有内容一样。

有些人认为,除非您需要名称空间,否则不使用名称空间要简单得多。

这取决于你是喜欢一个大项目的纪律和控制方法,还是一个小项目刚刚完成-完成-快速的方法。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/415949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档