在下面的示例中,
<xs:complexType>
<xs:choice minOccurs="3" maxOccurs="unbounded">
<xs:element ref="Start"/>
<xs:element ref="Center"/>
<xs:element ref="End"/>
<xs:element ref="PI" minOccurs="0"/>
<xs:element ref="Feature" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
当选择minOccurs&gt;时会发生什么? 1?这是否意味着元素“开始”可以发生3次?
答案 0 :(得分:12)
当选择minOccurs&gt;时会发生什么? 1?这是否意味着元素“开始”可以发生3次?
是<Start>
可能会发生3次或更多次!选择minOccurs为多于1允许元素集出现多次或不同元素多次出现。
详细说明:
在上面的示例中,您已将minOccurs应用为<Choice>
的3和maxOccurs为无界!这意味着.. <Choice>
下列出的子元素,其中任意三个或重复三次的任何标记都应出现在其父级下面!示例XML列在下面:
让我们假设这些标记集出现在名为<parent>
的节点下,然后:
<parent>
<Start>Start1</Start>
<Center>Center1</Center>
<End>End1</End>
</parent>
--------或--------
<parent>
<Center>Start1</Center>
<Center>Center1</Center>
<Feature>End1</Feature>
</parent>
--------或--------
<parent>
<Start>Start1</Start>
<Start>Start1</Start>
<Start>Start1</Start>
<Start>Start1</Start>
</parent>
以上所有组合均有效!
但是你还为'PI'和'功能'定义了minOccurs =“0”..
此添加会导致Validator传递不包含子元素的父级。 ie:
<parent>
</parent>
如果从这两个元素中删除minOccurs,则验证会强制您包含最少3个标记以包含在父元素下。
maxOccurs="unbounded"
元素的Feature
也没用!如果您添加或取消它,行为将不会改变。
答案 1 :(得分:4)
在可读的类似regexp的语法中,而不是大量的尖括号,你有
(开始|中心|结束| PI?|功能*){3,}
表示括号内的任何内容3次或更多次,并且每次不必是相同的项目。鉴于存在可以替代的替代方案 - PI?和特征* - 在选择中,整个表达式也可以为空,这意味着任何数量的空值(包括零)也将满足约束。
要回答您的具体问题,是的,&#39;开始&#39;可以发生三次(或更多次)。事实上,它可以发生任何次数。