我在生成XSD时遇到问题。在我们的应用程序中,用户可以定义自己的数据格式,以便用户可以定义他将哪些数据传递给Web服务。如果元素可以出现一次或经常出现,他可以在那里定义。所以我得到这样的XML:
<WaitForSoap>
<Lastname>last</Lastname>
<Firstname>first</Firstname>
<Birthday>hallo</Birthday>
<Firstname>first</Firstname>
<Firstname>first1</Firstname>
</WaitForSoap>
所以我现在想要的是一个XSD,它确保,姓氏,生日发生一次,名字发生3次。 WaitForSoap
元素中元素的顺序应该是任何顺序。所以xsd:sequence
在这里使用是不对的; xsd:all
甚至不对,因为我无法使用maxoccurs
。 xsd:choice
我没有得到正确的解决方案。
我能做什么其他的想法?
答案 0 :(得分:1)
你的设计是不必要的复杂。对Firstname
,Lastname
和Birthday
进行排序,复杂性全部消失。您可以在XSD 1.0中使用简单的出现约束来表示您的要求。
如果您坚持允许任何订购,您将无法在XSD 1.0中表达您的要求。您必须使用XSD 1.1并在WaitForSoap
上编写断言,而不是对其子级进行更自然的minOccurs
和maxOccurs
约束。