2014-06-23 5 views
5

मैं XML स्कीमा अनुक्रम w3schools.com के अनुसार के बारे में उलझन में हूँ,
The sequence element specifies that the child elementsmust appearin a sequence. Each child element can occur from0to any number of times.
तो प्रत्येक तत्व दिखाई देना चाहिए, यह कैसे हो सकता है 0 बार? को तोड़ना नहीं होगा नियम?XSD - अनुक्रम बनाम चुनाव


और एक और बात,

<xs:choice minOccurs="0" maxOccurs="unbounded"> 
    <xs:element name="choiceA" type="xs:string" > 
    <xs:element name="choiceB" type="xs:string" /> 
</xs:choice> 

और इस के बीच अंतर क्या है:

<xs:sequence minOccurs="0" maxOccurs="unbounded"> 
    <xs:element name="choiceA" type="xs:string" > 
    <xs:element name="choiceB" type="xs:string" /> 
</xs:sequence> 

नहीं आप इन दोनों मामलों के लिए प्रत्येक तत्व के किसी भी संख्या रख सकते हैं? क्या कोई अंतर है?

उत्तर

9

अनुक्रम के भीतर तत्व स्कीमा में निर्दिष्ट क्रम में प्रकट होना चाहिए। लेकिन यदि कोई तत्व minOccurs = "0" के साथ परिभाषित किया गया है तो इसे प्रकट नहीं होना चाहिए।

यहां एक ऐसा उदाहरण है जो w3schools.com ट्यूटोरियल है। मैंने पहले नाम तत्व में minOccurs = "0" जोड़ा है।

<xs:element name="employee"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="firstname" type="xs:string" minOccurs="0"/> 
     <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

इस मामले में इस परिभाषा के आधार पर मान्य XML तत्वों

<employee> 
    <firstname>John</firstname> 
    <lastname>Smith</lastname> 
</employee> 

होगा या क्योंकि यह है आप firstname तत्व निकाल एक minOccurs = "0"

<employee> 
    <lastname>Smith</lastname> 
</employee> 

आप नहीं कर सकते हालांकि तत्वों के क्रम मिश्रण। तो यह अमान्य होगा।

<employee> 
    <lastname>Smith</lastname> 
    <firstname>John</firstname> 
</employee> 

चुनाव और अनुक्रम के बीच अंतर के रूप में। पसंद तत्व केवल तत्वों में से एक को प्रकट करने की अनुमति देता है। तो पसंद में विकल्प ए या पसंदबी हो सकता है लेकिन दोनों नहीं। जबकि अनुक्रम को परिभाषित करने का तरीका प्रत्येक अनुक्रम तत्व में एक विकल्प ए और एक विकल्प बी होगा।

+1

धन्यवाद, यह काफी मददगार था। हालांकि, अगर आप किसी विकल्प के लिए maxOccur = "unbounded" सेट करते हैं, तो क्या आपके पास जितना चाहें उतने तत्व नहीं हो सकते? –

+0

परिभाषित विकल्प के साथ: आप अभी भी या तो विकल्प ए या पसंदबी कर सकते हैं लेकिन आप जितने चाहें चुनिंदा तत्व प्राप्त कर सकते हैं। –

2

दुर्भाग्य से पसंद का उपयोग करने का एक और तरीका है - 0 के बिना असंबद्ध होने के मामले में एक ही प्रकार के कई तत्वों के साथ-साथ कोई भी संभव नहीं है।

उदाहरण:

<xs:element name="module"> 
    <xs:complexType> 
     <xs:choice maxOccurs="unbounded" minOccurs="0"> 
     <xs:element ref="active"/> 
     <xs:element ref="debug"/> 
     <xs:element name="name"> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 

निम्न XML एक को स्वीकार करेंगे:

<samba> 
    <active>off</active> 
    <name>Box</name> 
</samba> 

और एक्सएमएल दो निम्नलिखित स्वीकार करेंगे:

<samba> 
    <debug>off</debug> 
    <active>off</active> 
    <debug>off</debug> 
    <name>Box</name> 
    <debug>off</debug> 
</samba> 
संबंधित मुद्दे