ChatGPT解决这个技术问题 Extra ChatGPT

XML Schema minOccurs / maxOccurs default values

I'm wondering how the XML Schema specification handles these cases:

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

No maxOccurs given -> Is this the cardinality [1..1]?

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

I suppose this is simply invalid?

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

Is this the cardinality [0..2] or [1..2]?

Is there an "official" definition on how the XML Schema spec handles these cases?


j
jasso

The default values for minOccurs and maxOccurs are 1. Thus:

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

cardinality is [1-1] Note: if you specify only minOccurs attribute, it can't be greater than 1, because the default value for maxOccurs is 1.

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

invalid

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

cardinality is [1-2] Note: if you specify only maxOccurs attribute, it can't be smaller than 1, because the default value for minOccurs is 1.

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

is a valid combination which makes the element prohibited.

For more info see http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints


is not working in my case.
In that case, don't define that element in the xsd
k
kjhughes

New, expanded answer to an old, commonly asked question...

Default Values

Occurrence constraints minOccurs and maxOccurs default to 1.

Common Cases Explained

<xsd:element name="A"/>

means A is required and must appear exactly once.

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

means A is optional and may appear at most once.

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

means A is required and may repeat an unlimited number of times.

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

means A is optional and may repeat an unlimited number of times.

See Also

W3C XML Schema Part 0: Primer In general, an element is required to appear when the value of minOccurs is 1 or more. The maximum number of times an element may appear is determined by the value of a maxOccurs attribute in its declaration. This value may be a positive integer such as 41, or the term unbounded to indicate there is no maximum number of occurrences. The default value for both the minOccurs and the maxOccurs attributes is 1. Thus, when an element such as comment is declared without a maxOccurs attribute, the element may not occur more than once. Be sure that if you specify a value for only the minOccurs attribute, it is less than or equal to the default value of maxOccurs, i.e. it is 0 or 1. Similarly, if you specify a value for only the maxOccurs attribute, it must be greater than or equal to the default value of minOccurs, i.e. 1 or more. If both attributes are omitted, the element must appear exactly once.

W3C XML Schema Part 1: Structures Second Edition


D
Daniel Perník

Short answer:

As written in xsd:

<xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
<xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>

If you provide an attribute with number, then the number is boundary. Otherwise attribute should appear exactly once.


关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now