这是一个XML架构问题.
我知道xsd:all
元素不能出现在序列中(必须是其类型的顶级元素).
也就是说,我不能使用以下内容:
<xsd:complexType name="Application">
<xsd:sequence>
<xsd:element ref="Name"></xsd:element>
<xsd:all>
<xsd:element ref="ADD"></xsd:element>
<xsd:element ref="DELETE"></xsd:element>
</xsd:all>
</xsd:sequence>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何以任何顺序(无序集)声明上面的"ADD"和"DELETE"元素,但仍然确保元素"Name"将是第一个并始终显示.(想想我不仅有"ADD"和"DELETE"但大约有10个或更多无序元素设置的情况:ADD,DELETE,EDIT等......)
重要说明:ADD和DELETE可能仅出现在ONCE,但它们的顺序无关紧要:
<Application>
<NAME>
<DELETE>
<ADD>
</Application>
Run Code Online (Sandbox Code Playgroud)
但不是:
<Application>
<NAME>
<DELETE>
<ADD>
<DELETE> <!--cannot appear twice-->
</Application>
Run Code Online (Sandbox Code Playgroud) 我需要你的帮助来定义XML模式中的特殊情况:包含两个元素的序列:'x'和'y',而:
<x>
元素在序列中可以显示0到未绑定的时间
<y>
元素在序列中可以出现0到1次
<x>
和<y>
位置可以在任何地方 - 也就是说,可以将未绑定的时间作为<x>
元素,然后是单个<y>
元素,然后取消绑定<x>
元素.
这个问题的XML示例:
<x>stuff</x>
<y>stuff</y>
<x>stuff</x>
Run Code Online (Sandbox Code Playgroud)
<y>stuff</y>
<x>stuff</x>
<x>stuff</x>
Run Code Online (Sandbox Code Playgroud)
<x>stuff</x>
<x>stuff</x>
<y>stuff</y>
<x>stuff</x>
Run Code Online (Sandbox Code Playgroud)
谢谢!