【发布时间】:2014-02-01 14:19:32
【问题描述】:
XSD 元素的顺序是否对客户端应用程序有重大影响?
想象一个 clinet 应用程序被赋予了不同的顺序。这会以任何方式影响它吗?
此外,是否存在客户端应用程序读取的顺序与 XSD 不同的特殊情况?
谢谢
【问题讨论】:
标签: web-services soap xsd wsdl
XSD 元素的顺序是否对客户端应用程序有重大影响?
想象一个 clinet 应用程序被赋予了不同的顺序。这会以任何方式影响它吗?
此外,是否存在客户端应用程序读取的顺序与 XSD 不同的特殊情况?
谢谢
【问题讨论】:
标签: web-services soap xsd wsdl
1) 这取决于“合同”的编写方式...使用了哪个 XSD“合成器”(序列、选择和所有):
如果您为客户端应用程序提供的元素使用的顺序与使用关联的xsd:sequence 规定的顺序不同,则 XSD 验证器必须将 XML 标记为无效。它不适合 xsd:all 或重复选择。
2) 如果您使用 XML API 处理 XML,那么the order read by the client application 始终是 XML 实例(而不是 XSD)中的那个。如果您使用某种 XSD 到代码绑定技术(例如 .NET 中的 JAXB 或 XML 序列化)来处理 XML,那么只要 XML 有效,“排序”的概念就会受到影响......列表仍将反映 XML 文件中遇到的内容;但是,在面向对象中,类定义中没有字段排序(专有注释/标签可能仍将其捕获为元数据,以便将其正确序列化,但这只是一种绑定技术“主义”而不是 OO 概念)。
然后是非常糟糕的 XSD 合同,其中元素的语义由元素在父节点集合中的相对位置隐含(例如,第一个客户是“委托人”,第二个是“共同申请人”,等等。 ) 这使得这个讨论更加模糊......
【讨论】: