web-dev-qa-db-fra.com

Schéma XML valeurs par défaut de minOccurs/maxOccurs

Je me demande comment la spécification XML Schema traite ces cas:

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

Aucun maxOccurs n'est donné -> S'agit-il de la cardinalité [1..1]?

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

Je suppose que c'est tout simplement invalide?

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

Est-ce la cardinalité [0..2] ou [1..2]?

Existe-t-il une définition "officielle" sur la façon dont la spécification XML Schema traite ces cas?

191
Chris

Les valeurs par défaut de minOccurs et maxOccurs sont 1. Ainsi:

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

la cardinalité est [1-1] Remarque: si vous spécifiez l'attribut minOccurs uniquement, il ne peut pas être supérieur à 1, car la valeur par défaut de maxOccurs est 1.

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

invalide

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

la cardinalité est [1-2] Remarque: si vous spécifiez l'attribut maxOccurs uniquement, il ne peut pas être inférieur à 1, car la valeur par défaut de minOccurs est 1.

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

est une combinaison valide qui rend l'élément interdit.

Pour plus d'informations, voir http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints

305
jasso

_ {Nouvelle réponse élargie à une ancienne question fréquemment posée ...} _

Les valeurs par défaut

  • Contraintes d'occurrence minOccurs et maxOccursdefault à 1.

Cas communs expliqués

<xsd:element name="A"/>

signifie que A est obligatoire et doit apparaître exactement une fois.


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

signifie que A est facultatif et peut apparaître au plus une fois.


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

signifie que A est obligatoire et peut répéter un nombre illimité de fois.


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

signifie que A est facultatif et peut répéter un nombre illimité de fois.


Voir également

  • Schéma XML W3C, partie 0: introduction

    En général, un élément doit apparaître lorsque la valeur de minOccurs est égal à 1 ou plus. Le nombre maximum de fois qu'un élément peut Apparaître est déterminé par la valeur d'un attribut maxOccurs dans son déclaration. Cette valeur peut être un entier positif tel que 41 ou le terme non limité pour indiquer qu'il n'y a pas de nombre maximum d'occurrences . La valeur par défaut pour les attributs minOccurs et maxOccurs est 1. Ainsi, lorsqu'un élément tel que comment est déclaré sans attribut maxOccurs, l’élément ne peut apparaître plus d’une fois. Etre sur que si vous spécifiez une valeur uniquement pour l'attribut minOccurs, il s'agit de inférieur ou égal à la valeur par défaut de maxOccurs, c’est-à-dire 0 ou 1 . De même, si vous spécifiez une valeur pour l'attribut maxOccurs uniquement, elle doit être supérieure ou égale à la valeur par défaut de minOccurs, c'est-à-dire 1 ou plus. Si les deux attributs sont omis, l'élément doit apparaître exactement une fois.

  • Schéma XML du W3C Partie 1: Structures Deuxième édition

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

Réponse courte:

Comme écrit dans xsd:

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

Si vous fournissez un attribut avec un nombre, le nombre est une limite. Sinon, l'attribut devrait apparaître exactement une fois .

0
Daniel Perník