我想知道 XML Schema 规范如何处理这些情况:
<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 规范如何处理这些情况的“官方”定义?
minOccurs
和 maxOccurs
的默认值为 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
对一个老的、常见的问题的新的、扩展的答案......
默认值
出现约束 minOccurs 和 maxOccurs 默认为 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 Part 0: Primer 一般来说,当 minOccurs 的值为 1 或更大时,元素需要出现。元素可能出现的最大次数由其声明中的 maxOccurs 属性的值决定。该值可以是一个正整数,例如 41,或者是无界的术语,表示没有最大出现次数。 minOccurs 和 maxOccurs 属性的默认值都是 1。因此,如果在没有 maxOccurs 属性的情况下声明了诸如注释之类的元素,则该元素可能不会出现多次。确保如果只为 minOccurs 属性指定值,则它小于或等于 maxOccurs 的默认值,即 0 或 1。同样,如果只为 maxOccurs 属性指定值,则必须为大于或等于 minOccurs 的默认值,即 1 或更大。如果两个属性都被省略,则元素必须只出现一次。
W3C XML Schema 第 1 部分:结构第二版
简短的回答:
如xsd中所写:
<xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
<xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
如果您提供带有数字的属性,则数字是边界。否则属性应该只出现一次。