2009-07-22 15 views
26

estoy atascado tratando de definir un XSD contiene un campo que puede tener sólo uno de los tres valores siguientes:XSD Definición de Valor enumerado

  • verde
  • Rojo
  • azul

Básicamente, quiero definir una enumeración estricta en el nivel de Esquema.

Mi primer intento parece incorrecto y no estoy seguro de la forma "correcta" de solucionarlo.

<xs:element name="color"> 
    <xs:complexType> 
     <xs:choice> 
      <xs:element name="green"/> 
      <xs:element name="red"/> 
      <xs:element name="blue"/> 
     </xs:choice> 
    </xs:complexType> 
</xs:element> 

Mediante el uso de un generador automático de XML, trata a los nombres de los elementos como objetos de cadena:

<xs0:color> 
    <xs0:green>text</xs0:green> 
</xs0:color> 

Respuesta

55

Puede definir una enumeración dentro del contexto de una simpleType.

<xs:simpleType name="color" final="restriction" > 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="green" /> 
     <xs:enumeration value="red" /> 
     <xs:enumeration value="blue" /> 
    </xs:restriction> 
</xs:simpleType> 
<xs:element name="SomeElement"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Color" type="color" /> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
+5

Recomendaría usar una extensión de NMTOKEN, en lugar de String. Creo que consiste más en la idea de una enumeración. También es más amigable para herramientas, particularmente con generadores de código. – skaffman

Cuestiones relacionadas