unbounded type significa que nonamespaceschemalocation minoccurs maxoccurs data xml xsd

xml - type - Entendiendo xsd: choice y minOccurs



xsd element types (2)

Aquí están las combinaciones permitidas

Two choices: e1 (1 - 2) + e1 (1 - 2) = e1 x (2 - 4), or e1 (1 - 2) + e2 (0 - 1), or e2 (0 - 1) + e1 (1 - 2), or e2 (0 - 1) + e2 (0 - 1) = e2 (0 - 2) One choice (but no new outcomes): e1 (1-2), or e2 (0-1) e1e1, e1e1e1, e1e1e1e1 e1, e1e2, e1e1e2 e2e1, e2e1e1 empty, e2, e2e2

Tenga en cuenta que la opción [min = 2 max = 2] habría producido el mismo conjunto de combinaciones válidas.

Tengo problemas para comprender el comportamiento del siguiente esquema XML:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="rootnode"> <xsd:complexType> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="2"> <xsd:element name="e1" minOccurs="1" maxOccurs="2"/> <xsd:element name="e2" minOccurs="0" maxOccurs="1"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

Esperaba que al menos una instancia de cualquiera de los elementos <e1> o <e2> fuera necesaria como elemento secundario de <rootnode> . A pesar de mis expectativas, un <rootnode> vacío se validará contra este esquema:

> xmllint --schema test.xsd empty.xml <?xml version="1.0" encoding="UTF-8"?> <rootnode> </rootnode> empty.xml validates

Si cambio el atributo minOccurs del elemento e2 a algo distinto de "0" , obtendré el comportamiento que originalmente esperaba.

  • Parece que la mera ausencia del elemento <e2> cuenta como una ocurrencia de la xsd:choice en mi ejemplo.

  • Si este es el caso, entonces, ¿por qué este número infinito de ocurrencias no viola el límite de maxOccurs en mi xsd:choice ?


Le digo que puede ir a las tiendas al menos una vez y como máximo dos veces, y cada vez que tiene la opción de comprar: puede comprar manzanas (ya sea una o dos manzanas), o puede comprar naranjas (o no naranjas o una naranja).

Es muy posible que decidas ir a las tiendas dos veces y en cada ocasión no comprar naranjas. Así que vuelves con nada.