允许动态 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
对您输入语言的类似限制。
因此,正如您对 的回答,您确实应该考虑放宽界面的无序方面。
我有一个应用程序,用户可以在其中设计带有动态数据的 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
对您输入语言的类似限制。
因此,正如您对