वाईएएमएल

वाईएएमएल (देखना ) मानव-पठनीय डेटा-क्रमांकन लैंग्वेज है। इसका उपयोग सामान्यतः कॉन्फ़िगरेशन फ़ाइलों और उन अनुप्रयोगों में किया जाता है जहां डेटा संग्रहीत या प्रसारित किया जा रहा है। वाईएएमएल एक्सटेंसिबल मार्कअप लैंग्वेज (एक्सएमएल) के समान कई संचार अनुप्रयोगों को लक्षित करता है, किन्तु इसमें न्यूनतम सिंटैक्स होता है जो सावधानीपूर्वक मानक सामान्यीकृत मार्कअप लैंग्वेज (एसजीएमएल) से भिन्न होता है। और यह नेस्टिंग को इंगित करने के लिए पायथन (प्रोग्रामिंग लैंग्वेज ) शैली इंडेंटेशन और अधिक कॉम्पैक्ट प्रारूप दोनों का उपयोग करता है [...] सूचियों के लिए और {...} मानचित्रों के लिए किन्तु टैब वर्णों को इंडेंटेशन के रूप में उपयोग करने से रोकता है इस प्रकार केवल कुछ जेएसओएन फ़ाइलें ही मान्य वाईएएमएल 1.2 हैं।

इस प्रकार से कस्टम डेटा प्रकारों की अनुमति है, किन्तु वाईएएमएल मूल रूप से स्केलर (कंप्यूटिंग) (जैसे जैसे स्ट्रिंग्स, पूर्णांक और फ़्लोट्स), इंटीजर (कंप्यूटर विज्ञान),, सूची (कंप्यूटिंग), और सहयोगी सरणी (जिसे मानचित्र, शब्दकोश या के रूप में भी जाना जाता है) को एन्कोड करता है। हैश)। ये डेटा प्रकार पर्ल प्रोग्रामिंग लैंग्वेज पर आधारित हैं, चूंकि सामान्यतः उपयोग की जाने वाली सभी उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज अधिक समान अवधारणाएं साझा करती हैं।  इस प्रकार से कोलन-केंद्रित सिंटैक्स, विशेषता-मूल्य जोड़ी गयी है | और कुंजी-मूल्य जोड़े को व्यक्त करने के लिए उपयोग किया जाता है, इलेक्ट्रॉनिक मेल हेडर से प्रेरित है जैसा कि इसमें परिभाषित किया गया है , और सीमान्तक --- MIME से उधार लिया गया है . एस्केप अनुक्रमों का पुन: उपयोग सी (प्रोग्रामिंग लैंग्वेज ) से किया जाता है, और मल्टी-लाइन स्ट्रिंग्स के लिए व्हाइटस्पेस रैपिंग एचटीएमएल से प्रेरित है। सूचियों और हैश में नेस्टेड सूचियाँ और हैश सम्मिलित हो सकते हैं, जो की ट्री स्ट्रूकचर बनाते हैं; एकपक्षीय ग्राफ़ (अमूर्त डेटा प्रकार) को वाईएएमएल उपनामों (एसओएपी में एक्सएमएल के समान) का उपयोग करके दर्शाया जा सकता है। किन्तु एक्सएमएल का उद्देश्य स्ट्रीम में पढ़ना और लिखना है, यह एक्सएमएल के लिए सरल एपीआई से प्रेरित सुविधा है।

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

अतः एक्सएमएल फ़ाइलों के लिए आधिकारिक अनुशंसित फ़ाइल नाम एक्सटेंशन 2006 से .yaml है।

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

सिंटेक्स
आधिकारिक साइट पर चीट शीट और पूर्ण विवरण उपलब्ध हैं। निम्नलिखित मूल तत्वों का सारांश है।

एक्सएमएल कुछ नियंत्रण वर्णों को छोड़कर संपूर्ण यूनिकोड वर्ण सेट को स्वीकार करता है, और इसे यूटीएफ-8, यूटीएफ-16 या यूटीएफ-32 में से किसी में एन्कोड किया जा सकता है। (चूंकि यूटीएफ-32 अनिवार्य नहीं है, पार्सर के लिए जेएसओएन संगतता होना आवश्यक है।)
 * व्हाइटस्पेस (कंप्यूटर विज्ञान) इंडेंट शैली का उपयोग संरचना को दर्शाने के लिए किया जाता है; चूंकि, उस इंडेंटेशन के भाग के रूप में टैब करैक्टर की अनुमति नहीं है।
 * टिप्पणियाँ संख्या चिह्न (#),से प्रारंभ होती हैं किसी लाइन पर कहीं भी प्रारंभ हो सकता है और लाइन के अंत तक जारी रह सकता है। टिप्पणियों को व्हाइटस्पेस वर्णों द्वारा अन्य टोकन से अलग किया जाना चाहिए। यदि # अक्षर स्ट्रिंग के अंदर दिखाई देते हैं, तो वे संख्या चिह्न (#) अक्षर हैं।.
 * सूची के सदस्यों को अग्रणी हाइफ़न-माइनस (-) द्वारा दर्शाया जाता है
 * सूची को वर्गाकार कोष्ठकों में पाठ संलग्न करके भी निर्दिष्ट किया जा सकता है प्रत्येक प्रविष्टि को अल्पविराम (विराम चिह्न) ([...]) द्वारा अलग किया जाता है।
 * सहयोगी सरणी प्रविष्टि को फॉर्म कुंजी में कोलन (विराम चिह्न) स्पेस (विराम चिह्न) का उपयोग करके दर्शाया जाता है: प्रति पंक्ति प्रविष्टि के साथ मान है । और वाईएएमएल के लिए महत्वपूर्ण है कि कोलन के अतिरिक्त स्पेस हो जिससे http://www.wikipedia.org जैसी यूआरएल-शैली स्ट्रिंग को उद्धरण चिह्नों में संलग्न किए बिना प्रस्तुत किया जा सके।
 * प्रश्न चिह्न का उपयोग कुंजी के सामने ?कुंजी: मान के रूप में किया जा सकता है, जिससे कुंजी में बिना उद्धरण चिह्नों के अग्रणी डैश, वर्गाकार कोष्ठक आदि सम्मिलित हो सकें।
 * सहयोगी सरणी को करली ब्रेसिज़ ({...}) में संलग्न पाठ द्वारा भी निर्दिष्ट किया जा सकता है, कुंजियों को कोलन द्वारा मानों से अलग किया जाता है और प्रविष्टियों को अल्पविराम से अलग किया जाता है (जेएसओएन के साथ संगतता बनाए रखने के लिए रिक्त स्थान की आवश्यकता नहीं होती है)।
 * स्ट्रिंग (कंप्यूटर विज्ञान) (वाईएएमएल में प्रकार का स्केलर) सामान्यतः उद्धृत नहीं किया जाता है, किन्तु दोहरे उद्धरण चिह्न में संलग्न किया जा सकता है दोहरे उद्धरण चिह्न ("), या एकल उद्धरण|एकल-उद्धरण (').
 * डबल-कोट्स के अन्दर, विशेष वर्णों को सी (प्रोग्रामिंग लैंग्वेज ) के साथ दर्शाया जा सकता है | बैकस्लैश (\)से प्रारंभ होने वाले सी-शैली एस्केप अनुक्रम. दस्तावेज़ीकरण के अनुसार केवल ऑक्टल एस्केप \0 समर्थित है.
 * एकल उद्धरण के अन्दर एकमात्र समर्थित एस्केप () अनुक्रम दोगुना एकल उद्धरण है एकल उद्धरण को स्वयं 'dont'. के रूप में निरूपित करना
 * ब्लॉक स्केलर को या फोल्ड (>) न्यूलाइन को संरक्षित करने के लिए वैकल्पिक संशोधक के साथ इंडेंटेशन के साथ सीमांकित किया जाता है।
 * ही स्ट्रीम में एकाधिक दस्तावेज़ों को तीन हाइफ़न (---) द्वारा अलग किया जाता है.
 * तीन पूर्ण विराम (...) वैकल्पिक रूप से किसी दस्तावेज़ को स्ट्रीम के अन्दर समाप्त करें।
 * दोहराए गए नोड्स को प्रारंभ में एम्परसेंड (&) द्वारा दर्शाया जाता है और इसके अतिरिक्त तारांकन चिह्न (*). के साथ संदर्भित
 * दोहरे विस्मयादिबोधक चिह्न (!!) का उपयोग करके नोड्स को प्रकार या टैग के साथ लेबल किया जा सकता है के अतिरिक्त स्ट्रिंग आती है, जिसे यूआरआई में विस्तारित किया जा सकता है।
 * स्ट्रीम में वाईएएमएल दस्तावेज़ों के पहले प्रतिशत चिह्न (%) से बना 'निर्देश' हो सकता है के अतिरिक्त नाम और स्थान-सीमांकित पैरामीटर आते हैं। वाईएएमएल 1.1 में दो निर्देश परिभाषित हैं:
 * किसी दिए गए दस्तावेज़ में वाईएएमएल के संस्करण की पहचान करने के लिए % एक्सएमएल निर्देश का उपयोग किया जाता है।
 * %टैग निर्देश का उपयोग यूआरआई उपसर्गों के शॉर्टकट के रूप में किया जाता है। फिर इन शॉर्टकट्स का उपयोग नोड प्रकार टैग में किया जा सकता है।

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

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

मुड़ा हुआ पाठ नई पंक्तियों को रिक्त स्थान में परिवर्तित करता है और प्रमुख रिक्त स्थान को हटा देता है।

ऑब्जेक्ट और सूचियाँ वाईएएमएल में महत्वपूर्ण घटक हैं और इन्हें मिश्रित किया जा सकता है। इस प्रकार से उदाहरण कुंजी-मूल्य वाली वस्तुओं की सूची है, सभी स्मिथ निकटम के लोग हैं। दूसरा उन्हें लिंग के आधार पर सूचीबद्ध करता है; यह कुंजी-मूल्य वाली वस्तु है जिसमें दो सूचियाँ हैं।

उन्नत घटक
दो विशेषताएं जो वाईएएमएल को अन्य डेटा-क्रमांकन लैंग्वेजो की क्षमताओं से अलग करती हैं, वे संरचनाएं हैं और डेटा टाइपिंग करती है ।

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

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

नीचे उपकरण अनुक्रमक में कतार का उदाहरण दिया गया है जिसमें दो चरणों को प्रत्येक समय पूरनी रूप से वर्णित किए बिना बार-बार पुन: उपयोग किया जाता है।

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

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

एक्सएमएल के प्रत्येक कार्यान्वयन में प्रत्येक विनिर्देश-परिभाषित डेटा प्रकार नहीं होता है। ये अंतर्निहित प्रकार डबल-विस्मयादिबोधक सिगिल (कंप्यूटर प्रोग्रामिंग) (!!). उपसर्ग का उपयोग करते हैं विशेष रूप से दिलचस्प जो यहां नहीं दिखाए गए हैं वे सेट, ऑर्डर किए गए मानचित्र, टाइमस्टैम्प और हेक्साडेसिमल हैं। यहां बेस64-एन्कोडेड बाइनरी डेटा का उदाहरण दिया गया है।

इसके अतिरिक्त एक्सएमएल के कई कार्यान्वयन ऑब्जेक्ट क्रमांकन के लिए उपयोगकर्ता-परिभाषित डेटा प्रकारों का समर्थन कर सकते हैं। स्थानीय डेटा प्रकार सार्वभौमिक डेटा प्रकार नहीं हैं, किन्तु इन्हें वाईएएमएल पार्सर लाइब्रेरी का उपयोग करके एप्लिकेशन में परिभाषित किया गया है। स्थानीय डेटा प्रकार एकल विस्मयादिबोधक चिह्न (!). का उपयोग करते हैं

उदाहरण
डेटा-संरचना पदानुक्रम को रूपरेखा इंडेंटेशन द्वारा बनाए रखा जाता है।

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

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

वाईएएमएल को सभी आंतरिक उद्धरण चिह्नों को उद्धृत करके और उनसे बचकर जेएसओएन में रखा जा सकता है। वाईएएमएल को आरक्षित वर्णों (<, >, &, ', ") से बचकर और व्हाइटस्पेस को परिवर्तित करके, या इसे सीडीएटीए अनुभाग में रखकर एक्सएमएल में रखा जा सकता है।

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

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

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

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

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

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

स्थिति पायथन या रूबी पार्सर्स के लिए समान है। पीवाई एक्सएमएल दस्तावेज़ के अनुसार है :

ध्यान दें कि यदि आप इंटरनेट जैसे किसी अविश्वसनीय स्रोत से वाईएएमएल दस्तावेज़ प्राप्त करते हैं तो एकपक्षीय पायथन ऑब्जेक्ट बनाने की क्षमता अविश्वसनीय हो सकती है। फ़ंक्शन yaml.safe_load इस क्षमता को सरल पायथन ऑब्जेक्ट्स जैसे पूर्णांक या सूचियों तक सीमित करता है। [...]

पीवाई एक्सएमएल आपको किसी भी प्रकार का पायथन ऑब्जेक्ट बनाने की अनुमति देता है। यहां तक ​​कि पायथन कक्षाओं के उदाहरणों का निर्माण भी इसका उपयोग करके किया जा सकता है !!python/object दिन।

PyYAML आपको किसी भी प्रकार का पायथन ऑब्जेक्ट बनाने की अनुमति देता है। यहां तक कि पायथन कक्षाओं के उदाहरण भी !!पायथन/ऑब्जेक्ट टैग का उपयोग करके बनाए जा सकते हैं।

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

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

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

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

कॉन्सिज़न के कारण, जेएसओएन क्रमबद्धता और डिसेरिएलाइज़ेशन वाईएएमएल की तुलना में अधिक तीव्र है।

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

एक्सएमएल के साथ तुलना
एक्सएमएल में एक्सएमएल में पाए जाने वाले टैग विशेषताओं की अवधारणा का अभाव है। इसके अतिरिक्त वाईएएमएल में एक्स्टेंसिबल प्रकार की घोषणाएँ हैं (वस्तुओं के लिए वर्ग प्रकार सहित)।

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

डेटा-क्रमबद्धता प्रारूपों की तुलना अन्य क्रमबद्धता प्रारूपों के साथ वाईएएमएल की अधिक व्यापक तुलना प्रदान करती है।

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

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

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

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

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

यह भी देखें

 * डेटा-क्रमांकन प्रारूपों की तुलना
 * लाइटवेट मार्कअप लैंग्वेज