XML Schema's

Introduction to XML Schema’s

HTML में सभी tags predefined होते है। इसलिए HTML documents का structure almost fix होता है। सभी HTML editors और दूसरे software’s इस common structure से परिचित होते है। यही कारण है की HTML editors को पहले से ही HTML programs के लिए optimize किया जा सकता है। क्योंकि HTML में सब कुछ fix और पहले से defined है इसलिए कुछ भी नया unexpected नहीं होता है। जैसे की HTML में सभी tags predefined है इसलिए editors इनको different color में show कर सकते है। और यदि आप कोई दूसरी language भी साथ में यूज़ कर रहे है तो editors HTML code को उससे separate कर सकते है।

XML में tags predefined नहीं होते है। इसलिए XML documents का structure भी fix नहीं होता है। XML editors और दूसरे software’s को document के structure का कोई idea नहीं होता है। XML editors को पहले से ही किसी XML document के लिए optimize नहीं किया जा सकता है। इसका reason ये है की हमे पहले से पता नहीं होता है की developer क्या और कैसे बनाने वाला है।

ये situation editors और language के बीच में एक gap create करती है। इस gap को DTD (Document Type Definition) के द्वारा fill किया जा सकता है। DTD (Document Type Definition) XML document का description होता है। DTD एक XML schema है। एक schema XML document के बारे में कुछ characteristics define करता है जिससे XML editors उस document के बारे में जान सकते है। हालांकि XML में बहुत से schema’s available है लेकिन DTD उनमे सबसे popular और ज्यादा use होता है। इसलिए यँहा पर में आपको सिर्फ DTD के बारे में ही बताऊंगा। आइये इसके बारे में जानने का प्रयास करते है।

DTD (Document Type Definition)

जैसा की मैने आपको ऊपर बताया DTD एक XML document का description होता है। XML editors या दूसरे software’s इस read कर सकते है। DTD को read करके editors खुद को document को process करने के लिए prepare कर सकते है। जैसे की XML processor document को process करने के लिए appropriate changes कर सकता है। और programmer को better experience देने के लिए भी XML document को DTD के द्वारा optimize किया जा सकता है।

उदाहरण के लिए DTD को read करने के बाद कुछ editors XML document के सभी elements की list publish कर सकते है।

DTD का role ये specify करना होता है की कोनसा element document में किस जगह पर आएगा। जैसे की यदि DTD में element

से पहले आ रहा है तो document में भी element पहले ही आएगा। ऐसा नहीं होने पर XML processor error show करता है।

DTD processor को एक particular structure follow करने के लिए विवश कर देता है। जैसे की जिस order में elements DTD में है उसी order में processor उनको देखता है। यदि ऐसा नहीं है तो document reject कर दिया जाता है।

DTD के द्वारा content को elements से separate किया जाता है। जब सभी elements DTD में define कर दिए जाते है तो parser में ये ability आ जाती है की वो content को elements से separate कर सकता है।

DTD के माध्यम से elements की default और fixed values declare की जा सकती है।

इससे पहले की आप DTD declare करना सीखें में आपको बता दूँ की DTD 2 तरह से define की जा सकती है।

  • Internal DTD - इस तरह की DTD को XML document में define किया जाता है। जब document की size small होती है तो उसी में DTD define करना ठीक रहता है।
  • External DTD - इस तरह की DTD को document से separate create किया जाता है। जब document की size large हो तो ये तरीका better होता है।

निचे DTD का common structure दिया गया है। इसे यूज़ करके आप आसानी से DTD define कर सकते है।

<?xml version="1.0">

<!DOCTYPE root-element [

<!ELEMENT element1 (subelement1,subelement2,subelement3) >
<!ELEMENT element2 (subelement-list) >
<!ELEMENT element3 (#PCDATA) >

]>

जैसा की structure में show किया गया है root element को define करने के लिए <!DOCTYPE tag को यूज़ किया जाता है। ये root element को दर्शाता है। बाकि सभी elements इसी tag के angular brackets में define किये जाते है। लेकिन ऐसा नहीं है की आप इसके बाद root element को define नहीं करेंगे। इसके बाद सबसे पहले root element और उसके sub elements को ही declare किया जाता है।

जैसा की आप देख सकते है की एक single element को define करने के लिए <!ELEMENT tag यूज़ किया जाता है। Element का नाम लिखने के बाद आप brackets में sub elements को भी comma से separate करके लिख सकते है।

जब भी किसी element के बाद brackets में #PCDATA लिखा जाता है तो इसका मतलब parser को ये बताना होता है की इस element को parse किया जाना चाहिए। जब #CDATA लिखा जाता है तो उसका मतलब होता है की ये element parse नहीं किया जाना चाहिए।

आइये अब इसे एक उदाहरण से देखते है।

<?xml version="1.0">

<!DOCTYPE person[

<!ELEMENT person (name,age) >
<!ELEMENT name (#PCDATA) >
<!ELEMENT age (#PCDATA) >

]>

<person>
<name> Ram </name>
<age> 24 </age>
</person>

ऊपर दिया गया उदाहरण internal DTD का है। जैसा की आप देख सकते है same ही document में DTD को भी define किया गया है। आइये अब external DTD को एक उदाहरण से समझने का प्रयास करते है।

DTD Document

<?xml version="1.0">

<!DOCTYPE person [
<!ELEMENT person (name,age) >
<!ELEMENT name (#PCDATA) >
<!ELEMENT age (#PCDATA) >

]>

XML Document

<?xml version="1.0">

<!DOCTYPE person SYSTEM "person.dtd">

<person>
<name> Ram </name>
<age> 24 </age>
</person>

जैसा की आप देख रहे की external DTD यूज़ करने के लिए XML document में एक extra line add की गई है। इस line के द्वारा external parser को ये बताया गया है की person.dtd नाम की DTD को यूज़ करना है। External DTD भी internal की तरह ही होती है बस सिर्फ एक line का difference होता है।

Types of XML Documents

XML documents को उनके configuration के according 2 categories में divide किया गया है। आइये इनके बारे में जानने का प्रयास करते है।

Well Formed XML Documents

  • इस तरह के documents XML syntax follow करते है।
  • इस तरह के documents में start और end tags का proper यूज़ होता है।
  • इस तरह के documents में attributes भी properly यूज़ किया जाता है।
  • Well formed documents के साथ DTD यूज़ नहीं जाती है।
  • इस तरह के documents का structure editor को पता नहीं होता है।

Valid XML Documents

  • Valid XML documents XML syntax को follow करते है।
  • इस तरह के documents DTD में describe किये हुए structure को follow करते है।
  • इस तरह के document का structure processor और editor को पता होता है।