问题 XML Schema:choice和minOccurs


在下面的这个例子中,

        <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> 1时会发生什么?这是否意味着元素“开始”可以发生3次?


4262
2017-12-21 06:04


起源

+1唯一有效的问题! - InfantPro'Aravind'


答案:


当选择minOccurs> 1时会发生什么?这是否意味着元素“开始”可以发生3次?

<Start> 可以发生3次或更多次! 将minOccurs选择为多于1允许元素集出现多次或不同元素多次出现。

详细说明:


12
2017-12-21 08:35



如果您想允许子元素(如果它们出现)只出现一次,该怎么办? - peco
@peco,在问题的架构中编辑它: <xs:choice minOccurs="0" maxOccurs="1">。可以出现0或1个孩子 - InfantPro'Aravind'
但那么只有一个孩子可以出现吗?不 <Start> <Center> 和 <End>。我想至少其中一个被选中。 - peco
@peco,我不想更新这个答案。我会发布一个新的q并回答。将在这里分享链接.. - InfantPro'Aravind'
InfantPro'Aravind',我在这里发布了一个新问题: stackoverflow.com/questions/35780062/... - peco


在可读的类似regexp的语法中,而不是大量的尖括号,你有

(开始|中心|结束| PI?|功能*){3,}

这意味着括号内的任何内容都是3次或更多次,并且每次都不必是相同的项目。鉴于存在可以替代的替代方案 - PI?和特征* - 在选择中,整个表达式也可以为空,这意味着任何数量的空值(包括零)也将满足约束。

要回答您的具体问题,是的,“开始”可以发生三次(或更多次)。事实上,它可以发生任何次数。


4
2017-12-21 22:56