我有一个应用程序,用户可以使用动态数据设计Web服务。用户可以指定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中是否有办法处理这个问题?
答案 0 :(得分:1)
对于这种特殊情况,您可以在email-list
周围添加email
包装,
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
的限制输入语言。
因此,正如您对previous question regarding XSD and unordered elements的回答,您真的应该考虑放宽界面的无序方面。