2010-03-03 8 views
16

की ओर जाता है मैं एक साधारण एक्सएसडी पसंद निर्माण करने की कोशिश कर रहा हूं, जिसमें से एक या दो संदर्भित तत्वों को अनुमति दी जा रही है, लेकिन कोई भी नहीं। निर्माण नीचे जैसा ही है लेकिन मुझे अस्पष्टता त्रुटि मिल रही है। मैं क्या खो रहा हूँ?एक्सएसडी "एक या दोनों" पसंद निर्माण संदिग्ध सामग्री मॉडल

<xs:schema xmlns:xs="..."> 
    <xs:element name="Number" type="xs:integer"/> 
    <xs:element name="Text" type="xs:string"/> 
    <xs:element name="RootStructure"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:choice> 
      <xs:sequence> 
      <xs:element ref="Number"/> 
      <xs:element ref="Text"/> 
      </xs:sequence> 
      <xs:element ref="Number"/> 
      <xs:element ref="Text"/> 
     </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

उत्तर

30

यह करने के लिए हमेशा की तरह यह है:

<xs:schema xmlns:xs="..."> 
    <xs:element name="Number" type="xs:integer"/> 
    <xs:element name="Text" type="xs:string"/> 
    <xs:element name="RootStructure"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:choice> 
      <xs:sequence> 
      <xs:element ref="Number"/> 
      <xs:element ref="Text" minOccurs="0"/> 
      </xs:sequence> 
      <xs:element ref="Text"/> 
     </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
0

कुछ अतिरिक्त संकेत, यदि आप एक से अधिक तत्वों से जुड़ा हुआ है और आप तत्वों में से एक बंडल या अन्य बंडल, या दोनों चाहते हैं, आप कर सकते हैं इसे इस तरह करें:

<xsd:complexType name="ComplexTypeName"> 
    <xsd:choice> 
     <xsd:sequence> 
      <xsd:element name="theElement" /> 
      <xsd:element name="theElementIsFlagged" /> 
      <xsd:choice> 
       <xsd:sequence> 
<!-- note the empty sequence block --> 
       </xsd:sequence> 
       <xsd:sequence> 
        <xsd:element name="theOtherElement" /> 
        <xsd:element name="theOtherElementIsFlagged" /> 
       </xsd:sequence> 
      </xsd:choice> 
     </xsd:sequence> 
     <xsd:sequence> 
      <xsd:element name="theOtherElement" /> 
      <xsd:element name="theOtherElementIsFlagged" /> 
     </xsd:sequence> 
    </xsd:choice> 
</xsd:complexType> 

बस यदि आप में से कुछ एक ही मुद्दे पर टक्कर मारते हैं !!

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