एक्सएमएल - स्कीमा

XML स्कीमा आमतौर पर के रूप में जाना जाता है XML Schema Definition (XSD)। इसका उपयोग XML डेटा की संरचना और सामग्री का वर्णन करने और मान्य करने के लिए किया जाता है। XML स्कीमा तत्वों, विशेषताओं और डेटा प्रकारों को परिभाषित करता है। स्कीमा तत्व Namespaces का समर्थन करता है। यह एक डेटाबेस स्कीमा के समान है जो एक डेटाबेस में डेटा का वर्णन करता है।

वाक्य - विन्यास

आपको अपने XML दस्तावेज़ में एक स्कीमा घोषित करने की आवश्यकता है -

उदाहरण

निम्न उदाहरण दिखाता है कि स्कीमा का उपयोग कैसे किया जाता है -

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = "contact">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "name" type = "xs:string" />
            <xs:element name = "company" type = "xs:string" />
            <xs:element name = "phone" type = "xs:int" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

XML स्कीमा के पीछे मूल विचार यह है कि वे उस वैध प्रारूप का वर्णन करते हैं जो XML दस्तावेज़ ले सकता है।

तत्वों

जैसा कि हमने एक्सएमएल - एलिमेंट्स चैप्टर में देखा , एलीमेंट्स XML डॉक्यूमेंट के बिल्डिंग ब्लॉक्स हैं। एक तत्व को निम्नानुसार XSD में परिभाषित किया जा सकता है -

<xs:element name = "x" type = "y"/>

परिभाषा प्रकार

आप निम्न तरीकों से XML स्कीमा तत्वों को परिभाषित कर सकते हैं -

सरल प्रकार

सरल प्रकार के तत्व का उपयोग केवल पाठ के संदर्भ में किया जाता है। पूर्वनिर्धारित सरल प्रकारों में से कुछ हैं: xs: पूर्णांक, xs: बूलियन, xs: स्ट्रिंग, xs: दिनांक। उदाहरण के लिए -

<xs:element name = "phone_number" type = "xs:int" />

जटिल प्रकार

एक जटिल प्रकार अन्य तत्व परिभाषाओं के लिए एक कंटेनर है। यह आपको निर्दिष्ट करने की अनुमति देता है कि कौन से बाल तत्व एक तत्व शामिल कर सकते हैं और आपके XML दस्तावेजों के भीतर कुछ संरचना प्रदान कर सकते हैं। उदाहरण के लिए -

<xs:element name = "Address">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
         <xs:element name = "phone" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

उपरोक्त उदाहरण में, पता तत्व में बाल तत्व शामिल हैं। यह अन्य के लिए एक कंटेनर है<xs:element> परिभाषाएँ, जो XML दस्तावेज़ में तत्वों की एक सरल पदानुक्रम बनाने की अनुमति देती हैं।

वैश्विक प्रकार

वैश्विक प्रकार के साथ, आप अपने दस्तावेज़ में एकल प्रकार को परिभाषित कर सकते हैं, जिसका उपयोग अन्य सभी संदर्भों द्वारा किया जा सकता है। उदाहरण के लिए, मान लें कि आप कंपनी के विभिन्न पतों के लिए व्यक्ति और कंपनी का सामान्यीकरण करना चाहते हैं । ऐसे मामले में, आप एक सामान्य प्रकार को परिभाषित कर सकते हैं -

<xs:element name = "AddressType">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
      </xs:sequence> 
   </xs:complexType>
</xs:element>

अब हम अपने उदाहरण में इस प्रकार का उपयोग करते हैं -

<xs:element name = "Address1">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone1" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

<xs:element name = "Address2">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone2" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

नाम और कंपनी को दो बार ( एड्रेस 1 के लिए एक बार और एड्रेस 2 के लिए ) परिभाषित करने के बजाय , अब हमारे पास एक ही परिभाषा है। यह रखरखाव को सरल बनाता है, अर्थात, यदि आप पते में "पोस्टकोड" तत्वों को जोड़ने का निर्णय लेते हैं, तो आपको उन्हें केवल एक स्थान पर जोड़ने की आवश्यकता है।

गुण

XSD में विशेषताएँ एक तत्व के भीतर अतिरिक्त जानकारी प्रदान करती हैं। विशेषताएँ नाम और प्रकार की संपत्ति हैं जैसा कि नीचे दिखाया गया है -

<xs:attribute name = "x" type = "y"/>