允许动态 XSD 中的无序元素用于 Web 服务?

Allowing unordered elements in dynamic XSD for web service?

我有一个应用程序,用户可以在其中设计带有动态数据的 Web 服务。用户可以指定网络服务应该处理的数据。 比如用户定义这个数据:

PERSON (minoccurs 1, maxoccurs 1)
   -> Firstname (minoccurs 1, maxoccurs 1)
   -> Lastname (minoccurs 1, maxoccurs 1)
   -> email (minoccurs 0, maxoccurs 3)

所以 XML 可以看起来像这样

<Person>
    <Firstname>Peter</Firstname>
    <Lastname>Last</Lastname>
    <Email>email1@example.com</Email>
    <Email>email2@example.com</Email>
 </Person>

在我的应用程序中,我为 XML 生成了一个 XSD,我在其中使用序列来处理元素。这样可以正常工作,但是现在客户想以任何顺序发送数据,所以我想到了使用xs:all,但是maxOccurs只能是1。我知道XSD 1.1 xs:all 能够处理 maxOccurs 更大的。 XSD 1.0 有没有办法处理这个问题?

对于这种特殊情况,您可以在 email

周围添加一个 email-list 包装器
PERSON (minoccurs 1, maxoccurs 1)
   -> Firstname (minoccurs 1, maxoccurs 1)
   -> Lastname (minoccurs 1, maxoccurs 1)
   -> email-list (minoccurs 1, maxoccurs 1)      
      -> email (minoccurs 0, maxoccurs 3)

并且仍然在 XSD 1.0 中使用 xsd:all,但是在一般情况下您将无法使用 XSD 1.0 作为目标而不反映 xsd:all 对您输入语言的类似限制。

因此,正如您对 的回答,您确实应该考虑放宽界面的无序方面。