2008-10-15 17 views
26

मैं इसXSD और विरासत

<xsd:complexType name="A"> 
     <xsd:complexContent> 
      <xsd:sequence> 
       <xsd:element name="options"> 
        <xsd:complexType> 
         <xsd:sequence> 
          <xsd:element name="Day"> 
          ... 
          </xsd:element> 
         </xsd:sequence> 
        </xsd:complexType> 
       </xsd:element> 
      </xsd:sequence> 
     </xsd:complexContent> 
</xsd:complexType> 

<xsd:complexType name="B"> 
    <xsd:complexContent> 
     <xsd:extension base="A"> 
     ...What would go here... 
     </xsd:extension> 
    </xsd:complexContent> 
</xsd:complexType> 

की तरह एक XSD तो बुनियादी तौर पर मैं कक्षा एक विकल्पों में से एक दृश्य (उदाहरण के लिए दिन, सप्ताह) करना चाहते है तो मैं बी ए से प्राप्त करना चाहते हैं और सभी की ए के विकल्प और अतिरिक्त 2 या 3 विकल्प जैसे घंटे, सेकंड।

उत्तर

33

यहाँ स्कीमा मैं के साथ आया है:

<?xml version="1.0" encoding="utf-8"?> 
<schema id="inheritance" 
    targetNamespace="http://test.com" 
    elementFormDefault="qualified" 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:test="http://test.com" 
> 
    <element name="Time"> 
     <complexType> 
      <sequence> 
       <element name="First" type="test:A" /> 
       <element name="Second" type="test:B" /> 
      </sequence> 
     </complexType> 
    </element> 

    <complexType name="shortOptions"> 
     <sequence> 
      <element name="Day" /> 
     </sequence> 
    </complexType> 

    <complexType name="longOptions"> 
     <complexContent> 
      <extension base="test:shortOptions"> 
       <sequence> 
        <element name="Week" /> 
       </sequence> 
      </extension> 
     </complexContent> 
    </complexType> 

    <complexType name="A"> 
     <sequence> 
      <element name="options" type="test:shortOptions" /> 
     </sequence> 
    </complexType> 

    <complexType name="B"> 
     <sequence> 
      <element name="options" type="test:longOptions" /> 
     </sequence> 
    </complexType> 

</schema> 

कौन इस एक्सएमएल फिट करने के लिए लगता है:

<?xml version="1.0" encoding="utf-8" ?> 
<Time xmlns="http://test.com"> 
    <First> 
     <options> 
      <Day>Today</Day> 
     </options> 
    </First> 
    <Second> 
     <options> 
      <Day>Tomorrow</Day> 
      <Week>This Week</Week> 
     </options> 
    </Second> 
</Time> 
7

सीधे शब्दों में आवश्यक तत्वों के साथ एक <xsd:sequence> जोड़ें:

<xsd:complexType name="B"> 
    <xsd:complexContent> 
     <xsd:extension base="A"> 
      <xsd:sequence> 
       <xsd:element name="Hours"> 
       ... 
       </xsd:element> 
      </xsd:sequence> 
     </xsd:extension> 
    </xsd:complexContent> 
</xsd:complexType> 
0

आप विकल्पों के लिए एक प्रकार है, जो घंटे आदि शामिल हैं बनाने की आवश्यकता होगी, और फिर csgero के जवाब में घंटे के बजाय विकल्प जोड़ें।

1

फिर आप एक्सटेंशन का उपयोग, अपने आप की एक जटिल प्रकार के रूप में विकल्प को परिभाषित करने की आवश्यकता होगी उस पर एक नया विकल्प जटिल प्रकार बनाने और विस्तार के बजाय प्रतिस्थापन का उपयोग करने के लिए।

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