XML Schema minOccurs / maxOccurs默认值

我想知道XML模式规范如何处理这些情况:

<xsd:element minOccurs="1" name="asdf"/> 

没有maxOccurs给出 – >这是基数[1..1]?

 <xsd:element minOccurs="5" maxOccurs="2" name="asdf"/> 

我想这简直是无效的?

 <xsd:element maxOccurs="2" name="asdf"/> 

这是基数[0..2]还是[1..2]?

有关XML Schema规范如何处理这些情况的“官方”定义?

minOccursmaxOccurs的默认值是1.因此:

 <xsd:element minOccurs="1" name="asdf"/> 

基数为[1-1]注意:如果指定minOccurs属性,则不能大于1,因为maxOccurs的默认值为1。

 <xsd:element minOccurs="5" maxOccurs="2" name="asdf"/> 

无效

 <xsd:element maxOccurs="2" name="asdf"/> 

基数为[1-2]注意:如果指定maxOccurs属性,则不能小于1,因为minOccurs的默认值为1。

 <xsd:element minOccurs="0" maxOccurs="0"/> 

是使元素被禁止的有效组合。

欲了解更多信息,请参阅http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints

对一个常见的老问题进行新的扩展答案…

默认值

  • 发生约束minOccursmaxOccurs 默认为1

常见病例解释

 <xsd:element name="A"/> 

意味着A必需的,并且必须恰好出现一次


 <xsd:element name="A" minOccurs="0"/> 

意味着A可选的 ,可能最多只出现一次


  <xsd:element name="A" maxOccurs="unbounded"/> 

意味着A必需的并且可以重复无限次数


  <xsd:element name="A" minOccurs="0" maxOccurs="unbounded"/> 

意味着A可选的并且可以重复无限次数


也可以看看

  • W3C XML Schema部分0:入门

    通常,当minOccurs的值是1或更大时,需要显示一个元素。 元素出现的最大次数由其声明中的maxOccurs属性的值决定。 这个值可能是一个正整数,例如41,或者这个术语是无界的,表示没有最大的出现次数。 minOccurs和maxOccurs属性的默认值是1.因此,当一个元素(如comment)被声明为没有maxOccurs属性时,该元素可能不会出现一次以上。 确保只为minOccurs属性指定一个值,它小于或等于maxOccurs的默认值,即它是0或1.同样,如果只为maxOccurs属性指定值,则它必须是大于或等于minOccurs的默认值,即1或更多。 如果两个属性均被省略,则该元素必须只出现一次。

  • W3C XML Schema第1部分:结构第二版

     <element maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 > </element>