स्कीमा परिभाषा में <xsd: all> और <xsd: अनुक्रम> के बीच अंतर?


82

मैं xsd:allएक जटिल प्रकार का उपयोग कर रहा हूं । जब मैं मान्य करते समय कोई अनिवार्य तत्व याद करता हूं तो यह सभी तत्वों को दिखाएगा। यह सटीक मिस्ड तत्व प्रदर्शित नहीं करेगा।

लेकिन अगर मैं उपयोग xsd:sequenceकर रहा हूं तो मुझे सटीक मिस्ड तत्व मिल सकता है।

क्या इन दोनों में कोई अंतर है?

xsd:sequence: XML तत्व उसी क्रम में होना चाहिए।

लेकिन xsd:all: XML तत्व कोई भी आदेश हो सकता है।


मौलिक रूप से, इन दोनों के बीच का अंतर वह है जो आपने पहले ही अपने प्रश्न में इंगित किया है। हालाँकि, इन दो कंपोज़िटर्स के उपयोग से जुड़ी बाधाएँ और XSD संलेखन में उन लोगों के निहितार्थ इस बात पर निर्भर करते हैं कि आप किस युक्ति का उल्लेख कर रहे हैं: XSD 1.0 या XSD 1.1?
पेट्रू गार्डिया

3
ऐसा लगता है कि उर प्रश्न इस बारे में है कि अनुक्रम और सभी अलग-अलग तरीके से त्रुटि लिखते हैं जब यह लापता तत्व पाता है। मुझे लगता है कि यह पार्सर तर्क के बारे में है
नासिर

क्या इस सवाल का जवाब पहले से ही है? मैं यह भी जानना चाहूंगा कि क्या मुझे सटीक मिस्ड ऑब्जेक्ट प्राप्त करने के लिए हमेशा <अनुक्रम> का उपयोग करना होगा।
GertV

1
आपको असंतोषजनक उत्तर मिल रहे हैं क्योंकि आपका शीर्षक भ्रामक है: उत्तर सही ढंग से शीर्षक में प्रश्न का उत्तर दे रहे हैं, "सभी" बनाम "अनुक्रम" के अर्थ के बारे में । आपकी टिप्पणियों से ऐसा लगता है कि आपकी वास्तविक समस्या इस बात में अंतर है कि आपके सत्यापनकर्ता ने दो के लिए सत्यापन त्रुटियों की रिपोर्ट कैसे की । यह एक ही बात नहीं है, और किसी भी मामले में यह जानना असंभव है कि आप किस सत्यापनकर्ता का उपयोग कर रहे हैं।
जोकिम लूज

जवाबों:


134

<xsd:all> निर्दिष्ट करता है कि बाल तत्व किसी भी क्रम में दिखाई दे सकते हैं।

<xsd:sequence> निर्दिष्ट बाल तत्व केवल उल्लिखित क्रम में दिखाई दे सकते हैं।

अनुक्रम के लिए उदाहरण:

<xs:element name="compElement">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="ele1" type="xs:string"/>
      <xs:element name="ele2" type="xs:string"/>
      <xs:element name="ele3" type="xs:string"/>
      <xs:element name="ele4" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

यदि आप इस xsd से एक XML बनाते हैं, तो यह कुछ इस तरह दिखाई देगा:

<compElement>
  <ele1>First</ele1>
  <ele2>Second</ele2>
  <ele3>Third</ele3>
  <ele4>Fourth</ele4>
</compElement>

सभी के लिए उदाहरण:

<xs:element name="compElement">
  <xs:complexType>
    <xs:all>
      <xs:element name="ele1" type="xs:string"/>
      <xs:element name="ele2" type="xs:string"/>
      <xs:element name="ele3" type="xs:string"/>
      <xs:element name="ele4" type="xs:string"/>
    </xs:all>
  </xs:complexType>
</xs:element>

यदि आप इस xsd से XML फ़ाइल बनाते हैं तो यह कुछ इस तरह दिख सकता है:

<compElement>
  <ele2>Second</ele2>
  <ele1>First</ele1>
  <ele4>Fourth</ele4>
  <ele3>Third</ele3>
</compElement>

Xsd पर अधिक जानकारी : xsd पर सभी
अधिक जानकारी : अनुक्रम

आशा है कि मैंने आपके प्रश्न का उत्तर दिया।


हाय जोशी .. उर टिप्पणियों के लिए धन्यवाद। लेकिन मेरा सवाल यह है कि जब मैं xsd का उपयोग करते हुए xsd के खिलाफ xml को मान्य करता हूं: तो यह सटीक मिस्ड तत्व नहीं दिखाएगा। उदाहरण के लिए element1 अपेक्षित है। इसके अलावा यह सभी तत्व element1, element2 दिखाएगा। एलीमेंट 3, एक्सपेक्टेड, लेकिन मैंने एलीमेंट 2 और एलीमेंट 3 के लिए मिनोकर्स = 0 दिया
user1679378

2
आप शून्य के रूप में "सभी" तत्व की "मिनीऑर्स" विशेषता निर्दिष्ट कर सकते हैं। अधिक जानकारी के लिए कृपया w3schools.com/schema/el_all.asp
मधुसूदन जोशी

22

अंतर:

  • xsd: सभी - "बाल तत्व किसी भी क्रम में दिखाई दे सकते हैं और प्रत्येक बाल तत्व शून्य या एक बार हो सकता है" (अर्थात, अधिकतम हो सकता है 0 या 1)
  • xsd: क्रम - "बाल तत्वों को एक क्रम में दिखाई देना चाहिए। प्रत्येक बाल तत्व 0 से किसी भी संख्या में हो सकता है" (यानी, अधिकतम सदस्य 0 या कोई भी संख्या या 'अनबाउंड' हो सकते हैं)

यहाँ और यहाँ W3Schools ट्यूटोरियल से ।


4
आपको XSD 1.0 के लिए विशिष्ट होने के रूप में कण की कार्डिनैलिटी पर अवरोधों को योग्य बनाना चाहिए - अन्यथा यह XSD 1.1 के लिए गलत है।
पेट्रू गार्डिया

8
w3schools W3C से संबद्ध नहीं है, इसलिए उनके वेबपेज W3C डॉक्स नहीं हैं।
बेन कंपैनजेन

@kamituel क्या आप यह हवाला दे सकते हैं कि <xs:all>बाल तत्व कितनी बार हो सकता है? मुझे W3C कल्पना में इसके प्रमाण नहीं मिले।
ल्यूक पुप्लेट

2
@kamituel वास्तव में, यह स्कीमा में अपने कंटेनर के भीतर सभी तत्व पर लागू होता है। आप जिस डॉक का हवाला देते हैं, वह 1.1 है जिसमें बाधा नहीं है। वैसे भी, मैं गर्भनिरोधक, "मानव अंग्रेजी" में पाया, जैसा कि आपने अपने उत्तर में, 1.0 सेंट में कुछ पंक्तियाँ चिपकाई थीं।
ल्यूक पुप्लेट

1
"बाल तत्व शून्य हो सकता है या एक बार" वास्तव में गलत है! डिफ़ॉल्ट मान 1 मिनट के लिए है, जिसका अर्थ है कि यह मौजूद होना चाहिए, और यह सभी और अनुक्रम दोनों पर लागू होता है।
PKCS12

2

सभी संकेतक

<all>सूचक निर्दिष्ट करता है कि बच्चे तत्वों किसी भी क्रम में दिखाई दे सकता है, और है कि प्रत्येक बच्चे तत्व केवल एक बार होने चाहिए:

अनुक्रम संकेतक

<sequence>सूचक निर्दिष्ट करता है कि बच्चे तत्वों एक विशेष क्रम में दिखाई देना चाहिए:

संदर्भ लिंक


2
आपको XSD 1.0 के लिए विशिष्ट होने के रूप में कण की कार्डिनैलिटी पर अवरोधों को योग्य बनाना चाहिए - अन्यथा यह XSD 1.1 के लिए गलत है।
पेट्रू गार्डिया

2

स्कीमा केवल परिभाषित करता है कि एक अनुरूप दस्तावेज का गठन क्या है।

गैर-अनुपालन की रिपोर्ट कैसे की जाती है, यह पूरी तरह से सत्यापनकर्ता पर निर्भर है। रिपोर्ट करने से कोई भी सत्यापनकर्ता रोक नहीं सकता है कि कौन से क्षेत्र गायब हैं, लेकिन जाहिर तौर पर आप जो उपयोग करते हैं वह इस मामले में नहीं है।

चाहे वह बग हो या डिज़ाइन द्वारा आपको सत्यापनकर्ता के प्रदाता के साथ चर्चा करनी होगी।


कैसे इस सवाल का जवाब देता है?
सेबेस्टियन हॉफमैन

2
अनुक्रम और सभी के बीच अंतर के बारे में पूछने के लिए प्रश्न प्रतीत होता है, लेकिन अधिक गहन पढ़ने से पता चलता है कि लेखक पहले से ही यह जानता है, लेकिन अपने सत्यापनकर्ता से आउटपुट से हैरान है। कि कैसे।
जोकिम लूज

2

सरल XML उदाहरण:

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

एक्सबॉक्स ऑफ एक्सवो एक्सएमएल (समझाया):

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

यहाँ:

xs: element : एक तत्व को परिभाषित करता है।

xs: all : Denotes बाल तत्व किसी भी क्रम में दिखाई दे सकते हैं।

xs: क्रम : बाल तत्वों का उल्लेख केवल आदेश में दिखाई देता है।

xs: complexType : यह बताता है कि इसमें अन्य तत्व शामिल हैं।

xs: simpleType : यह दर्शाता है कि उनमें अन्य तत्व नहीं हैं।

प्रकार: स्ट्रिंग, दशमलव, पूर्णांक, बूलियन, दिनांक, समय,

  • सरल शब्दों में , xsd विशिष्ट प्रकार के साथ XML डेटा को दर्शाने और मान्य करने का एक और तरीका है।
  • अतिरिक्त विशेषताओं की मदद से, हम कई ऑपरेशन कर सकते हैं।

  • Xsd पर किसी भी कार्य को करना xml की तुलना में सरल है।


0

जब हम टैग के तहत उपयोग करते हैं, तो यह उन सभी तत्वों को इंगित करता है जो उस कॉम्प्लेक्स टाइप में घोषित किए गए हैं, XML दस्तावेज़ में उसी क्रम में दिखाई देते हैं। अन्यथा, आपको एक त्रुटि मिलेगी। के लिए उचित क्रम में तत्वों को निर्दिष्ट करने की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.