एक्सएमएल गुण
XML तत्वों में HTML की तरह ही विशेषताएँ हो सकती हैं।
विशेषताओं को एक विशिष्ट तत्व से संबंधित डेटा रखने के लिए डिज़ाइन किया गया है।
एक्सएमएल विशेषताओं को उद्धृत किया जाना चाहिए
विशेषता मान हमेशा उद्धृत किए जाने चाहिए। एकल या दोहरे उद्धरण चिह्नों का उपयोग किया जा सकता है।
किसी व्यक्ति के लिंग के लिए <व्यक्ति> तत्व को इस प्रकार लिखा जा सकता है:
<person gender="female">
या इस तरह:
<person gender='female'>
यदि विशेषता मान में ही दोहरे उद्धरण हैं, तो आप एकल उद्धरणों का उपयोग कर सकते हैं, जैसे इस उदाहरण में:
<gangster name='George "Shotgun" Ziegler'>
या आप चरित्र संस्थाओं का उपयोग कर सकते हैं:
<gangster name="George "Shotgun" Ziegler">
एक्सएमएल तत्व बनाम गुण
इन दो उदाहरणों पर एक नज़र डालें:
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
पहले उदाहरण में, लिंग एक विशेषता है। अंतिम उदाहरण में, लिंग एक तत्व है। दोनों उदाहरण समान जानकारी प्रदान करते हैं।
एक्सएमएल में एट्रिब्यूट का इस्तेमाल कब करना है या एलिमेंट का इस्तेमाल कब करना है, इस बारे में कोई नियम नहीं है।
मेरा पसंदीदा तरीका
निम्नलिखित तीन XML दस्तावेज़ों में बिल्कुल समान जानकारी है:
पहले उदाहरण में दिनांक विशेषता का उपयोग किया जाता है:
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
दूसरे उदाहरण में एक <दिनांक> तत्व का उपयोग किया जाता है:
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
तीसरे उदाहरण में एक विस्तारित <दिनांक> तत्व का उपयोग किया गया है: (यह मेरा पसंदीदा है):
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
एक्सएमएल विशेषताओं से बचें?
विशेषताओं का उपयोग करते समय कुछ बातों पर ध्यान देना चाहिए:
- विशेषताओं में एकाधिक मान नहीं हो सकते (तत्व कर सकते हैं)
- विशेषताओं में वृक्ष संरचनाएं नहीं हो सकतीं (तत्व कर सकते हैं)
- विशेषताएँ आसानी से विस्तार योग्य नहीं हैं (भविष्य में होने वाले परिवर्तनों के लिए)
इस तरह खत्म न करें:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
मेटाडेटा के लिए एक्सएमएल गुण
कभी-कभी आईडी संदर्भ तत्वों को सौंपे जाते हैं। इन आईडी का उपयोग एक्सएमएल तत्वों की पहचान करने के लिए उसी तरह किया जा सकता है जैसे एचटीएमएल में आईडी विशेषता। यह उदाहरण यह प्रदर्शित करता है:
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
ऊपर दी गई आईडी विशेषताएँ अलग-अलग नोटों की पहचान करने के लिए हैं। यह नोट का ही हिस्सा नहीं है।
मैं यहां जो कहना चाह रहा हूं वह यह है कि मेटाडेटा (डेटा के बारे में डेटा) को विशेषताओं के रूप में संग्रहीत किया जाना चाहिए, और डेटा को स्वयं तत्वों के रूप में संग्रहीत किया जाना चाहिए।