在XSD架构中,我知道我可以定义序列或元素,元素的选择或不必按顺序排列的必需集合,但有没有办法说复杂类型应该具有元素约翰或元素杰克,或者没有,只有当元素约翰存在时,元素安娜是否可以在与约翰相同的嵌套级别指定一次(但不是必需的)?
可能的情况:
<John /> | <John /> | <Jack /> | <!-- Neither. -->
<Anna /> | |
如果是,我认为还应该可以说:
<FolderPath /> | <MainFilePath /> | <!-- Neither. -->
| <Sidekick1FilePath /> |
| <SideKick2FilePath /> |
同样,两者都不是必需的,但是一旦指定了文件夹,就不能存在任何文件,并且当指定了所有文件时,不能指定文件夹。不应该只指定一个或两个文件,无论是文件夹还是三个文件,都不能。
答案 0 :(得分:1)
您可以通过嵌套选择和序列来实现此目的。可选内容(&#34;在您的示例中均未&#34;)使用minOccurs="0"
基数完成。基数限制可用于元素声明或集合,如<xs:choice>
下面的样本类型。
<xs:complexType name="something">
<xs:choice minOccurs="0">
<xs:sequence>
<xs:element name="John" type="xs:string" />
<xs:element minOccurs="0" name="Anna" type="xs:string" />
</xs:sequence>
<xs:element name="Jack" type="xs:string" />
</xs:choice>
</xs:complexType>