2009-05-31 11 views
5

मैं जो करना चाहता हूं वह एक एक्सएमएल स्कीमा में एक अनुक्रम तत्व बना रहा है जैसे कि सामग्री क्रम में होनी चाहिए, लेकिन सभी उपस्थित नहीं हो सकते हैं। उदाहरण के लिए, स्कीमा कुछ इस तरह होगा:आप वैकल्पिक वस्तुओं का अनुक्रम कैसे बना सकते हैं जो एक्सएमएल स्कीमा में क्रमशः होना चाहिए?

<xs:element name="rods" maxOccurs="1" minOccurs="1"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="green" type="xs:positiveInteger" /> 
    <xs:element name="white" type="xs:positiveInteger" /> 
    <xs:element name="blue" type="xs:positiveInteger" /> 
    <xs:element name="yellow" type="xs:positiveInteger" /> 
    <xs:element name="red" type="xs:positiveInteger" /> 
    <xs:element name="tan" type="xs:positiveInteger" /> 
    <xs:element name="gray" type="xs:positiveInteger" /> 
    <xs:element name="black" type="xs:positiveInteger" /> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

और इस तरह एक्सएमएल की अनुमति होगी:

निम्न उदाहरण से पता चलता है:

<rods> 
<green>142</green> 
<white>34</white> 
<gray>65</gray> 
</rods> 

MSDN यह है कि इसके बारे में कहने के लिए एक तत्व (zooAnimals) जिसमें अनुक्रम तत्व में निम्न तत्वों, हाथी, भालू, जिराफ, शून्य या अधिक हो सकते हैं।

<xs:element name="zooAnimals"> 
     <xs:complexType> 
      <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="elephant"/> 
       <xs:element name="bear"/> 
       <xs:element name="giraffe"/> 
      </xs:sequence> 
     </xs:complexType> 
</xs:element> 

W3Schools ही पता चलता है। हालांकि, दृश्य स्टूडियो और ऑनलाइन सत्यापन सेवा दोनों को सुझाव नहीं दिया जाता है। यहाँ

<xs:element name="rods" maxOccurs="1" minOccurs="1"> 
<xs:complexType> 
    <xs:sequence minOccurs="0" maxOccurs="1"> 
    <xs:element name="green" type="xs:positiveInteger" /> 
    <xs:element name="white" type="xs:positiveInteger" /> 
    <xs:element name="blue" type="xs:positiveInteger" /> 
    <xs:element name="yellow" type="xs:positiveInteger" /> 
    <xs:element name="red" type="xs:positiveInteger" /> 
    <xs:element name="tan" type="xs:positiveInteger" /> 
    <xs:element name="gray" type="xs:positiveInteger" /> 
    <xs:element name="black" type="xs:positiveInteger" /> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 

और एक्सएमएल है::, "नीले" उम्मीद,

<rods> 
<green>142</green> 
<white>34</white> 
<gray>65</gray> 
</rods> 

विजुअल स्टूडियो 2005 का दावा है कि "ग्रे" अमान्य है तो स्पष्ट रूप से

यहाँ मैं इस समय है यह बच्चों के सभी चाहता है

धन्यवाद,

एरिक

+0

आपकी स्कीमा परिभाषा मेरे लिए अच्छी लगती है। विजुअल स्टूडियो और ऑनलाइन सत्यापनकर्ताओं के परिणाम/प्रतिक्रिया साझा करने के लिए देखभाल? –

+0

मैंने परिणाम – Eric

उत्तर

10
<xs:element name="rods"> 
    <xs:complexType> 
     <xs:sequence> 
       <xs:element minOccurs="0" name="green" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="white" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="blue" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="yellow" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="red" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="tan" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="gray" type="xs:positiveInteger" /> 
       <xs:element minOccurs="0" name="black" type="xs:positiveInteger" /> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
+0

पर पोस्ट किया है धन्यवाद, यह काम करता है। MinOccurs = "0" टाइपिंग से बचने का कोई तरीका नहीं है, है ना? मुझे आश्चर्य है कि डब्ल्यू 3 स्कूल्स और एमएसडीएन क्यों कहते हैं कि दूसरा कोड काम करता है, जब ऐसा नहीं होता है? – Eric

+1

@Eric वे दोनों अनुक्रम हैं, लेकिन आप जो महत्वपूर्ण विवरण चाहते हैं उसमें भिन्न हैं। उनका मतलब समूह के शून्य या दोहराव के बहुत सारे हैं, लेकिन आप चाहते थे कि प्रत्येक व्यक्ति शून्य या एक हो। क्या आप रेगेक्स से परिचित हैं? एक्सएमएल स्कीमा बहुत समान है। उनकी विधि की तरह है (ई जी बी) *, लेकिन आप क्या चाहते हैं ई की तरह है? जी? ख? – 13ren

+0

आह ... गलत तरीके से व्याख्या की जानी चाहिए कि एमएसडीएन क्या कह रहा था – Eric