包含maxOccurs =“1”的maxOccurs =“unbounded”的XSD选择元素

时间:2016-03-14 18:30:20

标签: xml xsd exchangewebservices

在此示例中(来自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可以按任何顺序包含UnknownAttendeeConflictDataIndividualAttendeeConflictDataTooBigGroupAttendeeConflictDataGroupAttendeeConflictData,但每个只有一个实例?

1 个答案:

答案 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,因此不需要明确列出它们。