XML Namespaces

Introduction to XML Namespaces

XML एक extensible language है। इसका मतलब ये है की आपके document को कोई और programmer भी extend कर सकता है और उसमे required changes करते हुए यूज़ कर सकता है। ये एक बहुत ही अच्छा feature है और सभी programmers इसे पसंद करते है। इस feature के साथ एक समस्या ये है की extend किये गए document के tags आपके document के tags के साथ conflicts कर सकते है। तो क्या आपको दूसरे documents को extend नहीं करना चाहिए।

इस problem का एक solution ये हो सकता है की सभी tags को predefined बनाकर उनको एक global directory में save कर लिए जाये और सभी programmers उन tags को यूज़ करते हुए documents create करे।लेकिन ऐसा करने से XML भी HTML की तरह ही limited हो जाएगी। और W3C नहीं चाहती थी की XML एक limited language बने। इसलिए उन्होंने इस problem का solution निकाला जिसे की XML namespaces कहा जाता है।

Creating XML Namespaces

Namespaces इस problem को solve भी करते है और XML को limited भी नहीं बनाते है। Namespaces में आप पहले namespaces create करते है। Namespace create करते समय आप उसमे prefix और URI जैसी information pass करते है। Namespace को root tag में xmlns attribute define किया जाता है। XMLNS attribute के आगे colon लगाकर prefix define किया जाता है। इसके बाद assignment operator लगाकर namespace का URI pass किया जाता है। इस attribute से आप एक से ज्यादा namespaces भी define कर सकते है। आइये इसे एक उदाहरण से समझने का प्रयास करते है।

<?xml version="1.0">

<person xmlns:pmale="www.hindimepadhai.com/personmale" xmlns:pfmale="www.hindimepadhai.com/personfemale">

<pmale:name>Ram</pmale:name>
<pmale:age>24</pmale:age>

<pfmale:name>Sita</pfmale:name>
<pfmale:age>23</pfmale:age>

</person>

ऊपर दिए गए उदाहरण में हमने male person को और female person को namespaces के द्वारा separate करने की कोशिश की है। जैसा की आप ऊपर देख सकते है example में 2 namespaces create किये गए है और दोनों के structure same है। इन दोनों को URI से differentiate किया जाता है।

Steps to Create XML Namespaces

  1. सबसे पहले xmlns attribute define करिये।
  2. इसके बाद xmlns के आगे colon लगाकर एक prefix define कीजिये। ये वो prefix होता है जिससे आप create किये गए namespace में elements add करते है।
  3. इसके बाद assignment operator लगाकर एक unique domain URI define कीजिये। ये URI namespace को दूसरे namespace से differentiate करता है।

Syntax For Creating XML Namespaces

<?xml version="1.0">
<root-element xmlns:prefix="URI">
<prefix:sub-element>text</prefix:subelement>
</root-element>  

आप चाहे तो एक से अधिक namespaces भी define कर सकते है इसका तरीका निचे दिया जा रहा हैं।

<?xml version="1.0">
<root-elment xmlns:prefix1="URI1"
xmlns:prefix2="URI2">
<prefix1:sub-element>Content </prefix1:sub-element>
<prefix2:sub-element>Content</prefix2:sub-element>
</root-element>

Prefix

Prefixes को अलग अलग namespaces में elements को add करवाने के लिए यूज़ किया जाता है। Prefixes namespaces को uniquely identify नहीं कर सकते है क्योंकि दो developers एक ही नाम के prefixes create कर सकते है। Prefixes का काम सिर्फ इतना होता है की आप इनसे namespaces में elements add कर सकते है।

URI

URI’s namespaces को uniquely identify करने के लिए यूज़ किये जाते है। सबसे बेहतर तरीका होता है की आप अपनी domain name से एक URL create कर ले|