XSD元素的序列顺序是否会对客户端应用程序产生重大影响?
想象一下,一个clinet应用程序可以提供不同的顺序。这会以任何方式影响它吗?
此外还有一种特殊情况,即客户端应用程序读取的订单与XSD不同吗?
谢谢
答案 0 :(得分:2)
1)这取决于“合同”的编写方式......使用了哪个XSD“合成器”(序列,选择和所有):
如果您使用与使用关联xsd:sequence
规定的订单不同的订单向客户端应用程序提供元素,则XSD验证程序必须将XML标记为无效。它不应该为xsd:all或重复选择。
2)如果您使用XML API处理XML,那么the order read by the client application
始终是XML实例(而不是XSD)中的那个。如果您使用某种XSD处理XML以编码绑定技术,例如.NET中的JAXB或XML序列化,那么只要XML有效,“排序”的概念就会受到影响......列表仍将反映XML文件中遇到的内容;然而,在面向对象中,类定义中没有字段排序(专有注释/标签仍然可以将其捕获为元数据,以便正确地序列化它,但这只是一种绑定技术“ism”而不是OO概念)。
然后有非常糟糕的XSD合同,其中元素的语义由父元素集合中元素的相对位置暗示(例如,第一个客户是“主要”,第二个是“共同申请人”等。这使得这个讨论更加模糊......