मान लीजिए के बजाय एक तत्व का विस्तार करने के मैं कुछ स्कीमा है:उपयोग XML स्कीमा एक complexType
<xsd:schema ...>
<xsd:element name="foo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fooElement" type="xs:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
यह कुछ तत्व foo
जो इसके अंदर प्रकार स्ट्रिंग के साथ कुछ तत्व fooElement
है परिभाषित करता है। अब मैं तत्व foo
को तत्व barElement
तत्व का विस्तार करना चाहता हूं और इस एक्सटेंशन को bar
पर कॉल करना चाहता हूं।
चीजों को जटिल करने के लिए, मान लीजिए कि किसी और ने foo
परिभाषित किया है और स्कीमा को बदला नहीं जा सकता है। हालांकि यहां उदाहरण छोटा है, आइए यह भी मान लें कि foo
की सामग्री अधिक जटिल हो सकती है, और यह कि एक नई स्कीमा को परिभाषित करना तत्व fooElement
तत्व की प्रतिलिपि बनाने जितना आसान नहीं है।
प्रभावी रूप से, मैं एक नया स्कीमा निर्धारित करना चाहते हैं:
<xsd:schema xmlns:fns="otherschema" ...>
<xsd:import namespace="otherschema" />
<xsd:element name="bar">
<xsd:complexContent>
<xsd:extension base="fns:foo">
<xsd:sequence>
<xsd:element name="barElement" type="xs:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:element>
</xsd:schema>
दुर्भाग्य <xsd:extension>
के base
विशेषता केवल XSD प्रकार तर्क, नहीं तत्वों स्वीकार करता है। मैं एक तत्व कैसे बढ़ा सकता हूं? (क्या मैं एक तत्व का विस्तार कर सकता हूं?)
महान सवाल है, मैं सटीक एक ही बात करना चाहते हैं - और मैं बदगुमान है कि यह असंभव लगता है कर रहा हूँ। पागल! –