Estoy definiendo un elemento de usuario con XSD. Para este ejemplo, un usuario tiene un nombre, correo electrónico y una o más nacionalidades. Lo he intentado:Camino medio entre XSD todo y secuencia XSD
<xs:all>
<xs:element name="name" blabla />
<xs:element name="email" blabla />
<xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
</xs:all>
Sin embargo, eso es ilegal. Aparentemente, los elementos dentro de un "Todo" solo pueden aparecer una vez (o no aparecer). Podría solucionar esto cambiando el Todo a una secuencia, pero las personas tendrían que ingresar las propiedades en el orden exacto, lo cual realmente no me importa.
¿Hay una combinación de estos dos disponibles? No de acuerdo con http://www.w3schools.com/Schema/schema_complex_indicators.asp, pero tal vez esté oculto (o mis ojos inexpertos no lo vean).
Por intuición, también probé:
<xs:all>
<xs:element name="name" blabla />
<xs:element name="email" blabla />
<xs:sequence>
<xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:all>
Pero eso es por desgracia no válido.
Aquí es la corriente, real, pieza de XSD:
<!-- user -->
<xs:complexType name="user">
<xs:sequence>
<xs:element name="firstname" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="appendix" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="lastname" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="address" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="zipcode" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="city" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="username" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="email" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="country" type="country" minOccurs="1" maxOccurs="1"/>
<xs:element name="nationality" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
¿Cómo utiliza, promulga, opta, crea, encubierta, migra, instancia, encuentra o realiza XSD 1.1? –
¿Podría citar la diferencia entre XSD 1.1 y XSD 1.0 que lo hace válido en 1.1 y no válido en 1.0? –
En la especificación 1.1 no veo ninguna mención de ninguna restricción que haga que el XML del OP sea ilegal. Tristemente, no puedo encontrar la especificación 1.0 para poder comparar. Supongo que tendrías que verificar la versión en las librerías que analizará tu XML/XSD para saber si necesitas cualquiera de los trucos a continuación. –