एक्सएमएल

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

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

सिंहावलोकन
XML का मुख्य उद्देश्य क्रमांकन है, अर्थात मनमाने डेटा का भंडारण, संचारण और पुनर्निर्माण करना। सूचनाओं के आदान-प्रदान के लिए दो अलग-अलग प्रणालियों के लिए, उन्हें फ़ाइल प्रारूप पर सहमत होने की आवश्यकता है। XML इस प्रक्रिया का मानकीकरण करता है। XML सूचना का प्रतिनिधित्व करने के लिए भाषा के अनुरूप है। एक मार्कअप भाषा के रूप में, XML लेबल, वर्गीकृत और जानकारी को संरचनात्मक रूप से व्यवस्थित करता है। XML टैग डेटा संरचना का प्रतिनिधित्व करते हैं और इसमें मेटाडेटा होता है। टैग के भीतर डेटा है, जो एक्सएमएल मानक निर्दिष्ट तरीके से एन्कोड किया गया है।  अतिरिक्त XML स्कीमा (XSD) XML की व्याख्या और सत्यापन के लिए आवश्यक मेटाडेटा को परिभाषित करता है। (इसे कैनोनिकल स्कीमा भी कहा जाता है।)  XML दस्तावेज़ जो बुनियादी XML नियमों का पालन करता है, अच्छी तरह से बना हुआ है; जो इसकी स्कीमा का पालन करता है वह मान्य है। इंटरनेट का इतिहास#इंटरनेट इंजीनियरिंग टास्क फोर्स :RFC:7303 (जो पुराने RFC:3023 का स्थान लेता है), XML संदेश में उपयोग के लिए मीडिया प्रकार के निर्माण के लिए नियम प्रदान करता है। यह तीन मीडिया प्रकारों को परिभाषित करता है:  (  उपनाम है),   (  उपनाम है) और. उनका उपयोग उनके आंतरिक शब्दार्थ को उजागर किए बिना कच्ची XML फ़ाइलों को प्रसारित करने के लिए किया जाता है। RFC 7303 आगे अनुशंसा करता है कि XML-आधारित भाषाओं में समाप्त होने वाले मीडिया प्रकार दिए जाएं, उदाहरण के लिए,   स्केलेबल वेक्टर ग्राफिक्स के लिए।

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

अनुप्रयोग
इंटरनेट पर डेटा के आदान-प्रदान के लिए XML आम उपयोग में आ गया है। XML सिंटैक्स का उपयोग करने वाले सैकड़ों दस्तावेज़ स्वरूप विकसित किए गए हैं, RSS, Atom (मानक), Office Open XML, OpenDocument, स्केलेबल वेक्टर ग्राफ़िक्स और XHTML सहित। XML संचार प्रोटोकॉल जैसे SOAP और एक्स्टेंसिबल मैसेजिंग और उपस्थिति प्रोटोकॉल के लिए आधार भाषा भी प्रदान करता है। यह अजाक्स (प्रोग्रामिंग) | अतुल्यकालिक जावास्क्रिप्ट और एक्सएमएल (AJAX) प्रोग्रामिंग तकनीक के लिए संदेश विनिमय प्रारूप है।

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

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


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


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


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


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


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


 * एक विशेषता मार्कअप निर्माण है जिसमें नाम-मूल्य जोड़ी होती है जो स्टार्ट-टैग या खाली-तत्व टैग के भीतर मौजूद होती है। उदाहरण है, where the names of the attributes are "src" and "alt", and their values are "madonna.jpg और मैडोना क्रमशः। और उदाहरण है  , जहां विशेषता का नाम संख्या है और इसका मान 3 है। XML विशेषता में केवल मान हो सकता है और प्रत्येक विशेषता प्रत्येक तत्व पर अधिक से अधिक बार दिखाई दे सकती है। सामान्य स्थिति में जहां एकाधिक मानों की सूची वांछित है, यह सूची को अच्छी तरह से गठित एक्सएमएल विशेषता में एन्कोड करके किया जाना चाहिए कुछ प्रारूप के साथ जो एक्सएमएल खुद को परिभाषित करता है। आमतौर पर यह या तो अल्पविराम या अर्ध-विराम सीमांकित सूची होती है या, यदि अलग-अलग मानों में रिक्त स्थान नहीं होने के बारे में जाना जाता है, अंतरिक्ष-सीमांकित सूची का उपयोग किया जा सकता है।  , जहां विशेषता वर्ग में आंतरिक ग्रीटिंग-बॉक्स दोनों मूल्य हैं और दो सीएसएस वर्ग नामों को आंतरिक और ग्रीटिंग-बॉक्स भी इंगित करता है।


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

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

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

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

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

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

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

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

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

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

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

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

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

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

अंतर्राष्ट्रीय उपयोग
एक्सएमएल 1.0 (पांचवां संस्करण) और एक्सएमएल 1.1 तत्वों के नाम, विशेषताओं, टिप्पणियों, चरित्र डेटा और प्रसंस्करण निर्देशों में लगभग किसी भी यूनिकोड वर्ण के प्रत्यक्ष उपयोग का समर्थन करते हैं (उनके अलावा जो एक्सएमएल में विशेष प्रतीकात्मक अर्थ रखते हैं, जैसे कम -थान चिह्न, < ). निम्नलिखित अच्छी तरह से निर्मित XML दस्तावेज़ है जिसमें चीनी वर्ण, अर्मेनियाई वर्णमाला और सिरिलिक लिपि वर्ण शामिल हैं: <वाक्यविन्यास प्रकाश लैंग = एक्सएमएल>  <俄语 լեզու= ռուսերեն >данные 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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

आगे की पढाई

 * Annex A of ISO 8879:1986 (SGML)

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

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