web-dev-qa-db-ja.com

XMLスキーマminOccurs / maxOccursのデフォルト値

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仕様がこれらのケースをどのように処理するかについての「公式な」定義はありますか?

198
Chris

minOccursおよびmaxOccursのデフォルト値は1です。

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

基数は[1-1]です。注:onlyminOccurs属性を指定した場合、maxOccursのデフォルト値は1であるため、1より大きくすることはできません。

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

無効

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

基数は[1-2]です。注:onlymaxOccurs属性を指定した場合、minOccursのデフォルト値は1であるため、1より小さくすることはできません。

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

要素を禁止する有効な組み合わせです。

詳細については http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints を参照してください。

312
jasso

古くてよくある質問への新しい拡張された答え...

デフォルト値

  • オカレンス制約minOccursおよびmaxOccursのデフォルトは1です。

説明されている一般的なケース

<xsd:element name="A"/>

A必須であり、出現する必要があることを意味しますちょうど1回


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

Aオプションであり、出現する可能性があることを意味しますせいぜい1回


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

A必須であり、を繰り返すことができることを意味します無制限の回数


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

Aオプションであり、を繰り返すことができることを意味します無制限の回数


参照

  • W3C XMLスキーマパート0:入門編

    一般に、要素はminOccursの値が1以上のときに出現する必要があります。要素が出現する最大回数は、その宣言内のmaxOccurs属性の値によって決まります。この値は、41などの正の整数、または最大出現回数がないことを示すための無制限という用語です。 minOccurs属性とmaxOccurs属性の両方のデフォルト値は1です。したがって、commentなどの要素がmaxOccurs属性なしで宣言されると、その要素は複数回出現することはありません。 minOccurs属性のみに値を指定した場合、その値はデフォルトのmaxOccurs以下、つまり0または1になるようにしてください。同様に、maxOccurs属性のみに値を指定した場合は、 minOccursのデフォルト値以上、つまり1以上。両方の属性を省略した場合、要素は一度だけ出現しなければなりません。

  • W3C XMLスキーマパート1:構造第2版

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

短い答え:

Xsdで書かれているように:

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

属性にnumberを指定した場合、その数は境界です。 それ以外の場合、属性は1回だけ出現します

0
Daniel Perník