2009-05-19 16 views
5

एक्सएमएल स्कीमा "घटना संकेतक" निर्दिष्ट करता है (अधिकतम निष्कर्ष, न्यूनतम निष्कर्ष)। क्या कोई "सर्वोत्तम अभ्यास" है जिसमें तत्व (xsd: element, xsd: अनुक्रम या xsd: सभी) इन संकेतकों का उपयोग किया जाना चाहिए?एक्सएसडी घटना संकेतक का उपयोग

उदाहरण:

या तो

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="X" type="xsd:token" minOccurs="1" maxOccurs="unbounded" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

या

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded"> 
      <xsd:element name="X" type="xsd:token" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

मैं पर पहुंचने के लिए करना चाहते हैं:

 

<XList> 
    <X>First</X> 
    <X>Second</X> 
    <X>Third</X> 
    <X>Fourth</X> 
    <X>Fifth</X> 
... 
</XList> 
 

उत्तर

6

मुझे खुद पता चला।

मेरे उदाहरणों के बीच का अंतर पहली नज़र में बहुत स्पष्ट नहीं है, लेकिन यदि उदाहरण थोड़ा अधिक जटिल था तो यह समझ में आया होगा।

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="1" maxOccurs="1"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="1"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

को

 

<XList> 
    <X>Only X</X> 
    <Y>Only Y</Y> 
</XList> 
 

जबकि

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

 

<XList> 
    <X>First X</X> 
    <X>Second X</X> 
    <X>Third X</X> 
    ... 
    <Y>First Y</Y> 
    <Y>Second Y</Y> 
    ... 
</XList> 
 
की ओर जाता है की ओर जाता है:

निम्न एक्सटेंशन मतभेद स्पष्ट किया

और

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded" > 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="2" maxOccurs="2"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="1"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

 

<XList> 
    <X>First X</X> 
    <X>Second X</X> 
    <Y>First Y</Y> 
    <X>Third X</X> 
    <X>Fourth X</X> 
    <Y>Second Y</Y> 
    ... 
</XList> 
 

और

की ओर जाता है
 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded" > 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

 

<XList> 
    <X>First X</X> 
    <X>Second X</X> 
    <X>Third X</X> 
    ... 
    <Y>First Y</Y> 
    <Y>Second Y</Y> 
    ... 
    <X>Fourth X</X> 
    <X>Fifth X</X> 
    <X>Sixth X</X> 
    ... 
    <Y>Third Y</Y> 
    <Y>Fourth Y</Y> 
    ... 
</XList> 
 
की ओर जाता है
0

अपने अनुक्रम केवल एक ही बच्चा शामिल है, तो मैं इसे लगता है ज्यादा नहीं करता है प्रभावी अंतर मैं इसे xsd: element पर रखूंगा, हालांकि: यह वह जगह है जहां अनुक्रम में एक से अधिक तत्व होने पर मैं उन्हें सामान्य रूप से रखता हूं।

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