एक्सएमएल तत्व बनाम गुण
एक्सएमएल में, विशेषताओं का उपयोग कब करना है, और बाल तत्वों का उपयोग कब करना है, इसके बारे में कोई नियम नहीं हैं।
तत्वों बनाम गुणों का उपयोग
डेटा को चाइल्ड एलिमेंट्स या एट्रीब्यूट्स में स्टोर किया जा सकता है।
इन उदाहरणों पर एक नज़र डालें:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
पहले उदाहरण में सेक्स एक विशेषता है। अंत में, काम एक बाल तत्व है। दोनों उदाहरण समान जानकारी प्रदान करते हैं।
विशेषताओं का उपयोग कब करना है, और बाल तत्वों का उपयोग कब करना है, इसके बारे में कोई नियम नहीं हैं। मेरा अनुभव यह है कि विशेषताएँ HTML में काम आती हैं, लेकिन XML में आपको उनसे बचने की कोशिश करनी चाहिए। यदि जानकारी डेटा की तरह लगती है तो चाइल्ड एलिमेंट का उपयोग करें।
मेरा पसंदीदा तरीका
मुझे बाल तत्वों में डेटा स्टोर करना पसंद है।
निम्नलिखित तीन XML दस्तावेज़ों में बिल्कुल समान जानकारी है:
पहले उदाहरण में दिनांक विशेषता का उपयोग किया जाता है:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
दूसरे उदाहरण में दिनांक तत्व का उपयोग किया जाता है:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
तीसरे में विस्तारित दिनांक तत्व का उपयोग किया जाता है: (यह मेरा पसंदीदा है):
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
विशेषताओं का उपयोग करने से बचें?
क्या आपको विशेषताओं का उपयोग करने से बचना चाहिए?
विशेषताओं के साथ कुछ समस्याएं हैं:
- विशेषताओं में एकाधिक मान नहीं हो सकते (बाल तत्व कर सकते हैं)
- विशेषताएँ आसानी से विस्तार योग्य नहीं हैं (भविष्य में होने वाले परिवर्तनों के लिए)
- विशेषताएँ संरचनाओं का वर्णन नहीं कर सकतीं (बाल तत्व कर सकते हैं)
- प्रोग्राम कोड द्वारा विशेषताओं में हेरफेर करना अधिक कठिन होता है
- डीटीडी के खिलाफ विशेषता मूल्यों का परीक्षण करना आसान नहीं है
यदि आप डेटा के लिए कंटेनर के रूप में विशेषताओं का उपयोग करते हैं, तो आप ऐसे दस्तावेज़ों के साथ समाप्त होते हैं जिन्हें पढ़ना और बनाए रखना मुश्किल होता है। डेटा का वर्णन करने के लिए तत्वों का उपयोग करने का प्रयास करें । विशेषताओं का उपयोग केवल ऐसी जानकारी प्रदान करने के लिए करें जो डेटा के लिए प्रासंगिक नहीं है।
इस तरह समाप्त न करें (इस तरह एक्सएमएल का उपयोग नहीं किया जाना चाहिए):
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
मेरे गुण नियम का अपवाद
नियमों में हमेशा अपवाद होते हैं।
विशेषताओं के बारे में मेरे नियम में एक अपवाद है:
कभी-कभी मैं तत्वों को आईडी संदर्भ प्रदान करता हूं। इन आईडी संदर्भों का उपयोग एक्सएमएल तत्वों को उसी तरह से एक्सेस करने के लिए किया जा सकता है जैसे एचटीएमएल में NAME या आईडी विशेषताएँ। यह उदाहरण यह प्रदर्शित करता है:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
इन उदाहरणों में आईडी एक्सएमएल फ़ाइल में अलग-अलग नोटों की पहचान करने के लिए सिर्फ एक काउंटर, या एक अद्वितीय पहचानकर्ता है, न कि नोट डेटा का हिस्सा।
मैं यहां जो कहना चाह रहा हूं वह यह है कि मेटाडेटा (डेटा के बारे में डेटा) को विशेषताओं के रूप में संग्रहीत किया जाना चाहिए, और वह डेटा स्वयं तत्वों के रूप में संग्रहीत किया जाना चाहिए।