【问题标题】:XSD choice element with maxOccurs="unbounded" containing elements with maxOccurs="1"具有 maxOccurs="unbounded" 的 XSD 选择元素包含具有 maxOccurs="1" 的元素
【发布时间】:2016-03-14 18:30:20
【问题描述】:

在此示例中(来自 Exchange Web 服务 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,但每个实例只能有一个实例?

【问题讨论】:

    标签: xml xsd exchangewebservices


    【解决方案1】:

    ,单独maxOccurences="1"xs:choice 的孩子将禁止xsd:choice 的孩子出现超过一次。

    maxOccurs="unbounded" on xsd:choice 表示可以有无限数量的选择。对于每一个这样的选择,由于maxOccurences="1",XML 文档将能够出现一次,但由于xsd:choice/@maxOccurences="unbounded",下一次可能会重复出现。因此,那些列为xsd:choice/@maxOccurences="unbounded" 子元素的元素将能够以任意顺序多次出现。

    如果作为 XSD 作者您希望此类元素以任意顺序出现一次,请考虑使用xsd:all。另请注意occurrence constraints minOccurs and maxOccurs default to 1 anyway,因此并不需要明确列出它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 2013-03-19
      • 2014-07-05
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2015-04-26
      相关资源
      最近更新 更多