एक्सएसडी कॉम्प्लेक्स एलिमेंट्स
एक जटिल तत्व में अन्य तत्व और/या विशेषताएँ होती हैं।
एक जटिल तत्व क्या है?
एक जटिल तत्व एक XML तत्व है जिसमें अन्य तत्व और/या विशेषताएँ होती हैं।
चार प्रकार के जटिल तत्व हैं:
- खाली तत्व
- ऐसे तत्व जिनमें केवल अन्य तत्व होते हैं
- ऐसे तत्व जिनमें केवल टेक्स्ट होता है
- ऐसे तत्व जिनमें अन्य तत्व और पाठ दोनों होते हैं
नोट: इनमें से प्रत्येक तत्व में विशेषताएँ भी हो सकती हैं!
जटिल तत्वों के उदाहरण
एक जटिल एक्सएमएल तत्व, "उत्पाद", जो खाली है:
<product pid="1345"/>
एक जटिल XML तत्व, "कर्मचारी", जिसमें केवल अन्य तत्व होते हैं:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
एक जटिल XML तत्व, "भोजन", जिसमें केवल पाठ होता है:
<food type="dessert">Ice cream</food>
एक जटिल XML तत्व, "विवरण", जिसमें तत्व और पाठ दोनों शामिल हैं:
<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
एक जटिल तत्व को कैसे परिभाषित करें
इस जटिल XML तत्व, "कर्मचारी" को देखें, जिसमें केवल अन्य तत्व शामिल हैं:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
हम XML स्कीमा में एक जटिल तत्व को दो अलग-अलग तरीकों से परिभाषित कर सकते हैं:
1. "कर्मचारी" तत्व को इस तरह से नाम देकर सीधे घोषित किया जा सकता है:
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
यदि आप ऊपर वर्णित विधि का उपयोग करते हैं, तो केवल "कर्मचारी" तत्व निर्दिष्ट जटिल प्रकार का उपयोग कर सकता है। ध्यान दें कि बाल तत्व, "प्रथम नाम" और "अंतिम नाम", <अनुक्रम> संकेतक से घिरे हुए हैं। इसका मतलब यह है कि बाल तत्वों को उसी क्रम में प्रकट होना चाहिए जैसा उन्हें घोषित किया गया है। आप XSD संकेतक अध्याय में संकेतकों के बारे में अधिक जानेंगे।
2. "कर्मचारी" तत्व में एक प्रकार की विशेषता हो सकती है जो उपयोग करने के लिए जटिल प्रकार के नाम को संदर्भित करती है:
<xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
यदि आप ऊपर वर्णित विधि का उपयोग करते हैं, तो कई तत्व एक ही जटिल प्रकार को संदर्भित कर सकते हैं, जैसे:
<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
आप एक जटिल प्रकार को मौजूदा जटिल प्रकार पर भी आधारित कर सकते हैं और कुछ तत्व जोड़ सकते हैं, जैसे:
<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
<xs:complexContent>
<xs:extension base="personinfo">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>