2009-07-22 16 views
26

मैं निम्नलिखित तीन मानों में से कोई एक हो सकता है कि एक क्षेत्र युक्त एक XSD को परिभाषित करने की कोशिश कर अटक कर रहा हूँ:XSD परिभाषा प्रगणित मूल्य

  • ग्रीन
  • लाल
  • ब्लू

अनिवार्य रूप से, मैं स्कीमा स्तर पर एक सख्त गणन परिभाषित करना चाहते हैं।

मेरा पहला प्रयास गलत प्रतीत होता है और मैं "सही" जिस तरह से यह तय करने के लिए के बारे में यकीन नहीं है।

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

एक स्वत: एक्सएमएल जनरेटर का उपयोग करके, यह स्ट्रिंग वस्तुओं के रूप में उन तत्व नाम लेता है:

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

उत्तर

55

आप एक 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

मैं स्ट्रिंग के बजाए, NMTOKEN के विस्तार का उपयोग करने की अनुशंसा करता हूं। इसे और अधिक एक enum के विचार के साथ मिलकर कर रहा है, मुझे लगता है। यह भी अधिक उपकरण के अनुकूल है, विशेष रूप से कोड जनरेटर के साथ। – skaffman

संबंधित मुद्दे