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

XSD for any order in complex type?

我在生成 XSD 时遇到问题。在我们的应用程序中,用户可以定义自己的数据格式,因此用户可以定义将哪些数据传递给网络服务。在那里他可以定义一个元素是可以出现一次还是经常出现。所以我得到 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 我没有得到正确的解决方案。

我还有什么其他想法吗?

您的设计不必要地复杂。对 FirstnameLastnameBirthday 进行排序,复杂性就会消失。在 XSD 1.0.

中,您将能够使用简单的出现约束来表示您的要求

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