एक्सएमएल

एक्स्टेंसिबल मार्कअप भाषा (एक्सएमएल) मार्कअप भाषा और फाइल फॉर्मेट है, जो इच्छानुसार डेटा को स्टोर करने, ट्रांसमिट करने और फिर से बनाने के लिए है। यह प्रारूप में इलेक्ट्रॉनिक दस्तावेज़ों को एन्कोडिंग के लिए नियमों का सेट परिभाषित करता है जो मानव-पठनीय माध्यम या मानव-पठनीय और मशीन-पठनीय डेटा या मशीन-पठनीय दोनों है। वर्ल्ड वाइड वेब कंसोर्टियम का एक्सएमएल 1.0 विशिष्टता 1998 में और कई अन्य संबंधित विनिर्देश उनमें से सभी मुक्त खुले मानक एक्सएमएल को परिभाषित करते हैं।

एक्सएमएल के डिजाइन लक्ष्यों में इंटरनेट पर सरलता, व्यापकता और उपयोगिता पर बल दिया गया है। यह अलग-अलग भाषाओं के लिए यूनिकोड के माध्यम से सशक्त समर्थन वाला टेक्स्ट डेटा प्रारूप है। यद्यपि एक्सएमएल का डिज़ाइन दस्तावेज़ों पर केंद्रित है, भाषा का व्यापक रूप से स्वैच्छिक डेटा संरचनाओं के प्रतिनिधित्व के लिए उपयोग किया जाता है जैसे कि वेब सेवाओं में उपयोग किए जाता है।

एक्सएमएल-आधारित भाषाओं की परिभाषा में सहायता के लिए कई एक्सएमएल स्कीमा उपस्थित हैं, जबकि प्रोग्रामर ने एक्सएमएल डेटा के प्रसंस्करण में सहायता के लिए कई एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) विकसित किए हैं।

सिंहावलोकन
एक्सएमएल का मुख्य उद्देश्य क्रमांकन है, अर्थात इच्छानुसार डेटा का स्टोरेज, संचारण और पुनर्निर्माण करना या सूचनाओं के आदान-प्रदान के लिए दो अलग-अलग प्रणालियों के लिए, उन्हें फ़ाइल प्रारूप पर सहमत होने की आवश्यकता है। एक्सएमएल इस प्रक्रिया का मानकीकरण करता है। एक्सएमएल सूचना का प्रतिनिधित्व करने के लिए भाषा के अनुरूप है।

एक मार्कअप भाषा के रूप में, एक्सएमएल लेबल, वर्गीकृत और जानकारी को संरचनात्मक रूप से व्यवस्थित करता है। एक्सएमएल टैग डेटा संरचना का प्रतिनिधित्व करते हैं और इसमें मेटाडेटा होता है। टैग के अन्दर डेटा है, जो एक्सएमएल मानक निर्दिष्ट तरीके से एन्कोड किया गया है।  अतिरिक्त एक्सएमएल स्कीमा (एक्सएसडी) एक्सएमएल की व्याख्या और सत्यापन के लिए आवश्यक मेटाडेटा को परिभाषित करता है। (इसे कैनोनिकल स्कीमा भी कहा जाता है।)  एक्सएमएल दस्तावेज़ जो मूलभूत एक्सएमएल नियमों का पालन करता है, अच्छी तरह से बना हुआ है; जो इसकी स्कीमा का पालन करता है वह मान्य है।

इंटरनेट का इतिहास या इंटरनेट इंजीनियरिंग टास्क फोर्स आरएफसी:7303 (जो पुराने आरएफसी:3023 का स्थान लेता है), एक्सएमएल संदेश में उपयोग के लिए मीडिया प्रकार के निर्माण के लिए नियम प्रदान करता है। यह तीन मीडिया प्रकारों को परिभाषित करता है:  (  उपनाम है),   (  उपनाम है) और. उनका उपयोग उनके आंतरिक शब्दार्थ को प्रदर्शित किए बिना रॉ एक्सएमएल फ़ाइलों को प्रसारित करने के लिए किया जाता है। [rfc:7303 आरएफसी 7303] आगे अनुशंसा करता है कि एक्सएमएल-आधारित भाषाओं में समाप्त होने वाले मीडिया प्रकार दिए जाएं, उदाहरण के लिए,   स्केलेबल वेक्टर ग्राफिक्स के लिए उपयोग किया जाता है।

नेटवर्क के संदर्भ में एक्सएमएल के उपयोग के लिए आगे के दिशानिर्देश :आरएफसी:3470 में दिखाई देते हैं, जिसे आईईटीएफ बीसीपी 70 के रूप में भी जाना जाता है, दस्तावेज़ जिसमें एक्सएमएल-आधारित भाषा को डिजाइन करने और तैनात करने के कई तथ्य सम्मिलित हैं।

अनुप्रयोग
इंटरनेट पर डेटा के आदान-प्रदान के लिए एक्सएमएल आम उपयोग में आ गया है। एक्सएमएल सिंटैक्स का उपयोग करने वाले सैकड़ों दस्तावेज़ स्वरूप विकसित किए गए हैं, आरएसएस, परमाणु (मानक), ऑफिस ओपन एक्सएमएल, ओपनदस्तावेज़, स्केलेबल वेक्टर ग्राफ़िक्स और एक्सएचटीएमएल सहित या एक्सएमएल संचार प्रोटोकॉल जैसे एसओएपी और एक्स्टेंसिबल मैसेजिंग और उपस्थिति प्रोटोकॉल के लिए आधार भाषा भी प्रदान करता है। यह अजाक्स (प्रोग्रामिंग) या अतुल्यकालिक जावास्क्रिप्ट और एक्सएमएल (अजाक्स) प्रोग्रामिंग तकनीक के लिए संदेश विनिमय प्रारूप है।

स्वास्थ्य स्तर 7, ओपनट्रैवल एलायंस, एफपीएमएल, एमआईएसएमओ और राष्ट्रीय सूचना विनिमय मॉडल जैसे कई उद्योग डेटा मानक एक्सएमएल और एक्सएमएल स्कीमा विनिर्देश की समृद्ध विशेषताओं पर आधारित हैं। प्रकाशन में, डार्विन इंफॉर्मेशन टाइपिंग आर्किटेक्चर एक्सएमएल उद्योग डेटा मानक है। एक्सएमएल का व्यापक रूप से विभिन्न प्रकाशन प्रारूपों को रेखांकित करने के लिए उपयोग किया जाता है।

प्रमुख शब्दावली
इस खंड की पदार्थ एक्सएमएल विशिष्टता पर आधारित है। यह एक्सएमएल में प्रकट होने वाले सभी निर्माणों की विस्तृत सूची नहीं है; यह दिन-प्रतिदिन के उपयोग में सबसे अधिक बार सामने आने वाली प्रमुख संरचनाओं का परिचय प्रदान करता है।


 * एक एक्सएमएल दस्तावेज़ वर्णों की स्ट्रिंग है। वैध अक्षर में एक्सएमएल या अक्षर अनुमति किन्तु हतोत्साहित नियमबद्ध यूनिकोड वर्ण (शून्य को छोड़कर) (1.1) एक्सएमएल दस्तावेज़ में प्रकट हो सकता है (जबकि कुछ निराश हैं)।


 * प्रोसेसर मार्कअप का विश्लेषण करता है और एप्लिकेशन को संरचित जानकारी पास करता है। विनिर्देश आवश्यकताओं को रखता है कि एक्सएमएल प्रोसेसर को क्या करना चाहिए और क्या नहीं करना चाहिए, किन्तु एप्लिकेशन इसके सीमा से बाहर है। प्रोसेसर (जैसा कि विनिर्देश कहता है) को अधिकांशतः बोलचाल की भाषा में एक्सएमएल पार्सर के रूप में संदर्भित किया जाता है।


 * एक्सएमएल दस्तावेज़ बनाने वाले वर्णों को मार्कअप और पदार्थ में विभाजित किया जाता है, जिन्हें सरल वाक्य-विन्यास नियमों के अनुप्रयोग द्वारा अलग किया जा सकता है। सामान्यतः, मार्कअप बनाने वाले तार या तो वर्ण से प्रारंभ होते हैं  और ए के साथ समाप्त करें , या वे कैरेक्टर से प्रारंभ होते हैं   और ए के साथ समाप्त करें  . वर्णों की स्ट्रिंग जो मार्कअप नहीं हैं, पदार्थ हैं। चूँकि, सीडीएटीए सेक्शन में, सीमांकक   और   मार्कअप के रूप में वर्गीकृत किया जाता है, जबकि उनके बीच के टेक्स्ट को पदार्थ के रूप में वर्गीकृत किया जाता है। इसके अतिरिक्त, सबसे बाहरी तत्व से पहले और बाद में व्हाइटस्पेस को मार्कअप के रूप में वर्गीकृत किया गया है।


 * टैग एक मार्कअप निर्माण है जो  से    होता है और   पर समाप्त होता है। टैग तीन प्रकार के होते हैं:
 * * स्टार्ट-टैग, जैसे ;
 * * एंड-टैग, जैसे ;
 * * खाली-तत्व टैग, जैसे.


 * एक तत्व तार्किक दस्तावेज़ घटक है जो या तो स्टार्ट-टैग के साथ प्रारंभ होता है और मेल खाने वाले अंत-टैग के साथ समाप्त होता है या इसमें केवल खाली-तत्व टैग होता है। स्टार्ट-टैग और एंड-टैग के बीच के अक्षर, यदि कोई तत्व का पदार्थ हैं, और इसमें अन्य तत्वों सहित मार्कअप सम्मिलित हो सकते हैं, जिन्हें बाल तत्व कहा जाता है। उदाहरण  . और  . है


 * एक विशेषता एक मार्कअप निर्माण है जिसमें नाम-मूल्य जोड़ी सम्मिलित होती है जो स्टार्ट-टैग या खाली-तत्व टैग के अन्दर उपस्थित होती है। एक उदाहरण  है, जहां विशेषताओं के नाम 'src' और 'alt' हैं, और उनके मान क्रमशः 'मैडोना.jpg' और 'मैडोना' हैं। एक अन्य उदाहरण   है, जहां विशेषता का नाम "संख्या" है और इसका मान "3" है। एक एक्सएमएल विशेषता का केवल एक ही मान हो सकता है और प्रत्येक विशेषता प्रत्येक तत्व पर अधिकतम एक बार दिखाई दे सकती है। सामान्य स्थिति में जहां कई मानों की एक सूची वांछित होती है, यह सूची को एक अच्छी तरह से गठित एक्सएमएल विशेषता  में एन्कोड करके किया जाना चाहिए, जो कि एक्सएमएल द्वारा परिभाषित प्रारूप से परे है। सामान्यतः यह या तो अल्पविराम या अर्ध-कोलन सीमांकित सूची होती है या, यदि व्यक्तिगत मानों में रिक्त स्थान नहीं होने के लिए जाना जाता है, तो  एक स्थान-सीमांकित सूची का उपयोग किया जा सकता है। , जहां विशेषता "क्लास" में "इनर ग्रीटिंग-बॉक्स" दोनों मान हैं और यह दो सीएसएस क्लास नाम "इनर" और "ग्रीटिंग-बॉक्स" को भी इंगित करता है। ".


 * एक्सएमएल दस्तावेज़ एक्सएमएल प्रकाशन के साथ प्रारंभ हो सकते हैं जो अपने बारे में कुछ जानकारी का वर्णन करता है। उदाहरण .है

वर्ण और पलायन
एक्सएमएल दस्तावेज़ों में पूरी तरह से यूनिकोड प्रदर्शनों की सूची के वर्ण सम्मिलित हैं। विशेष रूप से बहिष्कृत नियंत्रण वर्णों की छोटी संख्या को छोड़कर, यूनिकोड द्वारा परिभाषित कोई भी वर्ण किसी एक्सएमएल दस्तावेज़ की पदार्थ के अन्दर दिखाई दे सकता है।

एक्सएमएल में दस्तावेज़ बनाने वाले यूनिकोड वर्णों के एन्कोडिंग की पहचान करने और उन वर्णों को व्यक्त करने के लिए सुविधाएँ सम्मिलित हैं, जिनका कारण या किसी अन्य के लिए सीधे उपयोग नहीं किया जा सकता है।

मान्य वर्ण
निम्न श्रेणियों में यूनिकोड कोड बिंदु एक्सएमएल 1.0 दस्तावेज़ों में मान्य हैं:
 * U+0009 (क्षैतिज टैब), U+000A (लाइन फीड), U+000D (कैरिज रिटर्न): ये केवल C0 और C1 कंट्रोल कोड हैं जो एक्सएमएल 1.0 में स्वीकृत हैं;
 * U+0020–U+D7FF, U+E000–U+FFFD: इसमें मूल बहुभाषी तल में कुछ गैर-वर्ण सम्मिलित नहीं हैं (सभी प्रतिनिधि, U+FFFE और U+FFFF निषिद्ध हैं);
 * यू+10000-यू+10एफएफएफएफ: इसमें गैर-वर्णों सहित पूरक स्पेसो में सभी कोड बिंदु सम्मिलित हैं।

एक्सएमएल 1.1 उपरोक्त सभी को सम्मिलित करने के लिए अनुमत वर्णों के सेट का विस्तार करता है, साथ ही U+0001–U+001F श्रेणी में शेष वर्णों को भी सम्मिलित करता है। उसी समय, चूँकि, यह U+0009 (क्षैतिज टैब), U+000A (लाइन फीड), U+000D (कैरिज रिटर्न), और U+ के अतिरिक्त C0 और C0 और C1 नियंत्रण कोड नियंत्रण वर्णों के उपयोग को प्रतिबंधित करता है। 0085 (अगली पंक्ति) उन्हें एस्केप्ड फॉर्म में लिखने की आवश्यकता के द्वारा (उदाहरण के लिए U+0001 को इस रूप में लिखा जाना चाहिए  या इसके समकक्ष)। C1 वर्णों के स्थिति में, यह प्रतिबंध पश्चगामी असंगति है; इसे सामान्य एन्कोडिंग त्रुटियों का पता लगाने की अनुमति देने के लिए प्रस्तुत किया गया था।

कोड पॉइंट नल कैरेक्टर यू+0000 एकमात्र ऐसा कैरेक्टर है जिसकी किसी भी एक्सएमएल 1.1 दस्तावेज़ में अनुमति नहीं है।

एन्कोडिंग पहचान
यूनिकोड कैरेक्टर सेट को विभिन्न विधियों से स्टोरेज या ट्रांसमिशन के लिए बाइट्स में एन्कोड किया जा सकता है, जिसे एनकोडिंग कहा जाता है। यूनिकोड ही एनकोडिंग को परिभाषित करता है जो पूरे प्रदर्शनों की सूची को कवर करता है; इस प्रकार जाने-माने लोगों में यूटीएफ-8 (जिसे एक्सएमएल मानक बाइट ऑर्डर मार्क के बिना उपयोग करने की अनुशंसा करता है) और यूटीएफ-16 सम्मिलित हैं। ऐसे कई अन्य टेक्स्ट एनकोडिंग हैं जो यूनिकोड से पहले के हैं, जैसे एएससीआईआई और विभिन्न आईएसओ/आईईसी 8859; उनके कैरेक्टर प्रदर्शनों की सूची प्रत्येक स्थिति में यूनिकोड वर्ण सेट के उपसमुच्चय हैं।

एक्सएमएल किसी भी यूनिकोड-परिभाषित एन्कोडिंग और किसी भी अन्य एन्कोडिंग के उपयोग की अनुमति देता है जिनके वर्ण भी यूनिकोड में दिखाई देते हैं। एक्सएमएल तंत्र भी प्रदान करता है जिससे एक्सएमएल प्रोसेसर बिना किसी पूर्व ज्ञान के शक्ति से यह निर्धारित कर सकता है कि किस एन्कोडिंग का उपयोग किया जा रहा है। यूटीएफ-8 और यूटीएफ-16 के अतिरिक्त अन्य एन्कोडिंग आवश्यक रूप से प्रत्येक एक्सएमएल पार्सर द्वारा मान्यता प्राप्त नहीं हैं (और कुछ स्थितियों में यूटीएफ-16 भी नहीं, तथापि मानक इसे भी मान्यता देने के लिए अनिवार्य करता है)।

पलायन
एक्सएमएल उन पात्रों को सम्मिलित करने के लिए एस्केप सीक्वेंस सुविधाएं प्रदान करता है जो सीधे सम्मिलित करने के लिए समस्याग्रस्त हैं। उदाहरण के लिए:
 * अक्षर < और & कुंजी सिंटैक्स मार्कर हैं और कभी भी सीडीएटीए अनुभाग के बाहर पदार्थ में प्रकट नहीं हो सकते हैं। एक्सएमएल इकाई मूल्यों में < का उपयोग करने के लिए इसकी अनुमति है, किन्तु अनुशंसित नहीं है।
 * कुछ कैरेक्टर एनकोडिंग यूनिकोड के केवल सबसेट का समर्थन करते हैं। उदाहरण के लिए, एएससीआईआई में एक्सएमएल दस्तावेज़ को एन्कोड करना नियमबद्ध है, किन्तु एएससीआईआई में यूनिकोड वर्णों जैसे é के लिए कोड बिंदु नहीं हैं।
 * लेखक की मशीन पर कैरेक्टर को टाइप करना संभव नहीं हो सकता है।
 * कुछ पात्रों में समरूपता होती है जिसे अन्य वर्णों से दृष्टिगत रूप से अलग नहीं किया जा सकता है, जैसे कि गैर-ब्रेकिंग स्पेस और अंतरिक्ष (विराम चिह्न), और ए  ए और ए  ए आदि है ।

एक्सएमएल और एचटीएमएल कैरेक्टर एक्सएमएल में पूर्वनिर्धारित इकाई संदर्भों की पांच सूची हैं :
 * < का प्रतिनिधित्व करता है
 * > का प्रतिनिधित्व करता है ;
 * & का प्रतिनिधित्व करता है ;
 * ' का प्रतिनिधित्व करता है;
 * " का प्रतिनिधित्व करता है '' ।

सभी अनुमत यूनिकोड वर्णों को संख्यात्मक वर्ण संदर्भ के साथ प्रदर्शित किया जा सकता है। चीनी वर्ण 中 पर विचार करें, जिसका यूनिकोड में संख्यात्मक कोड हेक्साडेसिमल 4E2D, या दशमलव 20,013 है। उपयोगकर्ता जिसका कीबोर्ड इस वर्ण को दर्ज करने के लिए कोई विधि प्रदान नहीं करता है, वह अभी भी इसे एन्कोड किए गए एक्सएमएल दस्तावेज़ में सम्मिलित कर सकता है  या. इसी तरह, स्ट्रिंग <3 Jörg को एक्सएमएल दस्तावेज़ में सम्मिलित करने के लिए एन्कोड  किया जा सकता है.

अनुमति नहीं है क्योंकि शून्य वर्ण एक्सएमएल से बहिष्कृत नियंत्रण वर्णों में से है, यहां तक ​​कि संख्यात्मक वर्ण संदर्भ का उपयोग करते समय भी है। ऐसे वर्णों का प्रतिनिधित्व करने के लिए बेस 64 जैसे वैकल्पिक एन्कोडिंग तंत्र की आवश्यकता होती है।

टिप्पणियाँ
अन्य मार्कअप के बाहर दस्तावेज़ में कहीं भी टिप्पणियाँ दिखाई दे सकती हैं। टिप्पणियाँ एक्सएमएल प्रकाशन से पहले प्रकट नहीं हो सकतीं। टिप्पणियाँ से प्रारंभ होती हैं  और   साथ समाप्त करें. एसजीएमएल के साथ संगतता के लिए, टिप्पणियों के अंदर स्ट्रिंग - (डबल-हाइफ़न) की अनुमति नहीं है; इसका कारण है कि टिप्पणियों को नेस्टेड नहीं किया जा सकता है। एम्पर्सेंड का टिप्पणियों के अन्दर कोई विशेष महत्व नहीं है, इसलिए इकाई और कैरेक्टर संदर्भों को इस तरह पहचाना नहीं जाता है, और दस्तावेज़ एन्कोडिंग के वर्ण सेट के बाहर वर्णों का प्रतिनिधित्व करने का कोई विधि नहीं है।

वैध टिप्पणी का उदाहरण:  है

अंतर्राष्ट्रीय उपयोग
एक्सएमएल 1.0 (पांचवां संस्करण) और एक्सएमएल 1.1 तत्वों के नाम, विशेषताओं, टिप्पणियों, कैरेक्टर डेटा और प्रसंस्करण निर्देशों में लगभग किसी भी यूनिकोड वर्ण के प्रत्यक्ष उपयोग का समर्थन करते हैं (उनके अतिरिक्त जो एक्सएमएल में विशेष प्रतीकात्मक अर्थ रखते हैं, जैसे कम -थान चिह्न, < ). निम्नलिखित अच्छी तरह से निर्मित एक्सएमएल दस्तावेज़ है जिसमें चीनी वर्ण, अर्मेनियाई वर्णमाला और सिरिलिक लिपि वर्ण सम्मिलित हैं:

वाक्यात्मक शुद्धता और त्रुटि-प्रबंधन
एक्सएमएल विनिर्देश एक्सएमएल दस्तावेज़ को अच्छी तरह से गठित तत्व या  अच्छी तरह से गठित पाठ के रूप में परिभाषित करता है, जिसका अर्थ है कि यह विनिर्देश में प्रदान किए गए सिंटैक्स नियमों की सूची को संतुष्ट करता है। अधिक लंबी सूची में कुछ प्रमुख बिंदुओं में सम्मिलित हैं:
 * दस्तावेज़ में केवल ठीक से एन्कोडेड नियमबद्ध यूनिकोड वर्ण हैं।
 * विशेष सिंटैक्स वर्णों में से कोई भी नहीं  और   अपनी मार्कअप-डिलिनेशन भूमिकाएं करते समय के अतिरिक्त दिखाई देते हैं।
 * स्टार्ट-टैग, एंड-टैग, और खाली-तत्व टैग जो तत्वों को परिसीमित करते हैं, सही विधि से नेस्टेड हैं, टैग छूटे हुए हैं और कोई ओवरलैपिंग नहीं है।
 * टैग नाम केस-संवेदी होते हैं; स्टार्ट-टैग और एंड-टैग पूर्ण रूप से मेल खाना चाहिए।
 * टैग नामों में कोई भी वर्ण नहीं हो सकता! #$%&'*+,/;<=>?@[\]^`{|}~, न ही कोई स्पेस कैरेक्टर, और - से प्रारंभ नहीं हो सकता है।
 * एक मूल तत्व में अन्य सभी तत्व होते हैं।

एक्सएमएल दस्तावेज़ की परिभाषा में वे पाठ सम्मिलित नहीं हैं जिनमें सुगठित नियमों का उल्लंघन होता है; वे केवल एक्सएमएल नहीं हैं। एक्सएमएल प्रोसेसर जो इस तरह के उल्लंघन का सामना करता है, ऐसी त्रुटियों की सूची करने और सामान्य प्रसंस्करण को रोकने के लिए आवश्यक है। यह नीति, जिसे कभी-कभी ड्रैको (नियम देने वाला) त्रुटि प्रबंधन के रूप में संदर्भित किया जाता है, एचटीएमएल को संसाधित करने वाले कार्यक्रमों के व्यवहार के उल्लेखनीय विपरीत है, जिन्हें गंभीर मार्कअप त्रुटियों की उपस्थिति में भी उचित परिणाम देने के लिए डिज़ाइन किया गया है। इस क्षेत्र में एक्सएमएल की नीति की पोस्टेल के नियम के उल्लंघन के रूप में आलोचना की गई है (आप जो भेजते हैं उसमें रूढ़िवादी रहें; जो आप स्वीकार करते हैं उसमें उदार रहें)।

एक्सएमएल विनिर्देश एक्सएमएल सत्यापन को अच्छी तरह से गठित एक्सएमएल दस्तावेज़ के रूप में परिभाषित करता है जो दस्तावेज़ प्रकार परिभाषा (डीटीडी) के नियमों के अनुरूप भी है।

स्कीमा और सत्यापन
अच्छी तरह से गठित होने के अतिरिक्त, एक्सएमएल दस्तावेज़ मान्य हो सकता है। इसका अर्थ है कि इसमें दस्तावेज़ प्रकार परिभाषा (डीटीडी) का संदर्भ सम्मिलित है, और इसके तत्व और गुण उस डीटीडी में घोषित किए गए हैं और डीटीडी द्वारा निर्दिष्ट व्याकरणिक नियमों का पालन करते हैं।

एक्सएमएल प्रोसेसर को वैधता के लिए एक्सएमएल दस्तावेज़ों की जाँच करने या न करने के आधार पर मान्य या गैर-मान्य के रूप में वर्गीकृत किया जाता है। प्रोसेसर जो वैधता त्रुटि का पता लगाता है, उसे इसकी सूची करने में सक्षम होना चाहिए, किन्तु सामान्य प्रसंस्करण जारी रख सकता है।

डीटीडी एक्सएमएल स्कीमा या व्याकरण का उदाहरण है। एक्सएमएल 1.0 के प्रारंभिक प्रकाशन के बाद से, एक्सएमएल के लिए स्कीमा भाषाओं के क्षेत्र में पर्याप्त कार्य किया गया है। ऐसी स्कीमा भाषाएं सामान्यतः उन तत्वों के सेट को विवश करती हैं जिनका उपयोग किसी दस्तावेज़ में किया जा सकता है, कौन से गुण उन पर प्रयुक्त हो सकते हैं, जिस क्रम में स्वीकार्य माता-पिता/बच्चे के संबंध में वे प्रकट हो सकते हैं, ।

दस्तावेज़ प्रकार की परिभाषा
एक्सएमएल के लिए सबसे पुरानी स्कीमा भाषा दस्तावेज़ प्रकार की परिभाषा (डीटीडी) है, जो एसजीएमएल से विरासत में मिली है।

डीटीडी के निम्नलिखित लाभ हैं:
 * एक्सएमएल 1.0 मानक में सम्मिलित किए जाने के कारण डीटीडी समर्थन सर्वव्यापी है।
 * डीटीडी तत्व-आधारित स्कीमा भाषाओं की तुलना में संक्षिप्त हैं और फलस्वरूप ही स्क्रीन में अधिक जानकारी प्रस्तुत करते हैं।
 * डीटीडी पात्रों को प्रकाशित करने के लिए एसजीएमएल इकाई की प्रकाशन की अनुमति देते हैं।
 * डीटीडी नामस्थान द्वारा उपयोग किए जाने वाले प्रकारों के अतिरिक्त दस्तावेज़ प्रकार को परिभाषित करते हैं, इस प्रकार संग्रह में दस्तावेज़ के लिए सभी बाधाओं को समूहित करते हैं।

डीटीडी की निम्नलिखित सीमाएँ हैं:
 * उनके पास एक्सएमएल के नए फीचर (सॉफ्टवेयर डिजाइन) के लिए कोई स्पष्ट समर्थन नहीं है, सबसे महत्वपूर्ण एक्सएमएल नेमस्पेस है।
 * उनमें अभिव्यक्ति की कमी है। एक्सएमएल डीटीडीs एसजीएमएल डीटीडी की तुलना में सरल होते हैं और कुछ संरचनाएँ होती हैं जिन्हें नियमित व्याकरण के साथ व्यक्त नहीं किया जा सकता है। डीटीडी केवल प्रारंभिक डेटाटाइप का समर्थन करते हैं।
 * उनमें पठनीयता का अभाव है। डीटीडी डिजाइनर सामान्यतः मापदंड इकाइयों का भारी उपयोग करते हैं (जो अनिवार्य रूप से टेक्स्ट मैक्रो (कंप्यूटर साइंस) के रूप में व्यवहार करते हैं), जो जटिल व्याकरण को परिभाषित करना सरल बनाता है, किन्तु स्पष्टता की मूल्य पर प्रयोग किया जाता है।
 * वे स्कीमा का वर्णन करने के लिए एसजीएमएल से विरासत में मिले रेगुलर एक्सप्रेशन सिंटैक्स पर आधारित सिंटैक्स का उपयोग करते हैं। विशिष्ट एक्सएमएल एपीआई जैसे कि एक्सएमएल के लिए सरल एपीआई अनुप्रयोगों को सिंटैक्स के संरचित प्रतिनिधित्व की प्रस्तुतकश करने का प्रयास नहीं करते हैं, इसलिए यह तत्व-आधारित सिंटैक्स की तुलना में प्रोग्रामर के लिए कम सुलभ हो सकता है।

दो विचित्र विशेषताएं जो अन्य स्कीमा प्रकारों से डीटीडी को अलग करती हैं, एक्सएमएल दस्तावेज़ों के अन्दर डीटीडी को एम्बेड करने और संस्थाओं को परिभाषित करने के लिए सिंटैक्टिक समर्थन हैं, जो टेक्स्ट या मार्कअप के अधिक टुकड़े हैं जो एक्सएमएल प्रोसेसर डीटीडी में और एक्सएमएल दस्तावेज़ में कहीं भी सम्मिलित करता है। संदर्भित हैं, जैसे कैरेक्टर बच निकलता है।

इसकी सर्वव्यापकता के कारण डीटीडी तकनीक अभी भी कई अनुप्रयोगों में उपयोग की जाती है।

स्कीमा
W3C द्वारा डीटीडीs के उत्तराधिकारी के रूप में वर्णित नई स्कीमा भाषा, एक्सएमएल स्कीमा (W3C) है, जिसे अधिकांशतः एक्सएमएल स्कीमा उदाहरणों, एक्सएसडी (एक्सएमएल स्कीमा परिभाषा) के लिए प्रथमाक्षर द्वारा संदर्भित किया जाता है। एक्सएमएल भाषाओं का वर्णन करने में डीटीडी की तुलना में एक्सएसडी कहीं अधिक शक्तिशाली हैं। वे समृद्ध डेटा प्रकार प्रणाली का उपयोग करते हैं और एक्सएमएल दस्तावेज़ की तार्किक संरचना पर अधिक विस्तृत बाधाओं की अनुमति देते हैं। एक्सएसडी एक्सएमएल-आधारित प्रारूप का भी उपयोग करते हैं, जिससे उन्हें संसाधित करने में सहायता के लिए सामान्य एक्सएमएल टूल का उपयोग करना संभव हो जाता है।

xs: स्कीमा तत्व जो स्कीमा को परिभाषित करता है: <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>   

आराम एनजी
RELAX NG (एक्सएमएल अगली पीढ़ी के लिए नियमित भाषा) को प्रारंभ में OASIS (संगठन) द्वारा निर्दिष्ट किया गया था और अब यह मानक है (भाग 2: DSDL|आईएसओ/आईईसी 19757 - DSDL का नियमित-व्याकरण-आधारित सत्यापन)। RELAX NG स्कीमा को एक्सएमएल आधारित सिंटैक्स या अधिक कॉम्पैक्ट गैर-एक्सएमएल सिंटैक्स में लिखा जा सकता है; दो सिंटैक्स हैं आइसोमॉर्फिक और जेम्स क्लार्क (प्रोग्रामर) का रूपांतरण उपकरण—ट्रांग—जानकारी खोए बिना उनके बीच रूपांतरण कर सकते हैं। RELAX NG में एक्सएमएल स्कीमा की तुलना में सरल परिभाषा और सत्यापन ढांचा है, जिससे इसे उपयोग करना और कार्यान्वित करना सरल हो जाता है। इसमें डेटाटाइप फ्रेमवर्क प्लग-इन (कंप्यूटिंग)|प्लग-इन्स; RELAX NG स्कीमा लेखक, उदाहरण के लिए, एक्सएमएल स्कीमा डेटाटाइप्स में परिभाषाओं के अनुरूप एक्सएमएल दस्तावेज़ में मानों की आवश्यकता हो सकती है।

स्कीमट्रॉन
स्कैमेट्रॉन एक्सएमएल दस्तावेज़ में पैटर्न की उपस्थिति या अनुपस्थिति के बारे में अभिकथन (कंप्यूटिंग) करने के लिए भाषा है। यह सामान्यतः XPath एक्सप्रेशन का उपयोग करता है। स्कीमट्रॉन अब मानक है (भाग 3: DSDL|आईएसओ/आईईसी 19757 - DSDL का नियम-आधारित सत्यापन)।

डीएसडीएल और अन्य स्कीमा भाषाएं
दस्तावेज़ स्कीमा परिभाषा भाषाएँ (दस्तावेज़ स्कीमा परिभाषा भाषाएँ) बहु-भाग आईएसओ/आईईसी मानक (आईएसओ/आईईसी 19757) है जो विशिष्ट समस्याओं पर लक्षित छोटी स्कीमा भाषाओं के व्यापक सेट को साथ लाता है। DSDL में RELAX NG पूर्ण और कॉम्पैक्ट सिंटैक्स, स्कीमाट्रॉन अभिकथन भाषा, और डेटाटाइप्स को परिभाषित करने के लिए भाषाएं, वर्ण प्रदर्शनों की सूची, नाम बदलने और इकाई विस्तार, और अलग-अलग सत्यापनकर्ताओं के लिए दस्तावेज़ अंशों के नामस्थान-आधारित रूटिंग सम्मिलित हैं। डीएसडीएल स्कीमा भाषाओं में अभी एक्सएमएल स्कीमा का विक्रेता समर्थन नहीं है, और कुछ हद तक प्रकाशन के लिए एक्सएमएल स्कीमा की उपयोगिता की कमी के लिए औद्योगिक प्रकाशकों की जमीनी प्रतिक्रिया है।

कुछ स्कीमा भाषाएँ न केवल किसी विशेष एक्सएमएल प्रारूप की संरचना का वर्णन करती हैं बल्कि इस प्रारूप के अनुरूप व्यक्तिगत एक्सएमएल फ़ाइलों के प्रसंस्करण को प्रभावित करने के लिए सीमित सुविधाएं भी प्रदान करती हैं। डीटीडी और एक्सएसडी दोनों में यह क्षमता है; उदाहरण के लिए, वे इन्फोसेट वृद्धि सुविधा और विशेषता डिफ़ॉल्ट प्रदान कर सकते हैं। RELAX NG और Schematron जानबूझकर इन्हें प्रदान नहीं करते हैं।

संबंधित विनिर्देश
एक्सएमएल से निकटता से संबंधित विशिष्टताओं का समूह विकसित किया गया है, जो एक्सएमएल 1.0 के प्रारंभिक प्रकाशन के तुरंत बाद प्रारंभ हुआ। यह अधिकांशतः ऐसा होता है कि एक्सएमएल शब्द का उपयोग एक्सएमएल को या से अधिक अन्य तकनीकों के साथ संदर्भित करने के लिए किया जाता है जिन्हें एक्सएमएल कोर के हिस्से के रूप में देखा जाता है।
 * एक्सएमएल नेमस्पेस ही दस्तावेज़ को एक्सएमएल तत्वों और विभिन्न शब्दावली से ली गई विशेषताओं को सम्मिलित करने में सक्षम बनाता है, बिना किसी नामकरण टकराव के। हालाँकि एक्सएमएल नामस्थान स्वयं एक्सएमएल विनिर्देशन का हिस्सा नहीं हैं, वस्तुतः सभी एक्सएमएल सॉफ़्टवेयर भी एक्सएमएल नामस्थानों का समर्थन करते हैं।
 * एक्सएमएल बेस परिभाषित करता है  विशेषता, जिसका उपयोग एकल एक्सएमएल तत्व के सीमा में संबंधित URI संदर्भों के समाधान के लिए आधार सेट करने के लिए किया जा सकता है।
 * एक्सएमएल सूचना सेट या एक्सएमएल Infoset सूचना मदों के संदर्भ में एक्सएमएल दस्तावेज़ों के लिए सार डेटा मॉडल है। इन्फोसेट का उपयोग सामान्यतः एक्सएमएल भाषाओं के विनिर्देशों में किया जाता है, एक्सएमएल पर बाधाओं का वर्णन करने में सुविधा के लिए उन भाषाओं को अनुमति देता है।
 * एक्सएसएल (एक्सटेंसिबल स्टाइलशीट भाषा) एक्सएमएल दस्तावेजों को बदलने और प्रस्तुत करने के लिए इस्तेमाल की जाने वाली भाषाओं का परिवार है, जो तीन भागों में विभाजित है:
 * XSLT (XSL Transformations), एक्सएमएल दस्तावेज़ों को अन्य एक्सएमएल दस्तावेज़ों या अन्य स्वरूपों जैसे एचटीएमएल, सादा पाठ, या XSL-FO में बदलने के लिए एक्सएमएल भाषा। XSLT बहुत कसकर XPath के साथ युग्मित है, जिसका उपयोग यह इनपुट एक्सएमएल दस्तावेज़ के घटकों, मुख्य रूप से तत्वों और विशेषताओं को संबोधित करने के लिए करता है।
 * एक्सएसएल-एफओ (एक्सएसएल फॉर्मेटिंग ऑब्जेक्ट्स), एक्सएमएल दस्तावेजों को प्रस्तुत करने के लिए एक्सएमएल भाषा, अधिकांशतः पीडीएफ उत्पन्न करने के लिए प्रयोग की जाती है।
 * XPath (एक्सएमएल पाथ भाषा), एक्सएमएल दस्तावेज़ के घटकों (तत्वों, विशेषताओं, और इसी तरह) को संबोधित करने के लिए गैर-एक्सएमएल भाषा। XPath का व्यापक रूप से अन्य कोर-एक्सएमएल विनिर्देशों में और एक्सएमएल-एन्कोडेड डेटा तक पहुंचने के लिए प्रोग्रामिंग पुस्तकालयों में उपयोग किया जाता है।
 * XQuery (एक्सएमएल क्वेरी) एक्सएमएल क्वेरी भाषा है जो XPath और एक्सएमएल स्कीमा में दृढ़ता से निहित है। यह एक्सएमएल तक पहुँचने, हेरफेर करने और वापस करने के तरीके प्रदान करता है, और मुख्य रूप से एक्सएमएल डेटाबेस के लिए क्वेरी भाषा के रूप में माना जाता है।
 * एक्सएमएल हस्ताक्षर एक्सएमएल पदार्थ पर डिजिटल हस्ताक्षर बनाने के लिए सिंटैक्स और प्रोसेसिंग नियमों को परिभाषित करता है।
 * एक्सएमएल एन्क्रिप्शन एन्क्रिप्शन एक्सएमएल पदार्थ के लिए सिंटैक्स और प्रसंस्करण नियमों को परिभाषित करता है।
 * एक्सएमएल मॉडल (भाग 11: डीएसडीएल की स्कीमा एसोसिएशन | आईएसओ/आईईसी 19757 - डीएसडीएल) किसी भी एक्सएमएल दस्तावेज़ को स्कीमा और सत्यापन के किसी भी स्कीमा प्रकार के साथ संबद्ध करने के माध्यम को परिभाषित करता है।

एक्सएमएल कोर के हिस्से के रूप में कल्पना की गई कुछ अन्य विशिष्टताओं को व्यापक रूप से अपनाने में विफल रहे हैं, जिनमें XInclude, XLink, और XPointer सम्मिलित हैं।

प्रोग्रामिंग इंटरफेस
एक्सएमएल के डिजाइन लक्ष्यों में सम्मिलित हैं, ऐसे प्रोग्राम लिखना सरल होगा जो एक्सएमएल दस्तावेजों को प्रोसेस करते हैं। इसके बावजूद, एक्सएमएल विनिर्देश में इस बारे में लगभग कोई जानकारी नहीं है कि प्रोग्रामर इस तरह की प्रोसेसिंग कैसे कर सकते हैं। एक्सएमएल इंफोसेट विनिर्देश एक्सएमएल दस्तावेज़ के अन्दर निर्माणों को संदर्भित करने के लिए शब्दावली प्रदान करता है, किन्तु इस जानकारी तक पहुंचने के तरीके पर कोई मार्गदर्शन प्रदान नहीं करता है। एक्सएमएल तक पहुँचने के लिए विभिन्न प्रकार के एपीआई विकसित और उपयोग किए गए हैं, और कुछ को मानकीकृत किया गया है।

एक्सएमएल प्रोसेसिंग के लिए उपस्थिता एपीआई इन श्रेणियों में आते हैं:
 * स्ट्रीम-ओरिएंटेड एपीआई प्रोग्रामिंग भाषा से सुलभ हैं, उदाहरण के लिए एक्सएमएल और स्टैक्स के लिए सरल एपीआई।
 * ट्री-ट्रैवर्सल एपीआई प्रोग्रामिंग भाषा से सुलभ है, उदाहरण के लिए डोम (एक्सएमएल एपीआई)।
 * एक्सएमएल डेटा बाइंडिंग, जो एक्सएमएल दस्तावेज़ और प्रोग्रामिंग-भाषा वस्तुओं के बीच स्वचालित अनुवाद प्रदान करता है।
 * प्रकाशनत्मक रूपांतरण भाषाएँ जैसे XSLT और XQuery।
 * सामान्य प्रयोजन की प्रोग्रामिंग भाषाओं के लिए सिंटैक्स एक्सटेंशन, उदाहरण के लिए LINQ और Scala (प्रोग्रामिंग भाषा)।

स्ट्रीम-ओरिएंटेड सुविधाओं के लिए कम मेमोरी की आवश्यकता होती है और, किसी एक्सएमएल दस्तावेज़ के रैखिक ट्रैवर्सल पर आधारित कुछ कार्यों के लिए, अन्य विकल्पों की तुलना में तेज़ और सरल होते हैं। ट्री-ट्रैवर्सल और डेटा-बाइंडिंग एपीआई को सामान्यतः बहुत अधिक मेमोरी के उपयोग की आवश्यकता होती है, किन्तु अधिकांशतः प्रोग्रामर द्वारा उपयोग के लिए इसे अधिक सुविधाजनक पाया जाता है; कुछ में XPath एक्सप्रेशन के उपयोग के माध्यम से दस्तावेज़ घटकों की प्रकाशनत्मक पुनर्प्राप्ति सम्मिलित है।

XSLT को एक्सएमएल दस्तावेज़ परिवर्तनों के प्रकाशनत्मक विवरण के लिए डिज़ाइन किया गया है, और सर्वर-साइड पैकेज और वेब ब्राउज़र दोनों में व्यापक रूप से प्रयुक्त किया गया है। XQuery अपनी कार्यक्षमता में XSLT को ओवरलैप करता है, किन्तु बड़े एक्सएमएल डेटाबेस की खोज के लिए अधिक डिज़ाइन किया गया है।

एक्सएमएल के लिए सरल एपीआई
एक्सएमएल के लिए सरल एपीआई (एसएएक्स) लेक्सिकल विश्लेषण, इवेंट-संचालित प्रोग्रामिंग है। इवेंट-संचालित एपीआई जिसमें दस्तावेज़ को क्रमिक रूप से पढ़ा जाता है और इसकी पदार्थ को कॉलबैक (कंप्यूटर प्रोग्रामिंग) के रूप में विभिन्न विधियों (कंप्यूटर विज्ञान) के रूप में सूची किया जाता है। उपयोगकर्ता के डिजाइन के। SAX प्रयुक्त करने के लिए तेज और कुशल है, किन्तु एक्सएमएल से यादृच्छिक रूप से जानकारी निकालने के लिए उपयोग करना मुश्किल है, क्योंकि यह दस्तावेज़ के किस भाग को संसाधित किया जा रहा है, इसका ट्रैक रखने के साथ एप्लिकेशन लेखक पर बोझ पड़ता है। यह उन स्थितियों के लिए बेहतर है जिनमें कुछ प्रकार की सूचनाओं को हमेशा ही तरीके से संभाला जाता है, चाहे वे दस्तावेज़ में कहीं भी हों।

पार्सिंग खींचो
पुल पार्सिंग दस्तावेज़ को इटरेटर पैटर्न का उपयोग करके अनुक्रम में पढ़ी गई वस्तुओं की श्रृंखला के रूप में मानता है। यह रिकर्सिव डिसेंट पार्सर लिखने की अनुमति देता है जिसमें पार्सिंग करने वाले कोड की संरचना एक्सएमएल की संरचना को पार्स किया जा रहा है, और इंटरमीडिएट पार्स किए गए परिणामों का उपयोग किया जा सकता है और पार्सिंग करने वाले कार्यों के अन्दर स्थानीय चर के रूप में उपयोग किया जा सकता है, या पारित किया जा सकता है ( फ़ंक्शन मापदंड्स के रूप में) निम्न-स्तरीय फ़ंक्शंस में, या उच्च-स्तरीय फ़ंक्शंस में लौटाया गया (फ़ंक्शन रिटर्न मान के रूप में)। पुल पारसर्स के उदाहरणों में डेटा :: एडिट :: एक्सएमएल इन पर्ल (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा, स्मॉलटॉक में एक्सएमएलPullParser, PHP में एक्सएमएलReader, Python (प्रोग्रामिंग भाषा) में ElementTree.iterparse, सिस्टम सम्मिलित हैं। .NET फ्रेमवर्क में Xml.XmlReader, और DOM ट्रैवर्सल एपीआई (NodeIterator और TreeWalker)।

एक पुल पार्सर पुनरावर्तक बनाता है जो क्रमिक रूप से एक्सएमएल दस्तावेज़ में विभिन्न तत्वों, विशेषताओं और डेटा पर जाता है। इस पुनरावर्तक का उपयोग करने वाला कोड वर्तमान आइटम का परीक्षण कर सकता है (उदाहरण के लिए, यह बताने के लिए कि क्या यह स्टार्ट-टैग या एंड-टैग, या टेक्स्ट है), और इसकी विशेषताओं (स्थानीय नाम, एक्सएमएल नेमस्पेस, एक्सएमएल विशेषताओं के मूल्य, मूल्य) का निरीक्षण कर सकता है पाठ का, आदि), और पुनरावर्तक को अगले आइटम पर भी ले जा सकता है। कोड इस प्रकार दस्तावेज़ से जानकारी निकाल सकता है क्योंकि यह इसे पार करता है। पुनरावर्ती-अवरोही दृष्टिकोण डेटा को पार्सिंग करने वाले कोड में टाइप किए गए स्थानीय चर के रूप में डेटा रखने के लिए उधार देता है, जबकि SAX, उदाहरण के लिए, सामान्यतः पार्सर की आवश्यकता होती है जो तत्वों के ढेर के अन्दर मध्यवर्ती डेटा को मैन्युअल रूप से बनाए रखता है जो तत्व के मूल तत्व हैं विश्लेषित किया जा रहा है। SAX पार्सिंग कोड की तुलना में पुल-पार्सिंग कोड समझने और बनाए रखने के लिए अधिक सरल हो सकता है।

दस्तावेज़ वस्तु मॉडल
दस्तावेज़ ऑब्जेक्ट मॉडल (डीओएम) एपीआई है जो पूरे दस्तावेज़ के नेविगेशन की अनुमति देता है जैसे कि यह दस्तावेज़ की पदार्थ का प्रतिनिधित्व करने वाले नोड (कंप्यूटर विज्ञान) ऑब्जेक्ट (कंप्यूटर विज्ञान) का पेड़ था। DOM दस्तावेज़ पार्सर द्वारा बनाया जा सकता है, या उपयोगकर्ताओं द्वारा (सीमाओं के साथ) मैन्युअल रूप से उत्पन्न किया जा सकता है। DOM नोड्स में डेटा प्रकार सार हैं; कार्यान्वयन अपनी स्वयं की प्रोग्रामिंग भाषा-विशिष्ट भाषा बाइंडिंग प्रदान करते हैं। डीओएम कार्यान्वयन स्मृति गहन होते हैं, क्योंकि उन्हें सामान्यतः पूरे दस्तावेज़ को स्मृति में लोड करने की आवश्यकता होती है और पहुंच की अनुमति देने से पहले वस्तुओं के पेड़ के रूप में बनाया जाता है।

डेटा बाइंडिंग
एक्सएमएल डेटा बाइंडिंग, DOM पार्सर द्वारा बनाई गई सामान्य वस्तुओं के विपरीत, कस्टम और दृढ़ता से टाइप की गई वस्तुओं के पदानुक्रम के लिए एक्सएमएल दस्तावेज़ों का बंधन है। यह दृष्टिकोण कोड विकास को सरल करता है, और कई स्थितियों में रन-टाइम के अतिरिक्त संकलन समय पर समस्याओं की पहचान करने की अनुमति देता है। यह उन अनुप्रयोगों के लिए उपयुक्त है जहां दस्तावेज़ संरचना ज्ञात है और आवेदन लिखे जाने के समय तय की गई है। उदाहरण डेटा बाइंडिंग सिस्टम में एक्सएमएल बाइंडिंग (JAXB) के लिए Java आर्किटेक्चर, .NET फ्रेमवर्क में एक्सएमएल सीरियलाइज़ेशन सम्मिलित हैं। और जीएसओएपी में एक्सएमएल सीरियलाइजेशन।

एक्सएमएल डेटा प्रकार
के रूप में एक्सएमएल अन्य भाषाओं में प्रथम श्रेणी के डेटा प्रकार के रूप में प्रकट हुआ है। ईसीएमएस्क्रिप्ट/जावास्क्रिप्ट भाषा के लिए ई4एक्स (ई4एक्स) विस्तार स्पष्ट रूप से जावास्क्रिप्ट के लिए दो विशिष्ट वस्तुओं (एक्सएमएल और एक्सएमएललिस्ट) को परिभाषित करता है, जो एक्सएमएल दस्तावेज़ नोड्स और एक्सएमएल नोड सूचियों को अलग-अलग वस्तुओं के रूप में समर्थन करते हैं और पैरेंट-चाइल्ड संबंधों को निर्दिष्ट करने वाले डॉट-नोटेशन का उपयोग करते हैं। E4X Mozilla 2.5+ ब्राउज़र (चूँकि अब हटा दिया गया है) और Adobe Actionscript द्वारा समर्थित है, किन्तु इसे अधिक सार्वभौमिक रूप से नहीं अपनाया गया है। Microsoft .NET 3.5 और इसके बाद के संस्करण के लिए Microsoft के LINQ कार्यान्वयन में और Scala (प्रोग्रामिंग भाषा) (जो Java VM का उपयोग करता है) में इसी तरह के नोटेशन का उपयोग किया जाता है। ओपन-सोर्स xmlsh एप्लिकेशन, जो एक्सएमएल हेरफेर के लिए विशेष सुविधाओं के साथ लिनक्स जैसा शेल प्रदान करता है, इसी तरह <[ ]> संकेतन का उपयोग करके एक्सएमएल को डेटा प्रकार के रूप में मानता है। संसाधन विवरण फ्रेमवर्क डेटा प्रकार को परिभाषित करता है  रैप्ड, कैनोनिकल एक्सएमएल को होल्ड करने के लिए। फेसबुक ने PHP और जावास्क्रिप्ट भाषाओं के लिए एक्सटेंशन का उत्पादन किया है जो एक्सएमएल को क्रमशः E4X, अर्थात् XHP और रिएक्ट (जावास्क्रिप्ट लाइब्रेरी) #JSX के समान फैशन में कोर सिंटैक्स में जोड़ता है।

इतिहास
एक्सएमएल एसजीएमएल (ISO 8879) का एप्लिकेशन प्रोफाइल (इंजीनियरिंग) है। 1990 के दशक के मध्य तक एसजीएमएल के कुछ चिकित्सकों ने उस समय के नए वर्ल्ड वाइड वेब के साथ अनुभव प्राप्त कर लिया था, और उनका मानना ​​था कि एसजीएमएल ने कुछ समस्याओं के समाधान की प्रस्तुतकश की थी जो वेब के बढ़ने की संभावना थी। डेन कोनोली (कंप्यूटर वैज्ञानिक) ने 1995 में कर्मचारियों में सम्मिलित होने पर W3C की गतिविधियों की सूची में एसजीएमएल को जोड़ा; काम 1996 के मध्य में प्रारंभ हुआ जब सन माइक्रोसिस्टम्स के इंजीनियर जॉन बोसाक ने चार्टर विकसित किया और सहयोगियों की भर्ती की। एसजीएमएल और वेब दोनों में अनुभव रखने वाले लोगों के छोटे समुदाय में बोसक अच्छी तरह से जुड़ा हुआ था। एक्सएमएल को ग्यारह सदस्यों के कार्यकारी समूह द्वारा संकलित किया गया था, (मोटे तौर पर) 150 सदस्यीय हित समूह द्वारा समर्थित। इंटरेस्ट ग्रुप मेलिंग लिस्ट पर तकनीकी बहस हुई और मुद्दों को आम सहमति से सुलझाया गया, या जब वह विफल हो गया, तो वर्किंग ग्रुप के बहुमत से। 4 दिसंबर, 1997 को माइकल स्पर्बर्ग-मैकक्वीन द्वारा डिजाइन निर्णयों और उनके तर्कों का रिकॉर्ड संकलित किया गया था। जेम्स क्लार्क (एक्सएमएल विशेषज्ञ) ने कार्यकारी समूह के तकनीकी नेतृत्व के रूप में कार्य किया, विशेष रूप से खाली-तत्व में योगदान दिया  वाक्य रचना और नाम एक्सएमएल. जिन अन्य नामों पर विचार किया गया उनमें मैग्मा (सामान्यीकृत मार्कअप अनुप्रयोगों के लिए न्यूनतम वास्तुकला), एसएलआईएम (इंटरनेट मार्कअप के लिए संरचित भाषा) और एमजीएमएल (न्यूनतम सामान्यीकृत मार्कअप भाषा) सम्मिलित हैं। विनिर्देश के सह-संपादक मूल रूप से टिम ब्रे और माइकल स्पर्बर्ग-मैकक्वीन थे। प्रोजेक्ट के बीच में ही ब्रे ने नेटस्केप कम्युनिकेशंस कॉरपोरेशन के साथ कंसल्टिंग एंगेजमेंट स्वीकार कर लिया, जिससे माइक्रोसॉफ्ट ने बलदार विरोध किया। ब्रे को अस्थायी रूप से संपादक के पद से इस्तीफा देने के लिए कहा गया। इसके कारण वर्किंग ग्रुप में तीव्र विवाद हुआ, जिसे अंततः तीसरे सह-संपादक के रूप में माइक्रोसॉफ्ट के जीन पाओली की नियुक्ति से हल किया गया।

एक्सएमएल वर्किंग ग्रुप कभी आमने-सामने नहीं मिला; डिजाइन ईमेल और साप्ताहिक टेलीकॉन्फ्रेंस के संयोजन का उपयोग करके पूरा किया गया था। प्रमुख डिजाइन निर्णय अगस्त और नवंबर 1996 के बीच गहन काम के छोटे विस्फोट में पहुंचे, जब एक्सएमएल विनिर्देशन का पहला वर्किंग ड्राफ्ट प्रकाशित किया गया था। आगे की डिजाइन का काम 1997 तक जारी रहा, और एक्सएमएल 1.0 फरवरी 10, 1998 को W3C सिफारिश बन गया।

स्रोत
एक्सएमएल ISO मानक एसजीएमएल का प्रोफाइल है, और अधिकांश एक्सएमएल एसजीएमएल अपरिवर्तित से आता है। एसजीएमएल से तार्किक और भौतिक संरचनाओं (तत्वों और संस्थाओं) का पृथक्करण होता है, व्याकरण-आधारित सत्यापन (डीटीडीs) की उपलब्धता, डेटा और मेटाडेटा (तत्वों और विशेषताओं) का पृथक्करण, मिश्रित पदार्थ, प्रतिनिधित्व (प्रसंस्करण) से प्रसंस्करण का पृथक्करण निर्देश), और डिफ़ॉल्ट कोण-ब्रैकेट सिंटैक्स। एसजीएमएल प्रकाशन को हटा दिया गया था; इस प्रकार एक्सएमएल का निश्चित सीमांकक सेट है और यूनिकोड को दस्तावेज़ वर्ण एन्कोडिंग के रूप में अपनाता है।

एक्सएमएल के लिए प्रौद्योगिकी के अन्य स्रोत टेक्स्ट एन्कोडिंग इनिशिएटिव (टेक्स्ट एन्कोडिंग इनिशिएटिव) थे, जो ट्रांसफर सिंटैक्स के रूप में उपयोग के लिए एसजीएमएल की प्रोफाइल को परिभाषित करते थे; और एचटीएमएल, जिसमें तत्व अपने संसाधन के साथ तुल्यकालिक थे, दस्तावेज़ वर्ण सेट संसाधन एन्कोडिंग से अलग थे,  विशेषता का आविष्कार किया गया था, और (एचटीटीपी की तरह) मेटाडेटा लिंक की प्रकाशन पर आवश्यक होने के अतिरिक्त संसाधन के साथ था। आईएसओ से संबंधित चीन/जापान/कोरिया दस्तावेज़ प्रसंस्करण विशेषज्ञ समूह की स्प्रेड (पूर्व एशियाई दस्तावेजों के संबंध में मानकीकरण परियोजना) की ईआरसीएस (विस्तारित संदर्भ कंक्रीट सिंटेक्स) परियोजना एक्सएमएल 1.0 के नामकरण नियमों का आधार थी; SPREAD ने हेक्साडेसिमल न्यूमेरिक कैरेक्टर रेफरेंस और सभी यूनिकोड कैरेक्टर उपलब्ध कराने के लिए रेफरेंस की अवधारणा को भी प्रस्तुत किया। ERCS, एक्सएमएल और एचटीएमएल को बेहतर समर्थन देने के लिए, एसजीएमएल मानक IS 8879 को 1996 और 1998 में Webएसजीएमएल अनुकूलन के साथ संशोधित किया गया था। एक्सएमएल शीर्षलेख ISO HyTime का अनुसरण करता है।

विचार जो चर्चा के दौरान विकसित हुए जो एक्सएमएल में उपन्यास हैं, उनमें एन्कोडिंग पहचान और एन्कोडिंग हेडर, प्रसंस्करण निर्देश लक्ष्य, एक्सएमएल: स्पेस विशेषता, और खाली-तत्व टैग के लिए नया करीबी डिलीमीटर सम्मिलित है। वैधता के विपरीत वेल-फॉर्मेडनेस की धारणा (जो स्कीमा के बिना पार्सिंग को सक्षम करती है) को पहले एक्सएमएल में औपचारिक रूप दिया गया था, चूँकि इसे इलेक्ट्रॉनिक बुक टेक्नोलॉजी डायनेटेक्स्ट सॉफ्टवेयर में सफलतापूर्वक प्रयुक्त किया गया था; वाटरलू यूनिवर्सिटी न्यू ऑक्सफोर्ड इंग्लिश डिक्शनरी प्रोजेक्ट से सॉफ्टवेयर; यूनिस्कोप, टोक्यो में आरआईएसपी लिस्प एसजीएमएल टेक्स्ट प्रोसेसर; यूएस आर्मी मिसाइल कमांड IADS हाइपरटेक्स्ट सिस्टम; मेंटर ग्राफिक्स प्रसंग; इंटरलीफ और ज़ेरॉक्स पब्लिशिंग सिस्टम।

1.0 और 1.1
पहले (एक्सएमएल 1.0) को प्रारंभ में 1998 में परिभाषित किया गया था। तब से इसमें मामूली संशोधन किया गया है, बिना कोई नया संस्करण संख्या दिए, और वर्तमान में यह अपने पांचवें संस्करण में है, जैसा कि 26 नवंबर, 2008 को प्रकाशित हुआ था। यह व्यापक रूप से प्रयुक्त है और अभी भी है सामान्य उपयोग के लिए अनुशंसित।

दूसरा (एक्सएमएल 1.1) प्रारंभ में 4 फरवरी, 2004 को प्रकाशित हुआ था, उसी दिन एक्सएमएल 1.0 तीसरे संस्करण के रूप में, और वर्तमान में इसके दूसरे संस्करण में है, जैसा कि 16 अगस्त, 2006 को प्रकाशित किया गया था। इसमें ऐसी विशेषताएं (कुछ विवादास्पद) सम्मिलित हैं, जिनका उद्देश्य कुछ स्थितियों में एक्सएमएल का उपयोग करना सरल बनाना है। मुख्य परिवर्तन ईबीसीडीआईसी प्लेटफॉर्म पर उपयोग किए जाने वाले लाइन-एंडिंग वर्णों के उपयोग को सक्षम करने और यूनिकोड 3.2 से अनुपस्थित लिपियों और वर्णों के उपयोग को सक्षम करने के लिए हैं। एक्सएमएल 1.1 बहुत व्यापक रूप से प्रयुक्त नहीं किया गया है और केवल उन लोगों के लिए अनुशंसित है जिन्हें इसकी विशेष विशेषताओं की आवश्यकता है। अपने पांचवें संस्करण के रिलीज से पहले, एक्सएमएल 1.0 एक्सएमएल 1.1 से भिन्न था, जिसमें तत्व और विशेषता नामों और विशिष्ट पहचानकर्ताओं में उपयोग के लिए उपलब्ध वर्णों के लिए सख्त आवश्यकताएं थीं: एक्सएमएल 1.0 के पहले चार संस्करणों में वर्णों को विशेष रूप से विशिष्ट संस्करण का उपयोग करके गणना की गई थी। यूनिकोड मानक (यूनिकोड 2.0 से यूनिकोड 3.2 तक।) पांचवां संस्करण एक्सएमएल 1.1 के तंत्र को प्रतिस्थापित करता है, जो अधिक भविष्य-प्रमाण है किन्तु अतिरेक (सूचना सिद्धांत) को कम करता है। एक्सएमएल 1.0 के पांचवें संस्करण और एक्सएमएल 1.1 के सभी संस्करणों में अपनाया गया दृष्टिकोण यह है कि केवल कुछ वर्णों को नामों में वर्जित किया गया है, और बाकी सभी को भविष्य के यूनिकोड संस्करणों में उपयुक्त नाम वर्णों को समायोजित करने की अनुमति है। पांचवें संस्करण में, एक्सएमएल नामों में यूनिकोड 3.2 के बाद से यूनिकोड में जोड़े गए कई अन्य लोगों के बीच बाली लिपि, चाम लिपि, या फोनीशियन वर्णमाला लिपियों में वर्ण सम्मिलित हो सकते हैं।

लगभग किसी भी यूनिकोड कोड बिंदु का उपयोग एक्सएमएल 1.0 या 1.1 दस्तावेज़ के वर्ण डेटा और विशेषता मानों में किया जा सकता है, तथापि कोड बिंदु से संबंधित वर्ण यूनिकोड के वर्तमान संस्करण में परिभाषित न हो। कैरेक्‍टर डेटा और विशेषता मानों में, एक्सएमएल 1.1 एक्सएमएल 1.0 की तुलना में अधिक नियंत्रण वर्णों के उपयोग की अनुमति देता है, किन्तु, सशक्ती के लिए, एक्सएमएल 1.1 में प्रस्तुत किए गए अधिकांश नियंत्रण वर्णों को अंकीय वर्ण संदर्भों (और #x7F से #x9F तक) के रूप में व्यक्त किया जाना चाहिए, जो एक्सएमएल 1.0 में अनुमति दी गई थी, एक्सएमएल 1.1 में भी संख्यात्मक कैरेक्टर संदर्भों के रूप में व्यक्त करने की आवश्यकता है ). एक्सएमएल 1.1 में समर्थित नियंत्रण वर्णों में दो लाइन ब्रेक कोड हैं जिन्हें व्हाइटस्पेस वर्णों के रूप में माना जाना चाहिए, जो कि एकमात्र नियंत्रण कोड हैं जिन्हें सीधे लिखा जा सकता है।

2.0
एक्सएमएल 2.0 की चर्चा हुई है, चूँकि किसी भी संगठन ने इस तरह की परियोजना पर काम करने की योजना की प्रकाशन नहीं की है। एक्सएमएल-SW (स्कंकवर्क्स प्रोजेक्ट के लिए SW), जिसे एक्सएमएल के मूल डेवलपर्स में से ने लिखा है, एक्सएमएल 2.0 कैसा दिख सकता है, इसके लिए कुछ प्रस्ताव सम्मिलित हैं, जिसमें सिंटैक्स से डीटीडीs का उन्मूलन, साथ ही एक्सएमएल नामस्थानों का एकीकरण, एक्सएमएल बेस और एक्सएमएल सूचना सेट को आधार मानक में सम्मिलित किया गया है।

बाइनरी एक्सएमएल
वर्ल्ड वाइड वेब कंसोर्टियम में एक्सएमएल बाइनरी कैरेक्टराइजेशन वर्किंग ग्रुप भी है जो एक्सएमएल सूचना सेट के बाइनरी एन्कोडिंग के लिए उपयोग के स्थितियों और गुणों में प्रारंभिक शोध कर रहा है। कार्य समूह को किसी भी आधिकारिक मानक का उत्पादन करने के लिए चार्टर्ड नहीं किया गया है। चूँकि एक्सएमएल परिभाषा के अनुसार टेक्स्ट-आधारित है, ITU-T और ISO भ्रम से बचने के लिए अपने स्वयं के बाइनरी प्रारूप (ITU-T Rec. X.891 और आईएसओ/आईईसी 24824-1) के लिए Fast Infoset नाम का उपयोग कर रहे हैं।

आलोचना
शब्दशः, जटिलता और अतिरेक के लिए एक्सएमएल और इसके एक्सटेंशन की नियमित रूप से आलोचना की गई है। प्रोग्रामिंग भाषाओं या डेटाबेस के टाइप सिस्टम के लिए एक्सएमएल के मूल ट्री मॉडल को मैप करना मुश्किल हो सकता है, खासकर जब एक्सएमएल का उपयोग अनुप्रयोगों के बीच अत्यधिक संरचित डेटा के आदान-प्रदान के लिए किया जाता है, जो कि इसका प्राथमिक डिजाइन लक्ष्य नहीं था। हालाँकि, एक्सएमएल डेटा बाइंडिंग सिस्टम अनुप्रयोगों को एक्सएमएल डेटा को सीधे उपयोग की जाने वाली प्रोग्रामिंग भाषा में डेटा की डेटा संरचना का प्रतिनिधित्व करने वाली वस्तुओं से एक्सेस करने की अनुमति देता है, जो डेटा को पुनः प्राप्त करने के लिए दस्तावेज़ ऑब्जेक्ट मॉडल या एक्सएमएल के लिए सरल एपीआई का उपयोग करने के अतिरिक्त प्रकार की सुरक्षा सुनिश्चित करता है। एक्सएमएल का प्रत्यक्ष प्रतिनिधित्व। यह स्वचालित रूप से दस्तावेज़ के एक्सएमएल स्कीमा एक्सएसडी के तत्वों और स्मृति में प्रदर्शित होने वाले वर्ग के सदस्यों के बीच मैपिंग बनाकर पूरा किया जाता है।

अन्य आलोचनाएँ इस दावे का खंडन करने का प्रयास करती हैं कि एक्सएमएल स्व-वर्णन करने वाली भाषा है (चूँकि एक्सएमएल विनिर्देश स्वयं ऐसा कोई दावा नहीं करता है)।

JSON, YAML, और S-एक्सप्रेशन | S-एक्सप्रेशन को अधिकांशतः सरल विकल्प के रूप में प्रस्तावित किया जाता है (डेटा क्रमांकन प्रारूपों की तुलना देखें) जो दस्तावेजों के अतिरिक्त अत्यधिक संरचित डेटा का प्रतिनिधित्व करने पर ध्यान केंद्रित करता है, जिसमें अत्यधिक संरचित और अपेक्षाकृत असंरचित पदार्थ दोनों हो सकती हैं। हालाँकि, W3C मानकीकृत एक्सएमएल स्कीमा विनिर्देश सरल क्रमांकन स्वरूपों की तुलना में संरचित एक्सएसडी डेटा प्रकारों की विस्तृत श्रृंखला प्रदान करते हैं और एक्सएमएल नामस्थानों के माध्यम से मॉड्यूलरिटी और पुन: उपयोग की प्रस्तुतकश करते हैं।

यह भी देखें

 * एक्सएमएल मार्कअप भाषाओं की सूची
 * एक्सएमएल स्कीमा की सूची
 * एक्स्टेंसिबल प्रोग्रामिंग
 * डेटा-सीरियलाइज़ेशन स्वरूपों की तुलना
 * बाइनरी एक्सएमएल
 * ईबीएमएल
 * डब्ल्यूबीएक्सएमएल
 * एक्सएमएल प्रोटोकॉल

आगे की पढाई

 * Annex A of ISO 8879:1986 (SGML)

बाहरी कड़ियाँ

 * W3C एक्सएमएल homepage
 * एक्सएमएल 1.0 Specification
 * Retrospective on Extended Reference Concrete Syntax by Rick Jelliffe
 * एक्सएमएल, Java and the Future of the Web (1997) by Jon Bosak
 * http://validator.w3.org/ The Official [W3C] Markup Validation Service
 * The एक्सएमएल FAQ originally for the W3C's एक्सएमएल SIG by Peter Flynn