XSD适用于复杂类型的任何订单?

时间:2016-06-16 09:40:32

标签: xml xsd

我在生成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甚至不对,因为我无法使用maxoccursxsd:choice我没有得到正确的解决方案。

我能做什么其他的想法?

1 个答案:

答案 0 :(得分:1)

你的设计是不必要的复杂。对FirstnameLastnameBirthday进行排序,复杂性全部消失。您可以在XSD 1.0中使用简单的出现约束来表示您的要求。

如果您坚持允许任何订购,您将无法在XSD 1.0中表达您的要求。您必须使用XSD 1.1并在WaitForSoap上编写断言,而不是对其子级进行更自然的minOccursmaxOccurs约束。