【问题标题】:WSDL XSD elements sequenceWSDL XSD 元素序列
【发布时间】:2014-02-01 14:19:32
【问题描述】:

XSD 元素的顺序是否对客户端应用程序有重大影响?

想象一个 clinet 应用程序被赋予了不同的顺序。这会以任何方式影响它吗?

此外,是否存在客户端应用程序读取的顺序与 XSD 不同的特殊情况?

谢谢

【问题讨论】:

    标签: web-services soap xsd wsdl


    【解决方案1】:

    1) 这取决于“合同”的编写方式...使用了哪个 XSD“合成器”(序列、选择和所有):

    • 顺序:元素必须按照基数约束所标识的确切顺序和重复显示。根据需要重复...
    • 选择:对于任何出现的选择,可能会出现选项粒子中的一个。如果选择是可重复的,则意味着这些选项可以重复,但没有特定的顺序。
    • All:元素可以以任意顺序出现;在 XSD 1.0 版本中,每个元素最多出现一次; XSD 1.1 放宽了这一限制,这意味着可能会发生更多相同的情况。

    如果您为客户端应用程序提供的元素使用的顺序与使用关联的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 合同,其中元素的语义由元素在父节点集合中的相对位置隐含(例如,第一个客户是“委托人”,第二个是“共同申请人”,等等。 ) 这使得这个讨论更加模糊......

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多