मैं एक xml स्कीमा कि एक कार के लिए बुनियादी क्षेत्रों में परिभाषित किया है में एक XML तत्व बदलना:ओवरराइड करना और बेस प्रकार
<xs:simpleType name="FuelType">
<xs:restriction base="xs:string">
<xs:enumeration value="Regular Unleaded"/>
<xs:enumeration value="High Octane"/>
<xs:enumeration value="Leaded"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CarType">
<xs:sequence>
<xs:element name="Make" type="xs:string"/>
<xs:element name="Model" type="xs:string"/>
<xs:element name="Cylinders" type="xs:int"/>
<xs:element name="Fuel" type="FuelType"/>
</xs:sequence>
</xs:complexType>
अब मान लीजिए कि मैं एक होंडा कार प्रकार है कि तक फैली हुई है निर्धारित करना चाहते हैं CarType लेकिन यह ईंधनके लिए खुद परिभाषा है गया है:
<xs:simpleType name="HondaFuelType">
<xs:restriction base="xs:string">
<xs:enumeration value="85"/>
<xs:enumeration value="87"/>
<xs:enumeration value="89"/>
<xs:enumeration value="91"/>
<xs:enumeration value="93"/>
<xs:enumeration value="95"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="HondaCarType">
<xs:complexContent>
<xs:extension base="car:CarType">
<xs:sequence>
<xs:element name="Fuel" type="HondaFuelType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
CarType विस्तार मुझे वह सब कुछ मिल जाता है जो मैं चाहता हूं हालांकि स्कीमा अब ईंधन (विभिन्न नामस्थानों में) नामक दो तत्वों की अनुमति देता है।
<HondaCar xmlns="HondaNS" xmlns:car="CarNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="HondaNS D:\Development\Temp\honda.xsd">
<car:Make/>
<car:Model/>
<car:Cylinders>4</car:Cylinders>
<car:Fuel>High Octane</car:Fuel>
<Fuel>87</Fuel>
</HondaCar>
हालांकि यह (कम से कम मेरे लिए) पूरी तरह से वैध Xml यह तार्किक मतलब नहीं है है: यहाँ एक नमूना Xml उदाहरण है। मेरा इरादा बेस प्रकार का विस्तार करना था, ओवरराइड * ईंधन * केवल होंडाफ्यूल टाइप में परिभाषित मानों को अनुमति देने के लिए।
वहाँ एक रास्ता मैं ओवरराइड या मुखौटा कर सकते हैं मेरी विस्तारित प्रकार में आधार ईंधन तत्व है?