2009-07-22 20 views
26

aşağıdaki üç değerden sadece birine sahip olabilen bir alanı içeren bir XSD tanımlamak için çalışıyor şaşırıp:XSD tanımı Numaralandırılıyor Değer

  • Yeşil
  • Kırmızı
  • Mavi

Temel olarak, Şema düzeyinde katı bir numaralandırma tanımlamak istiyorum.

İlk denemem yanlış görünüyor ve düzeltmenin "doğru" yolundan emin değilim. Otomatik XML jeneratör kullanarak

<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> 

, bu dize nesneler olarak bu öğe adları davranır:

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

cevap

55

Bir simpleType bağlamında bir numaralandırma tanımlayabilirsiniz.

<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

Dize yerine, NMTOKEN uzantısı kullanmanız önerilir. Sanırım bir enum fikriyle ilgili. Özellikle kod jeneratörleri ile daha fazla araç dostu. – skaffman