在此示例中(来自Exchange Web Services XSD)
<xs:complexType name="ArrayOfAttendeeConflictData">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element minOccurs="1" maxOccurs="1" name="UnknownAttendeeConflictData" nillable="true" type="t:UnknownAttendeeConflictData" />
<xs:element minOccurs="1" maxOccurs="1" name="IndividualAttendeeConflictData" nillable="true" type="t:IndividualAttendeeConflictData" />
<xs:element minOccurs="1" maxOccurs="1" name="TooBigGroupAttendeeConflictData" nillable="true" type="t:TooBigGroupAttendeeConflictData" />
<xs:element minOccurs="1" maxOccurs="1" name="GroupAttendeeConflictData" nillable="true" type="t:GroupAttendeeConflictData" />
</xs:choice>
</xs:complexType>
这是否意味着有效的XML可以按任何顺序包含UnknownAttendeeConflictData
,IndividualAttendeeConflictData
,TooBigGroupAttendeeConflictData
和GroupAttendeeConflictData
,但每个只有一个实例?
答案 0 :(得分:0)
否,maxOccurences="1"
的孩子单独xs:choice
将 禁止{{1}的孩子出现不止一次。
xsd:choice
上的 maxOccurs="unbounded"
表示可以有无限数量的选择。对于每个这样的选择,由于xsd:choice
,XML文档将能够出现一次,但下次由于maxOccurences="1"
而可以重复。因此,列为xsd:choice/@maxOccurences="unbounded"
子项的元素将能够以任何顺序多次出现。
如果作为XSD作者,您希望这些元素以任何顺序出现一次,请考虑使用xsd:choice/@maxOccurences="unbounded"
。另请注意occurrence constraints minOccurs
and maxOccurs
default to 1 anyway,因此不需要明确列出它们。