XML Schema minOccurs/maxOccurs默认值

Chr*_*ris 210 xml xsd

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

<xsd:element minOccurs="1" name="asdf"/>
Run Code Online (Sandbox Code Playgroud)

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

<xsd:element minOccurs="5" maxOccurs="2" name="asdf"/>
Run Code Online (Sandbox Code Playgroud)

我想这简直无效了?

<xsd:element maxOccurs="2" name="asdf"/>
Run Code Online (Sandbox Code Playgroud)

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

是否有关于XML Schema规范如何处理这些情况的"官方"定义?

jas*_*sso 325

为默认值minOccursmaxOccurs是1.因此:

<xsd:element minOccurs="1" name="asdf"/>
Run Code Online (Sandbox Code Playgroud)

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

<xsd:element minOccurs="5" maxOccurs="2" name="asdf"/>
Run Code Online (Sandbox Code Playgroud)

无效

<xsd:element maxOccurs="2" name="asdf"/>
Run Code Online (Sandbox Code Playgroud)

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

<xsd:element minOccurs="0" maxOccurs="0"/>
Run Code Online (Sandbox Code Playgroud)

是一个有效的组合,使元素被禁止.

有关详细信息,请参阅http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints

  • 在这种情况下,请勿在xsd中定义该元素 (4认同)

kjh*_*hes 64

一个旧的,常见问题的新的,扩展的答案......

默认值

  • 发生约束minOccursmaxOccurs 默认为1.

常见案例解释

<xsd:element name="A"/>
Run Code Online (Sandbox Code Playgroud)

手段A必需的,必须只出现一次.


<xsd:element name="A" minOccurs="0"/>
Run Code Online (Sandbox Code Playgroud)

means A可选的,最多可以出现一次.


 <xsd:element name="A" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)

手段A必需的,可以重复无限次.


 <xsd:element name="A" minOccurs="0" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)

手段A可选的,可以重复无限次.


也可以看看

  • W3C XML Schema第0部分:入门

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

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

    <element
      maxOccurs = (nonNegativeInteger | unbounded)  : 1
      minOccurs = nonNegativeInteger : 1
      >
    
    </element>
    
    Run Code Online (Sandbox Code Playgroud)