वाईएएमएल: Difference between revisions

From Vigyanwiki
(Created page with "{{for|the CSS framework|YAML (framework)}} {{short description|Human-readable data serialization format}} {{Infobox file format | name = YAML | icon...")
 
No edit summary
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{for|the CSS framework|YAML (framework)}}
{{for|सीएसएस रूपरेखा|वाईएएमएल (फ्रेमवर्क)}}
{{short description|Human-readable data serialization format}}
{{short description|Human-readable data serialization format}}
{{Infobox file format
{{Infobox file format
| name                  = YAML
| name                  = वाईएएमएल
| icon                  = Official YAML Logo.svg
| icon                  = Official YAML Logo.svg
| iconcaption            =  
| iconcaption            =  
Line 9: Line 9:
| screenshot_size        =  
| screenshot_size        =  
| caption                =  
| caption                =  
| _noextcode            = on
| _noextcode            = पर
| extensions            = {{code|.yaml}}, {{code|.yml}}
| extensions            = {{कोड|.yaml}}, {{कोड|.yml}}
| _nomimecode            = on
| _nomimecode            = पर
| mime                  = ''Not registered''
| mime                  = ''पंजीकृत नहीं''
| type_code              =  
| type_code              =  
| uniform_type          = public.yaml<ref>{{cite web |url=https://developer.apple.com/documentation/uniformtypeidentifiers/uttype/3551604-yaml |title=yaml |work=Apple Developer Documentation: Uniform Type Identifiers |publisher=[[Apple Inc]]}}</ref>
| uniform_type          = public.yaml<ref>{{cite web |url=https://developer.apple.com/documentation/uniformtypeidentifiers/uttype/3551604-yaml |title=yaml |work=Apple डेवलपर दस्तावेज़ीकरण: Uniform Type Identifiers |publisher=[[Apple Inc]]}}</ref>
| conforms_to            =  
| conforms_to            =  
| magic                  =  
| magic                  =  
| developer              =  
| developer              =  
| released              = {{start date and age|2001|05|11|df=yes}}
| released              = {{प्रारंभ तिथि और आयु|2001|05|11|df=yes}}
| latest_release_version = 1.2 (Revision 1.2.2)
| latest_release_version = 1.2 (Revision 1.2.2)
| latest_release_date    = {{start date and age|2021|10|01|df=yes}}
| latest_release_date    = {{प्रारंभ तिथि और आयु|2021|10|01|df=yes}}
| genre                  = Data interchange
| genre                  = डेटा इंटरचेंज
| container_for          =  
| container_for          =  
| extended_from          =  
| extended_from          =  
| extended_to            =  
| extended_to            =  
| standard              = <!-- or: | standards = -->
| standard              = <!-- or: | मानकों = -->
| open                  = Yes
| open                  = हाँ
| url                    = {{URL|https://yaml.org}}
| url                    = {{URL|https://yaml.org}}
}}
}}
वाईएएमएल ({{IPAc-en|'|j|æ|m|ə|l}}) (देखना {{slink||History and name}}) एक मानव-पठनीय क्रमांकन|डेटा-क्रमांकन भाषा है। इसका उपयोग आमतौर पर [[विन्यास फाइल]] और उन अनुप्रयोगों में किया जाता है जहां डेटा संग्रहीत या प्रसारित किया जा रहा है। YAML [[ एक्सटेंसिबल मार्कअप लैंग्वेज ]] (XML) के समान कई संचार अनुप्रयोगों को लक्षित करता है, लेकिन इसमें न्यूनतम सिंटैक्स होता है जो जानबूझकर मानक सामान्यीकृत मार्कअप लैंग्वेज (SGML) से भिन्न होता है।<ref name="1.0" />यह नेस्टिंग को इंगित करने के लिए [[पायथन (प्रोग्रामिंग भाषा)]] शैली इंडेंटेशन और अधिक कॉम्पैक्ट प्रारूप दोनों का उपयोग करता है {{code|[...]}} सूचियों के लिए और {{code|{...} }} मानचित्रों के लिए<ref name="1.0">{{cite web|url=https://yaml.org/spec/history/2001-12-10.html |title=Yet Another Markup Language (YAML) 1.0 / Working Draft|date=10 Dec 2001}}</ref> लेकिन टैब वर्णों को इंडेंटेशन के रूप में उपयोग करने से रोकता है<ref name="YAML v1.2.2">{{cite web|url=https://yaml.org/spec/1.2.2/#indentation-spaces|title=YAML specification v1.2.2 Section 6.1. Indentation Spaces}}</ref> इस प्रकार केवल कुछ [[JSON]] फ़ाइलें ही मान्य YAML 1.2 हैं।<ref name="YAML Version 1.2">{{cite web|url=https://yaml.org/spec/1.2/spec.html|title=YAML Ain't Markup Language (YAML) Version 1.2 |website=YAML.org |access-date=2019-05-29}}</ref>
कस्टम डेटा प्रकारों की अनुमति है, लेकिन YAML मूल रूप से [[ अदिश (कंप्यूटिंग) ]] (जैसे [[स्ट्रिंग (कंप्यूटर विज्ञान)]], इंटीजर (कंप्यूटर विज्ञान), और [[तैरनेवाला स्थल]]), [[सूची (कंप्यूटिंग)]], और सहयोगी सरणी (जिसे मानचित्र, शब्दकोश या के रूप में भी जाना जाता है) को एन्कोड करता है। हैश)। ये डेटा प्रकार [[पर्ल]] प्रोग्रामिंग भाषा पर आधारित हैं, हालांकि आमतौर पर उपयोग की जाने वाली सभी उच्च-स्तरीय प्रोग्रामिंग भाषाएं बहुत समान अवधारणाएं साझा करती हैं।<ref>{{Cite web|title=Built-in Types — Python 3.9.6 documentation|url=https://docs.python.org/3/library/stdtypes.html|access-date=2021-08-19|website=docs.python.org}}</ref><ref>{{Cite web|title=Standard built-in objects - JavaScript {{!}} MDN|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects|access-date=2021-08-19|website=developer.mozilla.org|language=en-US}}</ref><ref>{{Cite web|last=corob-msft|title=अंतर्निहित प्रकार (C++)|url=https://docs.microsoft.com/en-us/cpp/cpp/fundamental-types-cpp|access-date=2021-08-19|website=docs.microsoft.com|date=17 August 2021 |language=en-us}}</ref> कोलन-केंद्रित सिंटैक्स, विशेषता-मूल्य जोड़ी | कुंजी-मूल्य जोड़े को व्यक्त करने के लिए उपयोग किया जाता है, [[इलेक्ट्रॉनिक मेल]] हेडर से प्रेरित है जैसा कि इसमें परिभाषित किया गया है {{IETF RFC|0822}}, और [[सीमान्तक]] {{code|---}} [[MIME]] से उधार लिया गया है ({{IETF RFC|2046}}). एस्केप अनुक्रमों का पुन: उपयोग C (प्रोग्रामिंग भाषा) से किया जाता है, और मल्टी-लाइन स्ट्रिंग्स के लिए व्हाइटस्पेस रैपिंग [[HTML]] से प्रेरित है। सूचियों और हैश में नेस्टेड सूचियाँ और हैश शामिल हो सकते हैं, जो एक [[वृक्ष संरचना]] बनाते हैं; मनमाना ग्राफ़ (अमूर्त डेटा प्रकार) को YAML उपनामों ([[SOAP]] में XML के समान) का उपयोग करके दर्शाया जा सकता है।<ref name="1.0" />YAML का उद्देश्य स्ट्रीम में पढ़ना और लिखना है, यह XML के लिए Simple API से प्रेरित एक सुविधा है।<ref name="1.0" />


YAML को पढ़ने और लिखने के लिए समर्थन कई प्रोग्रामिंग भाषाओं के लिए उपलब्ध है।<ref>{{Cite web|url=https://yaml.org/|title=आधिकारिक YAML वेब साइट|website=yaml.org}}</ref> कुछ स्रोत-कोड संपादक जैसे [[विम (पाठ संपादक)]],<ref>{{cite web|url=https://www.arthurkoziel.com/setting-up-vim-for-yaml/|title=YAML संपादन के लिए विम की स्थापना|website=arthurkoziel.com}}</ref> [[Emacs]],<ref>{{cite web|url=https://www.emacswiki.org/emacs/YamlMode |title=यमल मोड|publisher=EmacsWiki |date=2015-06-12 |access-date=2016-12-05}}</ref> और विभिन्न एकीकृत विकास वातावरण<ref>{{cite web|author=aukaost |url=https://packagecontrol.io/packages/Pretty%20YAML |title=सुंदर YAML - पैकेज - पैकेज नियंत्रण|publisher=Packagecontrol.io |access-date=2016-12-05}}</ref><ref>{{cite web|url=https://marketplace.eclipse.org/category/free-tagging/yaml |title=yaml &#124; Eclipse Plugins, Bundles and Products - Eclipse Marketplace |publisher=Marketplace.eclipse.org |access-date=2016-12-05}}</ref><ref>{{cite web|author=Ruth Kusterer |url=https://netbeans.org/features/ruby/index.html |title=नेटबीन्स आईडीई - रूबी और रूबी ऑन रेल्स डेवलपमेंट|publisher=Netbeans.org |access-date=2016-12-05}}</ref> इसमें ऐसी विशेषताएं हैं जो YAML को संपादित करना आसान बनाती हैं, जैसे नेस्टेड संरचनाओं को मोड़ना या सिंटैक्स त्रुटियों को स्वचालित रूप से हाइलाइट करना।
'''वाईएएमएल''' ({{IPAc-en|'|j|æ|m|ə|l}}) (देखना {{slink||इतिहास और नाम}}) मानव-पठनीय डेटा-क्रमांकन लैंग्वेज है। इसका उपयोग सामान्यतः [[विन्यास फाइल|कॉन्फ़िगरेशन]] फ़ाइलों और उन अनुप्रयोगों में किया जाता है जहां डेटा संग्रहीत या प्रसारित किया जा रहा है। वाईएएमएल [[ एक्सटेंसिबल मार्कअप लैंग्वेज |एक्सटेंसिबल मार्कअप लैंग्वेज]] (एक्सएमएल) के समान कई संचार अनुप्रयोगों को लक्षित करता है, किन्तु इसमें न्यूनतम सिंटैक्स होता है जो सावधानीपूर्वक मानक सामान्यीकृत मार्कअप लैंग्वेज (एसजीएमएल) से भिन्न होता है।<ref name="1.0" /> और यह नेस्टिंग को इंगित करने के लिए [[पायथन (प्रोग्रामिंग भाषा)|पायथन (प्रोग्रामिंग लैंग्वेज )]] शैली इंडेंटेशन और अधिक कॉम्पैक्ट प्रारूप दोनों का उपयोग करता है {{code|[...]}} सूचियों के लिए और {{code|{...} }} मानचित्रों के लिए<ref name="1.0">{{cite web|url=https://yaml.org/spec/history/2001-12-10.html |title=Yet Another Markup Language (YAML) 1.0 / Working Draft|date=10 Dec 2001}}</ref> किन्तु टैब वर्णों को इंडेंटेशन के रूप में उपयोग करने से रोकता है<ref name="YAML v1.2.2">{{cite web|url=https://yaml.org/spec/1.2.2/#indentation-spaces|title=YAML specification v1.2.2 Section 6.1. Indentation Spaces}}</ref> इस प्रकार केवल कुछ जेएसओएन फ़ाइलें ही मान्य वाईएएमएल 1.2 हैं।<ref name="YAML Version 1.2">{{cite web|url=https://yaml.org/spec/1.2/spec.html|title=YAML Ain't Markup Language (YAML) Version 1.2 |website=YAML.org |access-date=2019-05-29}}</ref>


YAML फ़ाइलों के लिए आधिकारिक अनुशंसित [[फ़ाइल नाम एक्सटेंशन]] रहा है {{code|.yaml}} 2006 से।<ref>{{Cite web|url=https://yaml.org/faq.html|title=YAML मार्कअप भाषा नहीं है|date=September 24, 2006|archive-url=https://web.archive.org/web/20060924190202/https://yaml.org/faq.html|archive-date=2006-09-24|url-status=live}}</ref>
इस प्रकार से कस्टम डेटा प्रकारों की अनुमति है, किन्तु वाईएएमएल मूल रूप से [[ अदिश (कंप्यूटिंग) |स्केलर (कंप्यूटिंग)]] (जैसे [[स्ट्रिंग (कंप्यूटर विज्ञान)|जैसे स्ट्रिंग्स, पूर्णांक और फ़्लोट्स)]], इंटीजर (कंप्यूटर विज्ञान), , [[सूची (कंप्यूटिंग)]], और सहयोगी सरणी (जिसे मानचित्र, शब्दकोश या के रूप में भी जाना जाता है) को एन्कोड करता है। हैश)। ये डेटा प्रकार [[पर्ल]] प्रोग्रामिंग लैंग्वेज पर आधारित हैं, चूंकि सामान्यतः उपयोग की जाने वाली सभी उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज अधिक समान अवधारणाएं साझा करती हैं।<ref>{{Cite web|title=Built-in Types — Python 3.9.6 documentation|url=https://docs.python.org/3/library/stdtypes.html|access-date=2021-08-19|website=docs.python.org}}</ref><ref>{{Cite web|title=Standard built-in objects - JavaScript {{!}} MDN|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects|access-date=2021-08-19|website=developer.mozilla.org|language=en-US}}</ref><ref>{{Cite web|last=corob-msft|title=अंतर्निहित प्रकार (C++)|url=https://docs.microsoft.com/en-us/cpp/cpp/fundamental-types-cpp|access-date=2021-08-19|website=docs.microsoft.com|date=17 August 2021 |language=en-us}}</ref> इस प्रकार से कोलन-केंद्रित सिंटैक्स, विशेषता-मूल्य जोड़ी गयी है | और कुंजी-मूल्य जोड़े को व्यक्त करने के लिए उपयोग किया जाता है, [[इलेक्ट्रॉनिक मेल]] हेडर से प्रेरित है जैसा कि इसमें परिभाषित किया गया है {{IETF RFC|0822}}, और [[सीमान्तक]] {{code|---}} [[MIME]] से उधार लिया गया है ({{IETF RFC|2046}}). एस्केप अनुक्रमों का पुन: उपयोग सी (प्रोग्रामिंग लैंग्वेज ) से किया जाता है, और मल्टी-लाइन स्ट्रिंग्स के लिए व्हाइटस्पेस रैपिंग [[HTML|एचटीएमएल]] से प्रेरित है। सूचियों और हैश में नेस्टेड सूचियाँ और हैश सम्मिलित हो सकते हैं, जो की [[वृक्ष संरचना|ट्री स्ट्रूकचर]] बनाते हैं; एकपक्षीय ग्राफ़ (अमूर्त डेटा प्रकार) को वाईएएमएल उपनामों ([[SOAP|एसओएपी]] में एक्सएमएल के समान) का उपयोग करके दर्शाया जा सकता है।<ref name="1.0" /> किन्तु एक्सएमएल का उद्देश्य स्ट्रीम में पढ़ना और लिखना है, यह एक्सएमएल के लिए सरल एपीआई से प्रेरित सुविधा है।<ref name="1.0" />


इस प्रकार से एक्सएमएल को रीड करने और लिखने के लिए समर्थन कई प्रोग्रामिंग लैंग्वेजो के लिए उपलब्ध है।<ref>{{Cite web|url=https://yaml.org/|title=आधिकारिक YAML वेब साइट|website=yaml.org}}</ref> कुछ स्रोत-कोड संपादक जैसे [[विम (पाठ संपादक)|वीआईएम]],<ref>{{cite web|url=https://www.arthurkoziel.com/setting-up-vim-for-yaml/|title=YAML संपादन के लिए विम की स्थापना|website=arthurkoziel.com}}</ref> [[Emacs]],<ref>{{cite web|url=https://www.emacswiki.org/emacs/YamlMode |title=यमल मोड|publisher=EmacsWiki |date=2015-06-12 |access-date=2016-12-05}}</ref> और विभिन्न एकीकृत विकास वातावरण<ref>{{cite web|author=aukaost |url=https://packagecontrol.io/packages/Pretty%20YAML |title=सुंदर YAML - पैकेज - पैकेज नियंत्रण|publisher=Packagecontrol.io |access-date=2016-12-05}}</ref><ref>{{cite web|url=https://marketplace.eclipse.org/category/free-tagging/yaml |title=yaml &#124; Eclipse Plugins, Bundles and Products - Eclipse Marketplace |publisher=Marketplace.eclipse.org |access-date=2016-12-05}}</ref><ref>{{cite web|author=Ruth Kusterer |url=https://netbeans.org/features/ruby/index.html |title=नेटबीन्स आईडीई - रूबी और रूबी ऑन रेल्स डेवलपमेंट|publisher=Netbeans.org |access-date=2016-12-05}}</ref> में इसमें ऐसी विशेषताएं हैं जो वाईएएमएल को संपादित करना सरल बनाती हैं, जैसे नेस्टेड संरचनाओं को मोड़ना या सिंटैक्स त्रुटियों को स्वचालित रूप से हाइलाइट करना है ।


अतः एक्सएमएल फ़ाइलों के लिए आधिकारिक अनुशंसित [[फ़ाइल नाम एक्सटेंशन]] 2006 से {{code|.yaml}} है।<ref>{{Cite web|url=https://yaml.org/faq.html|title=YAML मार्कअप भाषा नहीं है|date=September 24, 2006|archive-url=https://web.archive.org/web/20060924190202/https://yaml.org/faq.html|archive-date=2006-09-24|url-status=live}}</ref>
==इतिहास और नाम==
==इतिहास और नाम==
वाईएएमएल ({{IPAc-en|ˈ|j|æ|m|əl}}, ऊँट के साथ तुकबंदी करता है<ref name="YAML Version 1.2" /> पहली बार 2001 में क्लार्क इवांस द्वारा प्रस्तावित किया गया था,<ref>{{cite web |url=https://groups.yahoo.com/neo/groups/sml-dev/conversations/topics/4710 |title=वाईएएमएल ड्राफ्ट 0.1|last=Evans |first=Clark |date=May 11, 2001 |publisher=Yahoo! Tech groups: sml-dev |access-date=2019-03-21 |archiveurl=https://web.archive.org/web/20010603012942/http://groups.yahoo.com/group/sml-dev/message/4710|archivedate=2001-06-03}}</ref> जिन्होंने Ingy dot Net के साथ मिलकर इसे डिज़ाइन किया है<ref name="yaml_org_about">{{cite web |url=https://yaml.org/about.html |title=YAML मार्कअप भाषा नहीं है: के बारे में|website=YAML.org |access-date=2019-05-29}}</ref> और ओरेन बेन-किकी।<ref name="yaml_org_about"/>मूल रूप से YAML का अर्थ एक और मार्कअप भाषा कहा जाता था,<ref name="YAML_spec_2001_08_01">{{cite web |title=फिर भी एक और मार्कअप लैंग्वेज (YAML) 1.0|url=https://yaml.org/spec/history/2001-08-01.html |website=YAML.org |access-date=2019-05-29}}</ref> क्योंकि यह उस युग में जारी किया गया था जिसमें प्रस्तुति और कनेक्टिविटी (HTML, XML, SGML, आदि) के लिए मार्कअप भाषाओं का प्रसार देखा गया था। इसका प्रारंभिक नाम मौखिक संदर्भ के रूप में था<ref name="YAML_name_orig_2011_08_06">{{cite web |title=फिर भी एक और मार्कअप लैंग्वेज (YAML) 1.0|url=https://stackoverflow.com/questions/6968366/if-yaml-aint-markup-language-what-is-it |website=stackoverflow.com |access-date=2021-03-24}}</ref> प्रौद्योगिकी परिदृश्य में, इसके उद्देश्य को एक अन्य निर्माण के साथ एक मार्कअप भाषा के रूप में संदर्भित किया गया था, लेकिन फिर इसे डेटा-उन्मुख के रूप में इसके उद्देश्य को अलग करने के लिए, एक पुनरावर्ती संक्षिप्त नाम, YAML इज़ नॉट [[ पाठ के प्रस्तुतिकरण के लिए प्रयुक्त भाषा ]] के रूप में पुनर्निर्मित किया गया था। दस्तावेज़ मार्कअप की तुलना में.<!-- see mail list thread started by Brian Ingerson on 2001-05-19 https://sourceforge.net/p/yaml/mailman/message/5189450/ with name suggestion by Oren Ben-Kiki https://sourceforge.net/p/yaml/mailman/message/5189460/ -->
वाईएएमएल ({{IPAc-en|ˈ|j|æ|m|əl}}, कैमल के साथ राइम्स करता है<ref name="YAML Version 1.2" /> प्रथम समय 2001 में क्लार्क इवांस द्वारा प्रस्तावित किया गया था,<ref>{{cite web |url=https://groups.yahoo.com/neo/groups/sml-dev/conversations/topics/4710 |title=वाईएएमएल ड्राफ्ट 0.1|last=Evans |first=Clark |date=May 11, 2001 |publisher=Yahoo! Tech groups: sml-dev |access-date=2019-03-21 |archiveurl=https://web.archive.org/web/20010603012942/http://groups.yahoo.com/group/sml-dev/message/4710|archivedate=2001-06-03}}</ref> जिन्होंने इंजी डॉट नेट के साथ मिलकर इसे डिज़ाइन किया है<ref name="yaml_org_about">{{cite web |url=https://yaml.org/about.html |title=YAML मार्कअप भाषा नहीं है: के बारे में|website=YAML.org |access-date=2019-05-29}}</ref> और ओरेन बेन-किकी के साथ मिलकर डिजाइन किया था ।<ref name="yaml_org_about"/> मूल रूप से वाईएएमएल का अर्थ और मार्कअप लैंग्वेज कहा जाता था,<ref name="YAML_spec_2001_08_01">{{cite web |title=फिर भी एक और मार्कअप लैंग्वेज (YAML) 1.0|url=https://yaml.org/spec/history/2001-08-01.html |website=YAML.org |access-date=2019-05-29}}</ref> क्योंकि यह उस युग में प्रयुक्त किया गया था जिसमें प्रस्तुति और कनेक्टिविटी (एचटीएमएल , एक्सएमएल, एसजीएमएल, आदि) के लिए मार्कअप लैंग्वेजो का प्रसार देखा गया था। इसका प्रारंभिक नाम मौखिक संदर्भ के रूप में था<ref name="YAML_name_orig_2011_08_06">{{cite web |title=फिर भी एक और मार्कअप लैंग्वेज (YAML) 1.0|url=https://stackoverflow.com/questions/6968366/if-yaml-aint-markup-language-what-is-it |website=stackoverflow.com |access-date=2021-03-24}}</ref> प्रौद्योगिकी परिदृश्य में, इसके उद्देश्य को अन्य निर्माण के साथ मार्कअप लैंग्वेज के रूप में संदर्भित किया गया था, किन्तु फिर इसे डेटा-उन्मुख के रूप में इसके उद्देश्य को अलग करने के लिए, पुनरावर्ती संक्षिप्त नाम, वाईएएमएल इज़ नॉट [[ पाठ के प्रस्तुतिकरण के लिए प्रयुक्त भाषा |पाठ के प्रस्तुतिकरण के लिए प्रयुक्त]] लैंग्वेज के रूप में पुनर्निर्मित किया गया था। दस्तावेज़ मार्कअप के अतिरिक्त डेटा-उन्मुख के रूप में अलग करना है ।
 
 
==संस्करण==
==संस्करण==
{| class="wikitable"
{| class="wikitable"
|-
|-
! version !! release date
! वर्जन !! रिलीज़ डेट
|-
|-
| YAML 1.0 || {{date|2004-01-29}}
| एक्सएमएल 1.0 || {{date|2004-01-29}}
|-
|-
| YAML 1.1 || {{date|2005-01-18}}
| एक्सएमएल 1.1 || {{date|2005-01-18}}
|-
|-
| YAML 1.2.0 || {{date|2009-07-21}}
| एक्सएमएल 1.2.0 || {{date|2009-07-21}}
|-
|-
| YAML 1.2.1 || {{date|2009-10-01}}
| एक्सएमएल 1.2.1 || {{date|2009-10-01}}
|-
|-
| YAML 1.2.2 || {{date|2021-10-01}}
| एक्सएमएल 1.2.2 || {{date|2021-10-01}}
|-
|-


|}
|}


==डिज़ाइन==
==डिज़ाइन==
{{manual|section|date=August 2016}}
===सिंटेक्स===
===सिंटेक्स===


आधिकारिक साइट पर एक चीट शीट और पूर्ण विवरण उपलब्ध हैं।<ref>{{cite web |url=https://yaml.org/refcard.html |title=YAML{{nbsp}}1.1 Reference Card |website=YAML.org |access-date=2019-05-29}}</ref> निम्नलिखित मूल तत्वों का सारांश है।
आधिकारिक साइट पर चीट शीट और पूर्ण विवरण उपलब्ध हैं।<ref>{{cite web |url=https://yaml.org/refcard.html |title=YAML{{nbsp}}1.1 Reference Card |website=YAML.org |access-date=2019-05-29}}</ref> निम्नलिखित मूल तत्वों का सारांश है।


YAML कुछ नियंत्रण वर्णों को छोड़कर संपूर्ण यूनिकोड वर्ण सेट को स्वीकार करता है, और इसे [[UTF-8]], [[UTF-16]] या [[UTF-32]] में से किसी एक में एन्कोड किया जा सकता है। (हालाँकि UTF-32 अनिवार्य नहीं है, पार्सर के लिए JSON संगतता होना आवश्यक है।)<ref>{{cite web|url=https://yaml.org/spec/1.2/spec.html#id2771184|title=YAML Ain't Markup Language (YAML) Version 1.2 |website=YAML.org |access-date=2019-05-29}}</ref>
एक्सएमएल कुछ नियंत्रण वर्णों को छोड़कर संपूर्ण यूनिकोड वर्ण सेट को स्वीकार करता है, और इसे [[UTF-8|यूटीएफ-8]], [[UTF-16|यूटीएफ-16]] या [[UTF-32|यूटीएफ-32]] में से किसी में एन्कोड किया जा सकता है। (चूंकि [[UTF-32|यूटीएफ]]-32 अनिवार्य नहीं है, पार्सर के लिए जेएसओएन संगतता होना आवश्यक है।)<ref>{{cite web|url=https://yaml.org/spec/1.2/spec.html#id2771184|title=YAML Ain't Markup Language (YAML) Version 1.2 |website=YAML.org |access-date=2019-05-29}}</ref>
* [[व्हाइटस्पेस (कंप्यूटर विज्ञान)]] [[इंडेंट शैली]] का उपयोग संरचना को दर्शाने के लिए किया जाता है; हालाँकि, उस इंडेंटेशन के भाग के रूप में [[टैब वर्ण]]ों की अनुमति नहीं है।
* [[व्हाइटस्पेस (कंप्यूटर विज्ञान)]] [[इंडेंट शैली]] का उपयोग संरचना को दर्शाने के लिए किया जाता है; चूंकि , उस इंडेंटेशन के भाग के रूप में [[टैब वर्ण|टैब करैक्टर]] की अनुमति नहीं है।
* टिप्पणियाँ [[संख्या चिह्न]] से शुरू होती हैं ({{code|#}}), किसी लाइन पर कहीं भी शुरू हो सकता है और लाइन के अंत तक जारी रह सकता है। टिप्पणियों को व्हाइटस्पेस वर्णों द्वारा अन्य टोकन से अलग किया जाना चाहिए।<ref>{{cite web|url=https://yaml.org/spec/1.2/spec.html#id2780069|title=YAML Ain't Markup Language (YAML) Version 1.2 |website=YAML.org |access-date=2019-05-29}}</ref> यदि # अक्षर एक स्ट्रिंग के अंदर दिखाई देते हैं, तो वे संख्या चिह्न हैं ({{code|#}}) शाब्दिक.
* टिप्पणियाँ [[संख्या चिह्न]] ({{code|#}}),से प्रारंभ होती हैं किसी लाइन पर कहीं भी प्रारंभ हो सकता है और लाइन के अंत तक जारी रह सकता है। टिप्पणियों को व्हाइटस्पेस वर्णों द्वारा अन्य टोकन से अलग किया जाना चाहिए।<ref>{{cite web|url=https://yaml.org/spec/1.2/spec.html#id2780069|title=YAML Ain't Markup Language (YAML) Version 1.2 |website=YAML.org |access-date=2019-05-29}}</ref> यदि # अक्षर स्ट्रिंग के अंदर दिखाई देते हैं, तो वे संख्या चिह्न ({{code|#}}) अक्षर हैं।.
* सूची के सदस्यों को एक अग्रणी [[हाइफ़न-माइनस]] द्वारा दर्शाया जाता है ({{code|-}}) प्रति पंक्ति एक सदस्य के साथ।
* सूची के सदस्यों को अग्रणी [[हाइफ़न-माइनस]] ({{code|-}}) द्वारा दर्शाया जाता है
** एक सूची को वर्गाकार कोष्ठकों में पाठ संलग्न करके भी निर्दिष्ट किया जा सकता है ({{code|[...]}}) प्रत्येक प्रविष्टि को [[अल्पविराम (विराम चिह्न)]] द्वारा अलग किया जाता है।
** सूची को वर्गाकार कोष्ठकों में पाठ संलग्न करके भी निर्दिष्ट किया जा सकता है प्रत्येक प्रविष्टि को [[अल्पविराम (विराम चिह्न)]] ({{code|[...]}}) द्वारा अलग किया जाता है।
* एक सहयोगी सरणी प्रविष्टि को फॉर्म कुंजी में [[कोलन (विराम चिह्न)]] स्पेस (विराम चिह्न) का उपयोग करके दर्शाया जाता है: प्रति पंक्ति एक प्रविष्टि के साथ मान। YAML के लिए जरूरी है कि कोलन के बाद एक स्पेस हो ताकि यूआरएल-स्टाइल स्ट्रिंग्स एक जैसी हो जाएं {{code|http://www.wikipedia.org}} को उद्धरण चिह्नों में संलग्न किए बिना दर्शाया जा सकता है।
* सहयोगी सरणी प्रविष्टि को फॉर्म कुंजी में [[कोलन (विराम चिह्न)]] स्पेस (विराम चिह्न) का उपयोग करके दर्शाया जाता है: प्रति पंक्ति प्रविष्टि के साथ मान है । और वाईएएमएल के लिए महत्वपूर्ण है कि कोलन के अतिरिक्त स्पेस हो जिससे {{code|http://www.wikipedia.org}} जैसी यूआरएल-शैली स्ट्रिंग को उद्धरण चिह्नों में संलग्न किए बिना प्रस्तुत किया जा सके।
** [[प्रश्न चिह्न]] का उपयोग कुंजी के सामने ?key: मान के रूप में किया जा सकता है, जिससे कुंजी में बिना उद्धरण चिह्नों के अग्रणी डैश, वर्गाकार कोष्ठक आदि शामिल हो सकें।
** [[प्रश्न चिह्न]] का उपयोग कुंजी के सामने ?कुंजी: मान के रूप में किया जा सकता है, जिससे कुंजी में बिना उद्धरण चिह्नों के अग्रणी डैश, वर्गाकार कोष्ठक आदि सम्मिलित हो सकें।
** एक सहयोगी सरणी को [[घुंघराले ब्रेसिज़]] में संलग्न पाठ द्वारा भी निर्दिष्ट किया जा सकता है ({{code|{...} }}), कुंजियों को कोलन द्वारा मानों से अलग किया जाता है और प्रविष्टियों को अल्पविराम से अलग किया जाता है (JSON के साथ संगतता बनाए रखने के लिए रिक्त स्थान की आवश्यकता नहीं होती है)।
** सहयोगी सरणी को [[घुंघराले ब्रेसिज़|करली ब्रेसिज़]] ({{code|{...} }}) में संलग्न पाठ द्वारा भी निर्दिष्ट किया जा सकता है , कुंजियों को कोलन द्वारा मानों से अलग किया जाता है और प्रविष्टियों को अल्पविराम से अलग किया जाता है (जेएसओएन के साथ संगतता बनाए रखने के लिए रिक्त स्थान की आवश्यकता नहीं होती है)।
* स्ट्रिंग (कंप्यूटर विज्ञान) (वाईएएमएल में एक प्रकार का स्केलर) आमतौर पर उद्धृत नहीं किया जाता है, लेकिन [[दोहरे उद्धरण]] चिह्न में संलग्न किया जा सकता है|दोहरे उद्धरण चिह्न ({{code|"}}), या एकल उद्धरण|एकल-उद्धरण ({{code|'}}).
* स्ट्रिंग (कंप्यूटर विज्ञान) (वाईएएमएल में प्रकार का स्केलर) सामान्यतः उद्धृत नहीं किया जाता है, किन्तु [[दोहरे उद्धरण]] चिह्न में संलग्न किया जा सकता है दोहरे उद्धरण चिह्न ({{code|"}}), या एकल उद्धरण|एकल-उद्धरण ({{code|'}}).
** डबल-कोट्स के भीतर, विशेष वर्णों को सी (प्रोग्रामिंग भाषा) के साथ दर्शाया जा सकता है | [[बैकस्लैश]] से शुरू होने वाले सी-शैली एस्केप अनुक्रम ({{code|\}}). दस्तावेज़ीकरण के अनुसार केवल ऑक्टल एस्केप समर्थित है {{code|\0}}.
** डबल-कोट्स के अन्दर , विशेष वर्णों को सी (प्रोग्रामिंग लैंग्वेज ) के साथ दर्शाया जा सकता है | [[बैकस्लैश]] ({{code|\}})से प्रारंभ होने वाले सी-शैली एस्केप अनुक्रम. दस्तावेज़ीकरण के अनुसार केवल ऑक्टल एस्केप {{code|\0}} समर्थित है .
** एकल उद्धरण के भीतर एकमात्र समर्थित एस्केप अनुक्रम एक दोगुना एकल उद्धरण है ({{code|''}}) एकल उद्धरण को स्वयं के रूप में निरूपित करना {{code|'don''t'}}.
** एकल उद्धरण के अन्दर एकमात्र समर्थित एस्केप ({{code|''}}) अनुक्रम दोगुना एकल उद्धरण है एकल उद्धरण को स्वयं {{code|'don''t'}}. के रूप में निरूपित करना
* ब्लॉक स्केलर को संरक्षित करने के लिए वैकल्पिक संशोधक के साथ इंडेंट शैली के साथ सीमांकित किया गया है (<code>|</code>) या मोड़ो ({{code|>}}) नई पंक्तियाँ।
*ब्लॉक स्केलर को (<code>|</code>) या फोल्ड ({{code|>}}) न्यूलाइन को संरक्षित करने के लिए वैकल्पिक संशोधक के साथ इंडेंटेशन के साथ सीमांकित किया जाता है।
* एक ही स्ट्रीम में एकाधिक दस्तावेज़ों को तीन [[हाइफ़न]] द्वारा अलग किया जाता है ({{code|---}}).
* ही स्ट्रीम में एकाधिक दस्तावेज़ों को तीन [[हाइफ़न]] ({{code|---}}) द्वारा अलग किया जाता है .
** तीन [[पूर्ण विराम]] ({{code|...}}) वैकल्पिक रूप से किसी दस्तावेज़ को एक स्ट्रीम के भीतर समाप्त करें।
** तीन [[पूर्ण विराम]] ({{code|...}}) वैकल्पिक रूप से किसी दस्तावेज़ को स्ट्रीम के अन्दर समाप्त करें।
* दोहराए गए नोड्स को प्रारंभ में एक [[एम्परसेंड]] द्वारा दर्शाया जाता है ({{code|&}}) और उसके बाद [[तारांकन]] चिह्न के साथ संदर्भित ({{code|*}}).
* दोहराए गए नोड्स को प्रारंभ में [[एम्परसेंड]] ({{code|&}}) द्वारा दर्शाया जाता है और इसके अतिरिक्त [[तारांकन]] चिह्न ({{code|*}}). के साथ संदर्भित
* दोहरे [[विस्मयादिबोधक चिह्न]] का उपयोग करके नोड्स को एक प्रकार या टैग के साथ लेबल किया जा सकता है ({{code|!!}}) के बाद एक स्ट्रिंग आती है, जिसे यूआरआई में विस्तारित किया जा सकता है।
* दोहरे [[विस्मयादिबोधक चिह्न|विस्मयादिबोधक चिह्न ({{code|!!}})]] का उपयोग करके नोड्स को प्रकार या टैग के साथ लेबल किया जा सकता है के अतिरिक्त स्ट्रिंग आती है, जिसे यूआरआई में विस्तारित किया जा सकता है।
* एक स्ट्रीम में YAML दस्तावेज़ों के पहले एक [[प्रतिशत चिह्न]] से बना 'निर्देश' हो सकता है ({{code|%}}) के बाद एक नाम और स्थान-सीमांकित पैरामीटर आते हैं। YAML 1.1 में दो निर्देश परिभाषित हैं:
* स्ट्रीम में वाईएएमएल दस्तावेज़ों के पहले [[प्रतिशत चिह्न]] ({{code|%}}) से बना 'निर्देश' हो सकता है के अतिरिक्त नाम और स्थान-सीमांकित पैरामीटर आते हैं। वाईएएमएल 1.1 में दो निर्देश परिभाषित हैं:
** किसी दिए गए दस्तावेज़ में YAML के संस्करण की पहचान करने के लिए %YAML निर्देश का उपयोग किया जाता है।
** किसी दिए गए दस्तावेज़ में वाईएएमएल के संस्करण की पहचान करने के लिए % एक्सएमएल निर्देश का उपयोग किया जाता है।
** %TAG निर्देश का उपयोग URI उपसर्गों के शॉर्टकट के रूप में किया जाता है। फिर इन शॉर्टकट्स का उपयोग नोड प्रकार टैग में किया जा सकता है।
** %टैग निर्देश का उपयोग यूआरआई उपसर्गों के शॉर्टकट के रूप में किया जाता है। फिर इन शॉर्टकट्स का उपयोग नोड प्रकार टैग में किया जा सकता है।


===बुनियादी घटक===
===मूलभूत घटक===


पारंपरिक ब्लॉक प्रारूप सूची में एक नया आइटम शुरू करने के लिए एक हाइफ़न+स्पेस का उपयोग करता है।
पारंपरिक ब्लॉक प्रारूप सूची में नया आइटम प्रारंभ करने के लिए हाइफ़न+स्पेस का उपयोग करता है।
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
--- # Favorite movies
--- # Favorite movies
Line 96: Line 91:
- The Man Who Wasn't There
- The Man Who Wasn't There
</syntaxhighlight>
</syntaxhighlight>
वैकल्पिक इनलाइन प्रारूप को अल्पविराम+स्पेस द्वारा सीमांकित किया गया है और कोष्ठक में संलग्न किया गया है ([[जावास्क्रिप्ट ऑब्जेक्ट नोटेशन]] के समान)।<ref>{{cite web |url=http://www.jigocloud.com/en/blog/yaml-is-json |title=क्लाउड आधारित प्रबंधन ऐप्स|website=JigoCloud.com |access-date=2016-09-28 |archive-url=https://web.archive.org/web/20160917202144/http://www.jigocloud.com/en/blog/yaml-is-json |archive-date=2016-09-17 |url-status=dead }}</ref>
वैकल्पिक इनलाइन प्रारूप को अल्पविराम+स्पेस द्वारा सीमांकित किया गया है और कोष्ठक में संलग्न किया गया है ([[जावास्क्रिप्ट ऑब्जेक्ट नोटेशन]] के समान) है ।<ref>{{cite web |url=http://www.jigocloud.com/en/blog/yaml-is-json |title=क्लाउड आधारित प्रबंधन ऐप्स|website=JigoCloud.com |access-date=2016-09-28 |archive-url=https://web.archive.org/web/20160917202144/http://www.jigocloud.com/en/blog/yaml-is-json |archive-date=2016-09-17 |url-status=dead }}</ref>
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
--- # Shopping list
--- # Shopping list
[milk, pumpkin pie, eggs, juice]
[milk, pumpkin pie, eggs, juice]
</syntaxhighlight>
</syntaxhighlight>
कुंजियाँ को कोलन+स्पेस द्वारा मानों से अलग किया जाता है। इंडेंटेड ब्लॉक, जो YAML डेटा फ़ाइलों में आम हैं, कुंजी/मूल्य जोड़े को अलग करने के लिए इंडेंटेशन और नई लाइनों का उपयोग करते हैं। इनलाइन ब्लॉक, जो कि YAML डेटा स्ट्रीम में आम है, ब्रेसिज़ के बीच कुंजी/मान जोड़े को अलग करने के लिए अल्पविराम+स्पेस का उपयोग करते हैं।
कुंजियाँ को कोलन+स्पेस द्वारा मानों से अलग किया जाता है। इंडेंटेड ब्लॉक, जो वाईएएमएल डेटा फ़ाइलों में समान हैं, कुंजी/मूल्य जोड़े को अलग करने के लिए इंडेंटेशन और नई लाइनों का उपयोग करते हैं। इनलाइन ब्लॉक, जो कि वाईएएमएल डेटा स्ट्रीम में समान है, ब्रेसिज़ के मध्य कुंजी/मान जोड़े को अलग करने के लिए अल्पविराम+स्पेस का उपयोग करते हैं।
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
--- # Indented Block
--- # Indented Block
Line 109: Line 104:
{name: John Smith, age: 33}
{name: John Smith, age: 33}
</syntaxhighlight>
</syntaxhighlight>
स्ट्रिंग्स को उद्धरण चिह्नों की आवश्यकता नहीं है. मल्टी-लाइन स्ट्रिंग्स लिखने के दो तरीके हैं, एक न्यूलाइन्स को संरक्षित करना (का उपयोग करना)। <code>|</code> कैरेक्टर) और वह जो न्यूलाइन्स को फोल्ड करता है (का उपयोग करके)। {{code|>}} वर्ण), दोनों के बाद एक नई पंक्ति वर्ण आता है।
इस प्रकार से स्ट्रिंग्स को उद्धरण चिह्नों की आवश्यकता नहीं है. मल्टी-लाइन स्ट्रिंग्स लिखने के दो तरीके हैं, न्यूलाइन्स को संरक्षित करना (का उपयोग करना)। <code>|</code> कैरेक्टर) और वह जो न्यूलाइन्स को फोल्ड करता है (का उपयोग करके)। {{code|>}} वर्ण), दोनों के अतिरिक्त नई पंक्ति वर्ण आता है।


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Line 119: Line 114:
   So he carefully sat on the ceiling
   So he carefully sat on the ceiling
</syntaxhighlight>
</syntaxhighlight>
डिफ़ॉल्ट रूप से, अग्रणी इंडेंटेशन (पहली पंक्ति का) और अनुगामी रिक्त स्थान हटा दिए जाते हैं, हालांकि अन्य व्यवहार को स्पष्ट रूप से निर्दिष्ट किया जा सकता है।
अतः डिफ़ॉल्ट रूप से, अग्रणी इंडेंटेशन (प्रथम पंक्ति का) और अनुगामी रिक्त स्थान हटा दिए जाते हैं, चूंकि अन्य व्यवहार को स्पष्ट रूप से निर्दिष्ट किया जा सकता है।


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Line 145: Line 140:
   - Susan Williams
   - Susan Williams
</syntaxhighlight>
</syntaxhighlight>
ऑब्जेक्ट और सूचियाँ yaml में महत्वपूर्ण घटक हैं और इन्हें मिश्रित किया जा सकता है। पहला उदाहरण कुंजी-मूल्य वाली वस्तुओं की एक सूची है, सभी स्मिथ परिवार के लोग हैं। दूसरा उन्हें लिंग के आधार पर सूचीबद्ध करता है; यह एक कुंजी-मूल्य वाली वस्तु है जिसमें दो सूचियाँ हैं।
ऑब्जेक्ट और सूचियाँ वाईएएमएल में महत्वपूर्ण घटक हैं और इन्हें मिश्रित किया जा सकता है। इस प्रकार से उदाहरण कुंजी-मूल्य वाली वस्तुओं की सूची है, सभी स्मिथ निकटम के लोग हैं। दूसरा उन्हें लिंग के आधार पर सूचीबद्ध करता है; यह कुंजी-मूल्य वाली वस्तु है जिसमें दो सूचियाँ हैं।


===उन्नत घटक===
===उन्नत घटक===
दो विशेषताएं जो YAML को अन्य डेटा-क्रमांकन भाषाओं की क्षमताओं से अलग करती हैं, वे संरचनाएं हैं<ref name=yaml_structures>{{cite web|title=YAML 1.2 संरचनाओं की विशिष्टता|url=https://yaml.org/spec/1.2/spec.html#id2760395 |website=YAML.org |access-date=2019-05-29}}</ref> और डेटा टाइपिंग।
दो विशेषताएं जो वाईएएमएल को अन्य डेटा-क्रमांकन लैंग्वेजो की क्षमताओं से अलग करती हैं, वे संरचनाएं हैं<ref name=yaml_structures>{{cite web|title=YAML 1.2 संरचनाओं की विशिष्टता|url=https://yaml.org/spec/1.2/spec.html#id2760395 |website=YAML.org |access-date=2019-05-29}}</ref> और डेटा टाइपिंग करती है ।


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


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


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


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Line 174: Line 169:
- Instrument2: *id002  # refers to the second step
- Instrument2: *id002  # refers to the second step
</syntaxhighlight>
</syntaxhighlight>
अधिकांश YAML दस्तावेज़ों में स्पष्ट डेटा टाइपिंग शायद ही कभी देखी जाती है क्योंकि YAML सरल प्रकारों का स्वत: पता लगाता है। डेटा प्रकारों को तीन श्रेणियों में विभाजित किया जा सकता है: कोर, परिभाषित और उपयोगकर्ता-परिभाषित। कोर से किसी भी पार्सर में मौजूद होने की उम्मीद की जाती है (उदाहरण के लिए फ्लोट्स, इनट्स, स्ट्रिंग्स, सूचियां, मानचित्र, ...)। कई और उन्नत डेटा प्रकार, जैसे बाइनरी डेटा, को YAML विनिर्देश में परिभाषित किया गया है लेकिन सभी कार्यान्वयन में समर्थित नहीं है। अंत में YAML उपयोगकर्ता-परिभाषित वर्गों, संरचनाओं या प्राइमेटिव्स (उदाहरण के लिए क्वाड-प्रिसिजन फ्लोट्स) को समायोजित करने के लिए स्थानीय रूप से डेटा प्रकार परिभाषाओं को विस्तारित करने का एक तरीका परिभाषित करता है।
इस प्रकार से अधिकांश वाईएएमएल दस्तावेज़ों में स्पष्ट डेटा टाइपिंग कदाचित् ही कभी देखी जाती है क्योंकि वाईएएमएल सरल प्रकारों का स्वत: पता लगाता है। डेटा प्रकारों को तीन श्रेणियों में विभाजित किया जा सकता है: कोर, परिभाषित और उपयोगकर्ता-परिभाषित। कोर से किसी भी पार्सर में उपस्तिथ होने की आशा की जाती है (उदाहरण के लिए फ्लोट्स, इनट्स, स्ट्रिंग्स, सूचियां, मानचित्र, ...)। कई और उन्नत डेटा प्रकार, जैसे बाइनरी डेटा, को वाईएएमएल विनिर्देश में परिभाषित किया गया है किन्तु सभी कार्यान्वयन में समर्थित नहीं है। अंत में वाईएएमएल उपयोगकर्ता-परिभाषित वर्गों, संरचनाओं या प्राइमेटिव्स (उदाहरण के लिए क्वाड-प्रिसिजन फ्लोट्स) को समायोजित करने के लिए स्थानीय रूप से डेटा प्रकार परिलैंग्वेज ओं को विस्तारित करने की विधि परिभाषित करता है।


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


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Line 189: Line 184:
h: Yes we have No bananas  # a string, "Yes" and "No" disambiguated by context.
h: Yes we have No bananas  # a string, "Yes" and "No" disambiguated by context.
</syntaxhighlight>
</syntaxhighlight>
YAML के प्रत्येक कार्यान्वयन में प्रत्येक विनिर्देश-परिभाषित डेटा प्रकार नहीं होता है। ये अंतर्निहित प्रकार एक डबल-विस्मयादिबोधक [[सिगिल (कंप्यूटर प्रोग्रामिंग)]] उपसर्ग का उपयोग करते हैं ({{code|!!}}). विशेष रूप से दिलचस्प जो यहां नहीं दिखाए गए हैं वे सेट, ऑर्डर किए गए मानचित्र, टाइमस्टैम्प और हेक्साडेसिमल हैं। यहां बेस64-एन्कोडेड बाइनरी डेटा का एक उदाहरण दिया गया है।
एक्सएमएल के प्रत्येक कार्यान्वयन में प्रत्येक विनिर्देश-परिभाषित डेटा प्रकार नहीं होता है। ये अंतर्निहित प्रकार डबल-विस्मयादिबोधक [[सिगिल (कंप्यूटर प्रोग्रामिंग)]] ({{code|!!}}). उपसर्ग का उपयोग करते हैं विशेष रूप से दिलचस्प जो यहां नहीं दिखाए गए हैं वे सेट, ऑर्डर किए गए मानचित्र, टाइमस्टैम्प और हेक्साडेसिमल हैं। यहां बेस64-एन्कोडेड बाइनरी डेटा का उदाहरण दिया गया है।


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Line 199: Line 194:
   1IAADs=
   1IAADs=
</syntaxhighlight>
</syntaxhighlight>
YAML के कई कार्यान्वयन ऑब्जेक्ट क्रमांकन के लिए उपयोगकर्ता-परिभाषित डेटा प्रकारों का समर्थन कर सकते हैं। स्थानीय डेटा प्रकार सार्वभौमिक डेटा प्रकार नहीं हैं, लेकिन इन्हें YAML पार्सर लाइब्रेरी का उपयोग करके एप्लिकेशन में परिभाषित किया गया है। स्थानीय डेटा प्रकार एकल विस्मयादिबोधक चिह्न का उपयोग करते हैं ({{code|!}}).
इसके अतिरिक्त एक्सएमएल के कई कार्यान्वयन ऑब्जेक्ट क्रमांकन के लिए उपयोगकर्ता-परिभाषित डेटा प्रकारों का समर्थन कर सकते हैं। स्थानीय डेटा प्रकार सार्वभौमिक डेटा प्रकार नहीं हैं, किन्तु इन्हें वाईएएमएल पार्सर लाइब्रेरी का उपयोग करके एप्लिकेशन में परिभाषित किया गया है। स्थानीय डेटा प्रकार एकल विस्मयादिबोधक चिह्न ({{code|!}}). का उपयोग करते हैं


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


==सुविधाएँ==
==सुविधाएँ==
Line 247: Line 242:
=== इंडेंटेड परिसीमन ===
=== इंडेंटेड परिसीमन ===


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


<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Line 262: Line 257:
date: 2007-06-01
date: 2007-06-01
</syntaxhighlight>
</syntaxhighlight>
YAML को सभी आंतरिक उद्धरण चिह्नों को उद्धृत करके और उनसे बचकर JSON में रखा जा सकता है। YAML को आरक्षित वर्णों से बचकर XML में रखा जा सकता है ({{code|<}}, {{code|>}}, {{code|&}}, {{code|'}}, {{code|"}}) और व्हाइटस्पेस को परिवर्तित करके, या इसे [[सीडीएटीए]] अनुभाग में रखकर।
 
 
वाईएएमएल को सभी आंतरिक उद्धरण चिह्नों को उद्धृत करके और उनसे बचकर जेएसओएन में रखा जा सकता है। वाईएएमएल को आरक्षित वर्णों ({{code|<}}, {{code|>}}, {{code|&}}, {{code|'}}, {{code|"}}) से बचकर और व्हाइटस्पेस को परिवर्तित करके, या इसे [[सीडीएटीए]] अनुभाग में रखकर एक्सएमएल में रखा जा सकता है।


===गैर-पदानुक्रमित डेटा मॉडल===
===गैर-पदानुक्रमित डेटा मॉडल===
JSON के विपरीत, जो केवल एक एकल अभिभावक वाले प्रत्येक चाइल्ड नोड के साथ एक पदानुक्रमित मॉडल में डेटा का प्रतिनिधित्व कर सकता है, YAML एक सरल संबंधपरक योजना भी प्रदान करता है जो समान डेटा के दोहराव को अनावश्यक रूप से दर्ज करने के बजाय पेड़ में दो या दो से अधिक बिंदुओं से संदर्भित करने की अनुमति देता है। वे बिंदु. यह XML में निर्मित IDREF सुविधा के समान है।<ref>{{cite web|url=http://www.w3.org/TR/2000/REC-xml-20001006#idref|title=एक्स्टेंसिबल मार्कअप लैंग्वेज (एक्सएमएल) 1.0 (दूसरा संस्करण)| website  = W3.org|access-date=27 May 2015}}</ref> फिर YAML पार्सर इन संदर्भों को पूरी तरह से भरे हुए डेटा संरचनाओं में विस्तारित करता है, जिन्हें पढ़ते समय वे दर्शाते हैं, इसलिए जो भी प्रोग्राम पार्सर का उपयोग कर रहा है, उसे XML प्रोसेसर के विपरीत, रिलेशनल एन्कोडिंग मॉडल के बारे में पता होना जरूरी नहीं है, जो संदर्भों का विस्तार नहीं करता है। यह विस्तार कॉन्फ़िगरेशन फ़ाइलों या प्रोसेसिंग प्रोटोकॉल में डेटा प्रविष्टि त्रुटियों को कम करते हुए पठनीयता को बढ़ा सकता है, जहां रिकॉर्ड की अनुक्रमिक श्रृंखला में कई पैरामीटर समान रहते हैं जबकि केवल कुछ भिन्न होते हैं। एक उदाहरण यह है कि इनवॉइस में शिप-टू और बिल-टू रिकॉर्ड लगभग हमेशा एक ही डेटा होते हैं।
जेएसओएन के विपरीत, जो केवल एकल अभिभावक वाले प्रत्येक चाइल्ड नोड के साथ पदानुक्रमित मॉडल में डेटा का प्रतिनिधित्व कर सकता है, वाईएएमएल सरल संबंधपरक योजना भी प्रदान करता है जो समान डेटा के दोहराव को अनावश्यक रूप से इंगित करने के अतिरिक्त ट्री में दो या दो से अधिक बिंदुओं से संदर्भित करने की अनुमति देता है। वे बिंदु. यह एक्सएमएल में निर्मित आईडीआरईएफ सुविधा के समान है।<ref>{{cite web|url=http://www.w3.org/TR/2000/REC-xml-20001006#idref|title=एक्स्टेंसिबल मार्कअप लैंग्वेज (एक्सएमएल) 1.0 (दूसरा संस्करण)| website  = W3.org|access-date=27 May 2015}}</ref> अर्थात वाईएएमएल पार्सर इन संदर्भों को पूर्ण रूप से भरे हुए डेटा संरचनाओं में विस्तारित करता है, जिन्हें पढ़ते समय वे दर्शाते हैं, इसलिए जो भी प्रोग्राम पार्सर का उपयोग कर रहा है, उसे एक्सएमएल प्रोसेसर के विपरीत, रिलेशनल एन्कोडिंग मॉडल के बारे में पता होना महत्वपूर्ण नहीं है, जो संदर्भों का विस्तार नहीं करता है। यह विस्तार कॉन्फ़िगरेशन फ़ाइलों या प्रोसेसिंग प्रोटोकॉल में डेटा प्रविष्टि त्रुटियों को कम करते हुए रीडेबिलिटी को बढ़ा सकता है, जहां रिकॉर्ड की अनुक्रमिक श्रृंखला में कई पैरामीटर समान रहते हैं किन्तु यह अनेक प्रकार से भिन्न होते हैं। इस प्रकार से उदाहरण यह है कि इनवॉइस में शिप-टू और बिल-टू रिकॉर्ड लगभग सदैव एक ही डेटा होते हैं।


===व्यावहारिक विचार===
===व्यावहारिक विचार===


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


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


विपरीत रूप से, हालांकि इसका इंडेंटेड परिसीमन गहराई से निहित पदानुक्रमों को जटिल बनाता प्रतीत हो सकता है, YAML इंडेंट को एक एकल स्थान जितना छोटा संभालता है, और यह मार्कअप भाषाओं की तुलना में बेहतर संपीड़न प्राप्त कर सकता है। इसके अतिरिक्त, अत्यधिक गहरे इंडेंटेशन से पूरी तरह से बचा जा सकता है: 1) इंडेंटेशन के बिना इनलाइन शैली (यानी JSON-जैसे प्रारूप) पर वापस लौटना; या 2) पदानुक्रम को एक सपाट रूप में खोलने के लिए रिलेशनल एंकर का उपयोग करना, जिसे YAML पार्सर पारदर्शी रूप से पूर्ण डेटा संरचना में पुनर्गठित करेगा।<ref>{{Cite web |title=Free Courses {{!}} Introduction to YAML - A hands -on course |url=https://insidelearn.com/introduction-to-yaml-a-hands-on-course |access-date=2022-08-04 |website=Insidelearn |language=en}}</ref>
अतः विपरीत रूप से, चूंकि इसका इंडेंटेड परिसीमन गहराई से निहित पदानुक्रमों को जटिल बनाता प्रतीत हो सकता है, वाईएएमएल इंडेंट को एकल स्थान जितना छोटा इंडेंट को संभालता है, और यह मार्कअप लैंग्वेजो की तुलना में उत्तम संपीड़न प्राप्त कर सकता है। इसके अतिरिक्त, अत्यधिक गहरे इंडेंटेशन से पूर्ण रूप से बचा जा सकता है: 1) इंडेंटेशन के बिना इनलाइन शैली (अर्थात जेएसओएन -जैसे प्रारूप) पर वापस लौटना; या 2) पदानुक्रम को सपाट रूप में खोलने के लिए रिलेशनल एंकर का उपयोग करना, जिसे वाईएएमएल पार्सर पारदर्शी रूप से पूर्ण डेटा संरचना में पुनर्गठित करेगा।<ref>{{Cite web |title=Free Courses {{!}} Introduction to YAML - A hands -on course |url=https://insidelearn.com/introduction-to-yaml-a-hands-on-course |access-date=2022-08-04 |website=Insidelearn |language=en}}</ref>
===सुरक्षा===


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


===सुरक्षा===
चूंकि , वाईएएमएल लैंग्वेज -विशिष्ट टैग की अनुमति देता है जिससे उन टैग का समर्थन करने वाले पार्सर द्वारा एकपक्षीय स्थानीय ऑब्जेक्ट बनाया जा सकता है । कोई भी वाईएएमएल पार्सर जो परिष्कृत ऑब्जेक्ट इंस्टेंटेशन को निष्पादित करने की अनुमति देता है, इंजेक्शन अटैक की संभावना को खोलता है। पर्ल पार्सर्स जो इच्छानुसार कक्षाओं की वस्तुओं को लोड करने की अनुमति देते हैं, तथाकथित धन्य मान बनाते हैं। इन मानों का उपयोग अप्रत्याशित व्यवहार को ट्रिगर कर सकता है, उदा. यदि कक्षा अतिभारित ऑपरेटरों का उपयोग करती है। इससे इच्छानुकूल से पर्ल कोड का निष्पादन हो सकता है।<ref>{{Cite web |date=2022-08-04 |title=वाईएएमएल|url=http://m.kuliah-daring-mm-ign.itbk.web.id/IT/2380-2260/SnakeYAML_3344_m-kuliah-daring-mm-ign-itbk.html |access-date=2022-08-04 |website=[[Teknik Informatika]]}}</ref>


YAML पूरी तरह से एक डेटा-प्रस्तुति भाषा है और इस प्रकार इसमें कोई निष्पादन योग्य कमांड नहीं है। जबकि एप्लिकेशन सुरक्षा और क्लाइंट में JavaScript#गलत विश्वास किसी भी डेटा भाषा में स्वाभाविक रूप से संभव है, कार्यान्वयन इतना कुख्यात नुकसान है कि YAML की संबंधित कमांड भाषा की कमी एक सापेक्ष सुरक्षा लाभ हो सकती है।
स्थिति पायथन या रूबी पार्सर्स के लिए समान है। पीवाई एक्सएमएल दस्तावेज़ के अनुसार है :<ref>{{cite web|title=PyYAML दस्तावेज़ीकरण, YAML लोड हो रहा है|url=http://pyyaml.org/wiki/PyYAMLDocumentation#LoadingYAML|website=Pyyaml.org|access-date=2016-09-28}}</ref>


हालाँकि, YAML भाषा-विशिष्ट टैग की अनुमति देता है ताकि उन टैग का समर्थन करने वाले पार्सर द्वारा मनमाना स्थानीय ऑब्जेक्ट बनाया जा सके। कोई भी YAML पार्सर जो परिष्कृत ऑब्जेक्ट इंस्टेंटेशन को निष्पादित करने की अनुमति देता है, इंजेक्शन हमले की संभावना को खोलता है। पर्ल पार्सर्स जो मनमानी कक्षाओं की वस्तुओं को लोड करने की अनुमति देते हैं, तथाकथित धन्य मान बनाते हैं। इन मानों का उपयोग अप्रत्याशित व्यवहार को ट्रिगर कर सकता है, उदा. यदि कक्षा अतिभारित ऑपरेटरों का उपयोग करती है। इससे मनमाने ढंग से पर्ल कोड का निष्पादन हो सकता है।<ref>{{Cite web |date=2022-08-04 |title=वाईएएमएल|url=http://m.kuliah-daring-mm-ign.itbk.web.id/IT/2380-2260/SnakeYAML_3344_m-kuliah-daring-mm-ign-itbk.html |access-date=2022-08-04 |website=[[Teknik Informatika]]}}</ref>{{dead url|date=January 2023}}{{rs?|date=January 2023}}
ध्यान दें कि यदि आप इंटरनेट जैसे किसी अविश्वसनीय स्रोत से वाईएएमएल दस्तावेज़ प्राप्त करते हैं तो एकपक्षीय पायथन ऑब्जेक्ट बनाने की क्षमता अविश्वसनीय हो सकती है। फ़ंक्शन {{code|yaml.safe_load}} इस क्षमता को सरल पायथन ऑब्जेक्ट्स जैसे पूर्णांक या सूचियों तक सीमित करता है। [...]


स्थिति पायथन या रूबी पार्सर्स के लिए समान है। PyYAML दस्तावेज़ के अनुसार:<ref>{{cite web|title=PyYAML दस्तावेज़ीकरण, YAML लोड हो रहा है|url=http://pyyaml.org/wiki/PyYAMLDocumentation#LoadingYAML|website=Pyyaml.org|access-date=2016-09-28}}</ref>
पीवाई एक्सएमएल आपको किसी भी प्रकार का पायथन ऑब्जेक्ट बनाने की अनुमति देता है। यहां तक ​​कि पायथन कक्षाओं के उदाहरणों का निर्माण भी इसका उपयोग करके किया जा सकता है {{code|!!python/object}} दिन।
<ब्लॉककोट>
ध्यान दें कि यदि आप इंटरनेट जैसे किसी अविश्वसनीय स्रोत से YAML दस्तावेज़ प्राप्त करते हैं तो एक मनमाना पायथन ऑब्जेक्ट बनाने की क्षमता खतरनाक हो सकती है। कार्यक्रम {{code|yaml.safe_load}} इस क्षमता को सरल पायथन ऑब्जेक्ट्स जैसे पूर्णांक या सूचियों तक सीमित करता है। [...]


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


===डेटा प्रोसेसिंग और प्रतिनिधित्व===
===डेटा प्रोसेसिंग और प्रतिनिधित्व===


YAML विनिर्देश एक इंस्टेंस दस्तावेज़ को प्रेजेंटेशन या कैरेक्टर स्ट्रीम के रूप में पहचानता है।<ref>{{cite web|url=https://yaml.org/spec/current.html#id2506012 |title=मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref> YAML इंस्टेंस दस्तावेज़ में प्राथमिक तार्किक संरचनाएं स्केलर, अनुक्रम और मैपिंग हैं।<ref name="TypesRepos">Additional, optional-use, logical structures are enumerated in the YAML types repository.{{cite web | title =Language-Independent Types for YAML Version 1.1 | url = https://yaml.org/type/index.html |website=YAML.org |access-date=2019-05-29}} The tagged types in the YAML types repository are optional and therefore not essential for conformant YAML processors. "The use of these tags is not mandatory."</ref> YAML विनिर्देश कुछ बुनियादी बाधाओं को भी इंगित करता है जो इन प्राथमिक तार्किक संरचनाओं पर लागू होते हैं। उदाहरण के लिए, विनिर्देश के अनुसार, मैपिंग कुंजियों में कोई क्रम नहीं होता है। प्रत्येक मामले में जहां नोड क्रम महत्वपूर्ण है, एक अनुक्रम का उपयोग किया जाना चाहिए।<ref>{{cite web | url = https://yaml.org/spec/current.html#id2508372 | title = YAML मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref>
एक्सएमएल विनिर्देश इंस्टेंस दस्तावेज़ को प्रेजेंटेशन या कैरेक्टर स्ट्रीम के रूप में पहचानता है।<ref>{{cite web|url=https://yaml.org/spec/current.html#id2506012 |title=मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref> वाईएएमएल इंस्टेंस दस्तावेज़ में प्राथमिक तार्किक संरचनाएं स्केलर, अनुक्रम और मैपिंग हैं।<ref name="TypesRepos">Additional, optional-use, logical structures are enumerated in the YAML types repository.{{cite web | title =Language-Independent Types for YAML Version 1.1 | url = https://yaml.org/type/index.html |website=YAML.org |access-date=2019-05-29}} The tagged types in the YAML types repository are optional and therefore not essential for conformant YAML processors. "The use of these tags is not mandatory."</ref> वाईएएमएल विनिर्देश कुछ मूलभूत बाधाओं को भी इंगित करता है जो इन प्राथमिक तार्किक संरचनाओं पर प्रयुक्त होते हैं। उदाहरण के लिए, विनिर्देश के अनुसार, मैपिंग कुंजियों में कोई क्रम नहीं होता है। प्रत्येक स्तिथि में जहां नोड क्रम महत्वपूर्ण है, अनुक्रम का उपयोग किया जाना चाहिए।<ref>{{cite web | url = https://yaml.org/spec/current.html#id2508372 | title = YAML मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref>
इसके अलावा, YAML प्रोसेसर के लिए अनुरूपता को परिभाषित करने में, YAML विनिर्देश दो प्राथमिक संचालन को परिभाषित करता है: डंप और लोड। सभी YAML-संगत प्रोसेसरों को इनमें से कम से कम एक ऑपरेशन प्रदान करना होगा, और वैकल्पिक रूप से दोनों प्रदान कर सकते हैं।<ref>{{cite web|url=https://yaml.org/spec/current.html#id2504671 |title=मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref> अंत में, YAML विनिर्देश एक सूचना मॉडल या प्रतिनिधित्व ग्राफ़ को परिभाषित करता है, जिसे डंप और लोड संचालन दोनों के लिए प्रसंस्करण के दौरान बनाया जाना चाहिए, हालांकि इस प्रतिनिधित्व को एपीआई के माध्यम से उपयोगकर्ता को उपलब्ध कराने की आवश्यकता नहीं है।<ref>{{cite web|url=https://yaml.org/spec/current.html#id2504309|title=YAML मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref>
 


इसके अतिरिक्त , वाईएएमएल प्रोसेसर के लिए अनुरूपता को परिभाषित करने में, वाईएएमएल विनिर्देश दो प्राथमिक संचालन को परिभाषित करता है: डंप और लोड को परिभाषित करता है। सभी वाईएएमएल -प्रोसेसरों को इनमें से कम से कम ऑपरेशन प्रदान करना होगा, और वैकल्पिक रूप से दोनों प्रदान कर सकते हैं।<ref>{{cite web|url=https://yaml.org/spec/current.html#id2504671 |title=मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref> अंत में, वाईएएमएल विनिर्देश सूचना मॉडल या प्रतिनिधित्व ग्राफ़ को परिभाषित करता है, जिसे डंप और लोड संचालन दोनों के लिए प्रसंस्करण के समय बनाया जाना चाहिए, चूंकि इस प्रतिनिधित्व को एपीआई के माध्यम से उपयोगकर्ता को उपलब्ध कराने की आवश्यकता नहीं है।<ref>{{cite web|url=https://yaml.org/spec/current.html#id2504309|title=YAML मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है|website=YAML.org |access-date=2019-05-29}}</ref>
==अन्य क्रमांकन प्रारूपों के साथ तुलना==
==अन्य क्रमांकन प्रारूपों के साथ तुलना==


===JSON के साथ तुलना {{anchor|JSON}}===
===जेएसओएन के साथ तुलना ===
{{See also|JSON#YAML}}
{{See also|जेएसओएन#वाईएएमएल}}


जावास्क्रिप्ट ऑब्जेक्ट नोटेशन सिंटैक्स YAML संस्करण 1.2 का आधार है, जिसे YAML को एक आधिकारिक उपसमुच्चय के रूप में JSON के अनुपालन में लाने के स्पष्ट उद्देश्य से प्रख्यापित किया गया था।<ref name="YAML Version 1.2"/>हालाँकि YAML के पूर्व संस्करण पूरी तरह से संगत नहीं थे,<ref>The incompatibilities were as follows: JSON allows extended character sets like UTF-32 and had incompatible unicode character escape syntax relative to YAML; YAML required a space after separators like comma, equals, and colon while JSON does not. Some non-standard implementations of JSON extend the grammar to include Javascript's {{code|/*...*/}} comments. Handling such edge cases may require light pre-processing of the JSON before parsing as in-line YAML. See also
जावास्क्रिप्ट ऑब्जेक्ट नोटेशन सिंटैक्स वाईएएमएल संस्करण 1.2 का आधार है, जिसे वाईएएमएल को आधिकारिक उपसमुच्चय के रूप में जेएसओएन के अनुपालन में लाने के स्पष्ट उद्देश्य से प्रख्यापित किया गया था।<ref name="YAML Version 1.2"/> चूंकि वाईएएमएल के पूर्व संस्करण पूर्ण रूप से संगत नहीं थे,<ref>The incompatibilities were as follows: JSON allows extended character sets like UTF-32 and had incompatible unicode character escape syntax relative to YAML; YAML required a space after separators like comma, equals, and colon while JSON does not. Some non-standard implementations of JSON extend the grammar to include Javascript's {{code|/*...*/}} comments. Handling such edge cases may require light pre-processing of the JSON before parsing as in-line YAML. See also
[https://metacpan.org/module/JSON::XS#JSON-and-YAML].</ref> विसंगतियाँ शायद ही ध्यान देने योग्य थीं, और अधिकांश JSON दस्तावेज़ों को Syck जैसे कुछ YAML पार्सर्स द्वारा पार्स किया जा सकता है।<ref>[http://www.jigocloud.com/en/blog/yaml-is-json Parsing JSON with SYCK].  Note that e.g. Symfony's YAML parser does not support line breaks inside [] or {} structures, which is a major incompatibility with JSON.</ref> ऐसा इसलिए है क्योंकि JSON की सिमेंटिक संरचना YAML लिखने की वैकल्पिक इनलाइन-शैली के बराबर है। जबकि विस्तारित पदानुक्रम को JSON जैसी इनलाइन-शैली में लिखा जा सकता है, यह अनुशंसित YAML शैली नहीं है, सिवाय इसके कि जब यह स्पष्टता में सहायता करता है।
[https://metacpan.org/module/JSON::XS#JSON-and-YAML].</ref> विसंगतियाँ कदाचित् ही ध्यान देने योग्य थीं, और अधिकांश जेएसओएन दस्तावेज़ों को एसवाईसीके जैसे कुछ वाईएएमएल पार्सर्स द्वारा पार्स किया जा सकता है।<ref>[http://www.jigocloud.com/en/blog/yaml-is-json Parsing JSON with SYCK].  Note that e.g. Symfony's YAML parser does not support line breaks inside [] or {} structures, which is a major incompatibility with JSON.</ref> ऐसा इसलिए है क्योंकि जेएसओएन की सिमेंटिक संरचना वाईएएमएल लिखने की वैकल्पिक इनलाइन-शैली के समान है। जबकि विस्तारित पदानुक्रम को जेएसओएन जैसी इनलाइन-शैली में लिखा जा सकता है, यह अनुशंसित वाईएएमएल शैली नहीं है, सिवाय इसके कि जब यह स्पष्टता में सहायता करता है।


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


कॉन्सिज़न के कारण, JSON क्रमबद्धता और डिसेरिएलाइज़ेशन YAML की तुलना में बहुत तेज़ है।<ref>{{cite web |title=गो में YAML बनाम JSON बनाम XML|url=https://medium.com/geekculture/yaml-vs-json-vs-xml-in-go-bf4ebd1066f2 |website=Medium |access-date=7 March 2023 |date=15 June 2021}}</ref><ref>{{cite web |title=YAML और JSON के बीच अंतर|url=https://www.baeldung.com/yaml-json-differeneces |website=Baeldung |access-date=7 March 2023 |date=9 July 2020}}</ref>
कॉन्सिज़न के कारण, जेएसओएन क्रमबद्धता और डिसेरिएलाइज़ेशन वाईएएमएल की तुलना में अधिक तीव्र है।<ref>{{cite web |title=गो में YAML बनाम JSON बनाम XML|url=https://medium.com/geekculture/yaml-vs-json-vs-xml-in-go-bf4ebd1066f2 |website=Medium |access-date=7 March 2023 |date=15 June 2021}}</ref><ref>{{cite web |title=YAML और JSON के बीच अंतर|url=https://www.baeldung.com/yaml-json-differeneces |website=Baeldung |access-date=7 March 2023 |date=9 July 2020}}</ref>
 
===[[TOML|टीओएमएल]] के साथ तुलना===
 
टीओएमएल को आईएनआई_फ़ाइल|.आईएनआई फ़ाइल स्वरूप की उन्नति के रूप में डिज़ाइन किया गया था। वाईएएमएल द्वारा सूचक वर्णों के न्यूनतम उपयोग की तुलना टीओएमएल द्वारा उद्धरण चिह्नों और वर्गाकार कोष्ठकों की सख्त आवश्यकता से की जाती है। वाईएएमएल का ऑफ साइड रूल और नेस्टिंग का उपयोग कम वर्बोज़ संरचनाओं की अनुमति देता है, ऐसी सुविधा जो टीओएमएल के पास तुलनीय वाक्यात्मक स्तर पर नहीं है, इसके अतिरिक्त समान अर्थ संरचना को व्यक्त करने के लिए वे अपनी कुंजी और तालिका नामों मेंगुण (प्रोग्रामिंग) या डॉट नोटेशन पर निर्भर हैं।{{refn|name=what-is-wrong-with-toml|[https://hitchdev.com/strictyaml/why-not/toml/ What is wrong with TOML?]}}.
===[[TOML]] के साथ तुलना===
TOML को INI_file|.ini फ़ाइल स्वरूप की उन्नति के रूप में डिज़ाइन किया गया था। YAML द्वारा सूचक वर्णों के न्यूनतम उपयोग की तुलना TOML द्वारा उद्धरण चिह्नों और वर्गाकार कोष्ठकों की सख्त आवश्यकता से की जाती है। YAML का ऑफ-साइड_रूल और नेस्टिंग का उपयोग कम वर्बोज़ संरचनाओं की अनुमति देता है, एक ऐसी सुविधा जो TOML के पास तुलनीय वाक्यात्मक स्तर पर नहीं है, इसके बजाय समान अर्थ संरचना को व्यक्त करने के लिए वे अपनी कुंजी और तालिका नामों में Properties_(programming)#Dot_notation पर निर्भर हैं।{{refn|name=what-is-wrong-with-toml|[https://hitchdev.com/strictyaml/why-not/toml/ What is wrong with TOML?]}}.


===एक्सएमएल के साथ तुलना===
===एक्सएमएल के साथ तुलना===


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


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


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


==सॉफ़्टवेयर (उत्सर्जक और पार्सर)==
==सॉफ़्टवेयर (उत्सर्जक और पार्सर)==


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


कई लोकप्रिय भाषाओं के लिए YAML एमिटर और पार्सर मौजूद हैं। उनमें से अधिकांश मूल भाषा में ही लिखे गए हैं। कुछ सी लाइब्रेरी libyaml की भाषा बाइंडिंग हैं; वे तेज़ दौड़ सकते हैं। वहाँ एक और सी लाइब्रेरी हुआ करती थी, जिसे सिक कहा जाता था, जो भाग्यशाली स्टिफ़ के कारण लिखी गई और अनाथ हो गई: इसका रखरखाव नहीं किया गया है, कोई आधिकारिक स्रोत बंडल नहीं है, और वेब साइट को हाईजैक कर लिया गया है। इसलिए एकमात्र अनुशंसित सी लाइब्रेरी libyaml है। इसे मूल रूप से किरिल सिमोनोव द्वारा विकसित किया गया था। 2018 में, नए अनुरक्षक इयान कॉर्डास्को और इंगी डॉट नेट द्वारा विकास फिर से शुरू किया गया।<ref>yaml-core@lists.sourceforge.net, mail of June 27, 2018.</ref>
अनेक लोकप्रिय लैंग्वेजो के लिए वाईएएमएल एमिटर और पार्सर उपस्तिथ हैं। उनमें से अधिकांश मूल लैंग्वेज में ही लिखे गए हैं। कुछ सी लाइब्रेरी लीबियाएमएल की लैंग्वेज बाइंडिंग हैं; वे तीव्र चल सकते हैं। वहाँ और सी लाइब्रेरी हुआ करती थी, जिसे सिक कहा जाता था, जो शुभ स्टिफ़ के कारण लिखी गई और अनाथ हो गई: इसका पोषण नहीं किया गया है, कोई आधिकारिक स्रोत बंडल नहीं है, और वेब साइट को हाईजैक कर लिया गया है। इसलिए एकमात्र अनुशंसित सी लाइब्रेरी लीबियाएमएल है। इसे मूल रूप से किरिल सिमोनोव द्वारा विकसित किया गया था। चूंकि 2018 में, नए अनुरक्षक इयान कॉर्डास्को और इंगी डॉट नेट द्वारा विकास फिर से प्रारंभ किया गया।<ref>yaml-core@lists.sourceforge.net, mail of June 27, 2018.</ref>
C++ प्रोग्रामर के पास C लाइब्रेरी libyaml और C++ लाइब्रेरी libyaml-cpp के बीच विकल्प होता है। दोनों के पास पूरी तरह से स्वतंत्र कोड आधार और पूरी तरह से अलग [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] है। लाइब्रेरी libyaml-cpp में अभी भी प्रमुख संस्करण संख्या 0 है, जो दर्शाता है कि एपीआई किसी भी समय बदल सकता है, जैसा कि वास्तव में संस्करण 0.3 के बाद हुआ था। नेस्टेड तत्वों के विस्तार के उद्देश्य से C# में एक व्याकरण-केंद्रित कार्यान्वयन लिखा गया है।<ref>{{cite web |title=लेक्सेपर्स के लिए YAML व्याकरण|website=[[GitHub]] |url=https://github.com/DNemtsov/Lexepars.Grammars.Yaml}}</ref>
YAML के कुछ कार्यान्वयन, जैसे कि पर्ल का YAML.pm, एक संपूर्ण फ़ाइल (स्ट्रीम) लोड करेगा और इसे सामूहिक रूप से पार्स करेगा। PyYaml जैसे अन्य कार्यान्वयन आलसी हैं और अनुरोध पर ही अगले दस्तावेज़ पर पुनरावृत्त होते हैं। बहुत बड़ी फ़ाइलों के लिए जिनमें दस्तावेज़ों को स्वतंत्र रूप से संभालने की योजना है, प्रसंस्करण से पहले पूरी फ़ाइल को तुरंत चालू करना निषेधात्मक हो सकता है। इस प्रकार YAML.pm में, कभी-कभी किसी फ़ाइल को दस्तावेज़ों में विभाजित करना पड़ता है और उन्हें अलग-अलग पार्स करना पड़ता है। YAML इसे आसान बनाता है, क्योंकि इसके लिए दस्तावेज़ के अंत मार्कर पर विभाजन की आवश्यकता होती है, जिसे एक पंक्ति की शुरुआत में तीन अवधियों के रूप में परिभाषित किया जाता है जिसके बाद एक रिक्त स्थान (और संभवतः एक टिप्पणी) होती है। यह मार्कर सामग्री में वर्जित है.<ref name="YAML_spec_document_markers">{{cite web |title=YAML मार्कअप लैंग्वेज नहीं है (YAML) संस्करण 1.2 # 9.1.2 दस्तावेज़ मार्कर|url=https://yaml.org/spec/1.2/spec.html#id2800401 |website=YAML.org |access-date=2019-05-29}}</ref>


==आलोचना==
सी ++ प्रोग्रामर के पास सी लाइब्रेरी लीबियाएमएल और सी ++ लाइब्रेरी लीबियाएमएल-सीपीपी के मध्य विकल्प होता है। दोनों के पास पूर्ण रूप से स्वतंत्र कोड आधार और पूर्ण रूप से अलग [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] है। लाइब्रेरी लीबियाएमएल-सीपीपी में अभी भी प्रमुख संस्करण संख्या 0 है, जो दर्शाता है कि एपीआई किसी भी समय बदल सकता है, जैसा कि वास्तव में संस्करण 0.3 के अतिरिक्त हुआ था। नेस्टेड तत्वों के विस्तार के उद्देश्य से सी # में व्याकरण-केंद्रित कार्यान्वयन लिखा गया है।<ref>{{cite web |title=लेक्सेपर्स के लिए YAML व्याकरण|website=[[GitHub]] |url=https://github.com/DNemtsov/Lexepars.Grammars.Yaml}}</ref>
YAML की इसके [[महत्वपूर्ण रिक्त स्थान]], भ्रमित करने वाली विशेषताओं, असुरक्षित डिफ़ॉल्ट और इसके जटिल और अस्पष्ट विनिर्देश के लिए आलोचना की गई है:<ref name=notgreat>{{cite web|first=Martin |last=Tournoij| url=https://arp242.net/yaml-config.html|title=YAML: probably not so great after all|date=4 Sep 2016|access-date=16 May 2019}}</ref><ref>{{cite web|url=https://noyaml.com|title=यह बहुत सारा YAML है|access-date=16 May 2019}}</ref><ref>{{cite web|url=https://github.com/cblp/yaml-sucks|title=वाईएएमएल बेकार है|website=[[GitHub]] |access-date=16 May 2019}}</ref>
* कॉन्फ़िगरेशन फ़ाइलें उपयोगकर्ताओं को इसका एहसास हुए बिना कमांड निष्पादित कर सकती हैं या सामग्री लोड कर सकती हैं।<ref name=notgreat/>* बड़ी YAML फ़ाइलों को संपादित करना कठिन है, क्योंकि इंडेंटेशन त्रुटियों पर ध्यान नहीं दिया जा सकता है।<ref name=notgreat/>* टाइप ऑटोडिटेक्शन त्रुटियों का एक स्रोत है। उदाहरण के लिए, अउद्धृत {{code|Yes}} और {{code|NO}} बूलियन में परिवर्तित हो जाते हैं; सॉफ़्टवेयर संस्करण संख्याओं को फ़्लोट में परिवर्तित किया जा सकता है।<ref name=notgreat/><ref name="Norway">{{cite web |url=https://hitchdev.com/strictyaml/why/implicit-typing-removed/ |title=नॉर्वे समस्या - क्यों स्ट्रिक्टवाईएएमएल अंतर्निहित टाइपिंग करने से इंकार कर देता है और आपको भी ऐसा करना चाहिए|access-date=3 June 2020}}</ref>
* टर्मिनेटर की अनुपस्थिति के कारण काटी गई फ़ाइलों को अक्सर वैध YAML के रूप में समझा जाता है।
* मानक की जटिलता के कारण असंगत कार्यान्वयन हुआ और भाषा गैर-पोर्टेबल बन गई।<ref name=notgreat/><ref>{{cite web|url=https://matrix.yaml.io/valid.html|title=YAML Test Matrix}}</ref>
YAML की कथित खामियों और जटिलता के कारण [https://github.com/crdoconnor/strictyaml strictYAML] और [[NestedText]] जैसे सख्त विकल्प सामने आए हैं।<ref name="Norway"/>


एक्सएमएल के कुछ कार्यान्वयन, जैसे कि पर्ल का वाईएएमएल .पीएम , संपूर्ण फ़ाइल (स्ट्रीम) लोड करेगा और इसे सामूहिक रूप से पार्स करेगा। पीवाईवाईएएमएल जैसे अन्य कार्यान्वयन आलसी हैं और अनुरोध पर ही अगले दस्तावेज़ पर पुनरावृत्त होते हैं। अधिक उच्च फ़ाइलों के लिए जिनमें दस्तावेज़ों को स्वतंत्र रूप से संभालने की योजना है, प्रसंस्करण से पहले पूर्ण फ़ाइल को तुरंत चालू करना निषेधात्मक हो सकता है। इस प्रकार वाईएएमएल .पीएम में, कभी-कभी किसी फ़ाइल को दस्तावेज़ों में विभाजित करना होता है और उन्हें अलग-अलग पार्स करना पड़ता है। वाईएएमएल इसे सरल बनाता है, क्योंकि इसके लिए दस्तावेज़ के अंत मार्कर पर विभाजन की आवश्यकता होती है, जिसे पंक्ति की प्रारंभ में तीन अवधियों के रूप में परिभाषित किया जाता है जिसके अतिरिक्त रिक्त स्थान (और संभवतः टिप्पणी) होती है। यह मार्कर सामग्री में वर्जित है.<ref name="YAML_spec_document_markers">{{cite web |title=YAML मार्कअप लैंग्वेज नहीं है (YAML) संस्करण 1.2 # 9.1.2 दस्तावेज़ मार्कर|url=https://yaml.org/spec/1.2/spec.html#id2800401 |website=YAML.org |access-date=2019-05-29}}</ref>


==आलोचना==
एक्सएमएल की इसके [[महत्वपूर्ण रिक्त स्थान]], भ्रमित करने वाली विशेषताओं, असुरक्षित डिफ़ॉल्ट और इसके जटिल और अस्पष्ट विनिर्देश के लिए आलोचना की गई है:<ref name=notgreat>{{cite web|first=Martin |last=Tournoij| url=https://arp242.net/yaml-config.html|title=YAML: probably not so great after all|date=4 Sep 2016|access-date=16 May 2019}}</ref><ref>{{cite web|url=https://noyaml.com|title=यह बहुत सारा YAML है|access-date=16 May 2019}}</ref><ref>{{cite web|url=https://github.com/cblp/yaml-sucks|title=वाईएएमएल बेकार है|website=[[GitHub]] |access-date=16 May 2019}}</ref>
* कॉन्फ़िगरेशन फ़ाइलें उपयोगकर्ताओं को इसका एहसास हुए बिना कमांड निष्पादित कर सकती हैं या सामग्री लोड कर सकती हैं।<ref name=notgreat/>
*उच्च वाईएएमएल फ़ाइलों को संपादित करना कठिन है, क्योंकि इंडेंटेशन त्रुटियों पर ध्यान नहीं दिया जा सकता है।<ref name="notgreat" />
*टाइप ऑटोडिटेक्शन त्रुटियों का स्रोत है। उदाहरण के लिए, अउद्धृत {{code|Yes}} और {{code|NO}} बूलियन में परिवर्तित हो जाते हैं; सॉफ़्टवेयर संस्करण संख्याओं को फ़्लोट में परिवर्तित किया जा सकता है।<ref name="notgreat" /><ref name="Norway">{{cite web |url=https://hitchdev.com/strictyaml/why/implicit-typing-removed/ |title=नॉर्वे समस्या - क्यों स्ट्रिक्टवाईएएमएल अंतर्निहित टाइपिंग करने से इंकार कर देता है और आपको भी ऐसा करना चाहिए|access-date=3 June 2020}}</ref>
* टर्मिनेटर की अनुपस्थिति के कारण कट की गई फ़ाइलों को प्रायः वैध वाईएएमएल के रूप में समझा जाता है।
* मानक की जटिलता के कारण असंगत कार्यान्वयन हुआ और लैंग्वेज गैर-पोर्टेबल बन गई।<ref name=notgreat/><ref>{{cite web|url=https://matrix.yaml.io/valid.html|title=YAML Test Matrix}}</ref>
एक्सएमएल की कथित अवगुण और जटिलता के कारण [https://github.com/crdoconnor/strictyaml strict एक्सएमएल] और [[NestedText]] जैसे जटिल विकल्प सामने आए हैं।<ref name="Norway"/>
==यह भी देखें==
==यह भी देखें==
* डेटा-क्रमांकन प्रारूपों की तुलना
* डेटा-क्रमांकन प्रारूपों की तुलना
* [[हल्की मार्कअप भाषा]]
* [[हल्की मार्कअप भाषा|लाइटवेट मार्कअप लैंग्वेज]]


==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}


==बाहरी संबंध==
==बाहरी संबंध==
* {{Official website|https://yaml.org}}
* {{Official website|https://yaml.org}}


{{Data Exchange}}
[[Category:2001 में कंप्यूटर से संबंधित परिचय]]
[[Category: 2001 में कंप्यूटर से संबंधित परिचय]] [[Category: कॉन्फ़िगरेशन फ़ाइलें]] [[Category: डेटा क्रमांकन प्रारूप]] [[Category: हल्की मार्कअप भाषाएँ]] [[Category: मार्कअप भाषाएँ]]
[[Category:Articles with hatnote templates targeting a nonexistent page]]
 
[[Category:CS1 English-language sources (en)]]
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 10/07/2023]]
[[Category:Created On 10/07/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Official website not in Wikidata]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:कॉन्फ़िगरेशन फ़ाइलें]]
[[Category:डेटा क्रमांकन प्रारूप]]
[[Category:मार्कअप भाषाएँ]]
[[Category:हल्की मार्कअप भाषाएँ]]

Latest revision as of 13:06, 4 August 2023

वाईएएमएल
Official YAML Logo.svg
Filename extensionsTemplate:कोड, Template:कोड
Internet media typeपंजीकृत नहीं
Uniform Type Identifier (UTI)public.yaml[1]
Latest release
1.2 (Revision 1.2.2)
Type of formatडेटा इंटरचेंज
Open format?हाँ
Websiteyaml.org

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

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

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

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

इतिहास और नाम

वाईएएमएल (/ˈjæməl/, कैमल के साथ राइम्स करता है[4] प्रथम समय 2001 में क्लार्क इवांस द्वारा प्रस्तावित किया गया था,[15] जिन्होंने इंजी डॉट नेट के साथ मिलकर इसे डिज़ाइन किया है[16] और ओरेन बेन-किकी के साथ मिलकर डिजाइन किया था ।[16] मूल रूप से वाईएएमएल का अर्थ और मार्कअप लैंग्वेज कहा जाता था,[17] क्योंकि यह उस युग में प्रयुक्त किया गया था जिसमें प्रस्तुति और कनेक्टिविटी (एचटीएमएल , एक्सएमएल, एसजीएमएल, आदि) के लिए मार्कअप लैंग्वेजो का प्रसार देखा गया था। इसका प्रारंभिक नाम मौखिक संदर्भ के रूप में था[18] प्रौद्योगिकी परिदृश्य में, इसके उद्देश्य को अन्य निर्माण के साथ मार्कअप लैंग्वेज के रूप में संदर्भित किया गया था, किन्तु फिर इसे डेटा-उन्मुख के रूप में इसके उद्देश्य को अलग करने के लिए, पुनरावर्ती संक्षिप्त नाम, वाईएएमएल इज़ नॉट पाठ के प्रस्तुतिकरण के लिए प्रयुक्त लैंग्वेज के रूप में पुनर्निर्मित किया गया था। दस्तावेज़ मार्कअप के अतिरिक्त डेटा-उन्मुख के रूप में अलग करना है ।

संस्करण

वर्जन रिलीज़ डेट
एक्सएमएल 1.0 29 January 2004
एक्सएमएल 1.1 18 January 2005
एक्सएमएल 1.2.0 21 July 2009
एक्सएमएल 1.2.1 1 October 2009
एक्सएमएल 1.2.2 1 October 2021

डिज़ाइन

सिंटेक्स

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

एक्सएमएल कुछ नियंत्रण वर्णों को छोड़कर संपूर्ण यूनिकोड वर्ण सेट को स्वीकार करता है, और इसे यूटीएफ-8, यूटीएफ-16 या यूटीएफ-32 में से किसी में एन्कोड किया जा सकता है। (चूंकि यूटीएफ-32 अनिवार्य नहीं है, पार्सर के लिए जेएसओएन संगतता होना आवश्यक है।)[20]

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

मूलभूत घटक

पारंपरिक ब्लॉक प्रारूप सूची में नया आइटम प्रारंभ करने के लिए हाइफ़न+स्पेस का उपयोग करता है।

--- # Favorite movies
- Casablanca
- North by Northwest
- The Man Who Wasn't There

वैकल्पिक इनलाइन प्रारूप को अल्पविराम+स्पेस द्वारा सीमांकित किया गया है और कोष्ठक में संलग्न किया गया है (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन के समान) है ।[22]

--- # Shopping list
[milk, pumpkin pie, eggs, juice]

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

--- # Indented Block
  name: John Smith
  age: 33
--- # Inline Block
{name: John Smith, age: 33}

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

data: |
   There once was a tall man from Ealing
   Who got on a bus to Darjeeling
       It said on the door
       "Please don't sit on the floor"
   So he carefully sat on the ceiling

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

data: >
   Wrapped text
   will be folded
   into a single
   paragraph

   Blank lines denote
   paragraph breaks

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

--- # The Smiths
- {name: John Smith, age: 33}
- name: Mary Smith
  age: 27
- [name, age]: [Rae Smith, 4]   # sequences as keys are supported
--- # People, by gender
men: [John Smith, Bill Jones]
women:
  - Mary Smith
  - Susan Williams

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

उन्नत घटक

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

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

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

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

--- # Sequencer protocols for Laser eye surgery
- step:  &id001                  # defines anchor label &id001
    instrument:      Lasik 2000
    pulseEnergy:     5.4
    pulseDuration:   12
    repetition:      1000
    spotSize:        1mm

- step: &id002
    instrument:      Lasik 2000
    pulseEnergy:     5.0
    pulseDuration:   10
    repetition:      500
    spotSize:        2mm
- Instrument1: *id001   # refers to the first step (with anchor &id001)
- Instrument2: *id002   # refers to the second step

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

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

---
a: 123                     # an integer
b: "123"                   # a string, disambiguated by quotes
c: 123.0                   # a float
d: !!float 123             # also a float via explicit data type prefixed by (!!)
e: !!str 123               # a string, disambiguated by explicit type
f: !!str Yes               # a string via explicit type
g: Yes                     # a boolean True (yaml1.1), string "Yes" (yaml1.2)
h: Yes we have No bananas  # a string, "Yes" and "No" disambiguated by context.

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

---
picture: !!binary |
  R0lGODdhDQAIAIAAAAAAANn
  Z2SwAAAAADQAIAAACF4SDGQ
  ar3xxbJ9p0qa7R0YxwzaFME
  1IAADs=

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

उदाहरण

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

---
receipt:     Oz-Ware Purchase Invoice
date:        2012-08-06
customer:
    first_name:   Dorothy
    family_name:  Gale

items:
    - part_no:   A4786
      descrip:   Water Bucket (Filled)
      price:     1.47
      quantity:  4

    - part_no:   E1628
      descrip:   High Heeled "Ruby" Slippers
      size:      8
      price:     133.7
      quantity:  1

bill-to:  &id001
    street: |
            123 Tornado Alley
            Suite 16
    city:   East Centerville
    state:  KS

ship-to:  *id001

specialDelivery:  >
    Follow the Yellow Brick
    Road to the Emerald City.
    Pay no attention to the
    man behind the curtain.
...

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

सुविधाएँ

इंडेंटेड परिसीमन

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

---
example: >
        HTML goes into YAML without modification
message: |

        <blockquote style="font: italic 1em serif">
        <p>"Three is always greater than two,
           even for large values of two"</p>
        <p>--Author Unknown</p>
        </blockquote>
date: 2007-06-01


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

गैर-पदानुक्रमित डेटा मॉडल

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

व्यावहारिक विचार

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

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

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

सुरक्षा

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

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

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

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

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

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

डेटा प्रोसेसिंग और प्रतिनिधित्व

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

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

अन्य क्रमांकन प्रारूपों के साथ तुलना

जेएसओएन के साथ तुलना

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

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

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

टीओएमएल के साथ तुलना

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

एक्सएमएल के साथ तुलना

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

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

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

सॉफ़्टवेयर (उत्सर्जक और पार्सर)

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

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

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

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

आलोचना

एक्सएमएल की इसके महत्वपूर्ण रिक्त स्थान, भ्रमित करने वाली विशेषताओं, असुरक्षित डिफ़ॉल्ट और इसके जटिल और अस्पष्ट विनिर्देश के लिए आलोचना की गई है:[41][42][43]

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

एक्सएमएल की कथित अवगुण और जटिलता के कारण strict एक्सएमएल और NestedText जैसे जटिल विकल्प सामने आए हैं।[44]

यह भी देखें

संदर्भ

  1. "yaml". Apple डेवलपर दस्तावेज़ीकरण: Uniform Type Identifiers. Apple Inc.
  2. 2.0 2.1 2.2 2.3 "Yet Another Markup Language (YAML) 1.0 / Working Draft". 10 Dec 2001.
  3. "YAML specification v1.2.2 Section 6.1. Indentation Spaces".
  4. 4.0 4.1 4.2 "YAML Ain't Markup Language (YAML) Version 1.2". YAML.org. Retrieved 2019-05-29.
  5. "Built-in Types — Python 3.9.6 documentation". docs.python.org. Retrieved 2021-08-19.
  6. "Standard built-in objects - JavaScript | MDN". developer.mozilla.org (in English). Retrieved 2021-08-19.
  7. corob-msft (17 August 2021). "अंतर्निहित प्रकार (C++)". docs.microsoft.com (in English). Retrieved 2021-08-19.
  8. "आधिकारिक YAML वेब साइट". yaml.org.
  9. "YAML संपादन के लिए विम की स्थापना". arthurkoziel.com.
  10. "यमल मोड". EmacsWiki. 2015-06-12. Retrieved 2016-12-05.
  11. aukaost. "सुंदर YAML - पैकेज - पैकेज नियंत्रण". Packagecontrol.io. Retrieved 2016-12-05.
  12. "yaml | Eclipse Plugins, Bundles and Products - Eclipse Marketplace". Marketplace.eclipse.org. Retrieved 2016-12-05.
  13. Ruth Kusterer. "नेटबीन्स आईडीई - रूबी और रूबी ऑन रेल्स डेवलपमेंट". Netbeans.org. Retrieved 2016-12-05.
  14. "YAML मार्कअप भाषा नहीं है". September 24, 2006. Archived from the original on 2006-09-24.
  15. Evans, Clark (May 11, 2001). "वाईएएमएल ड्राफ्ट 0.1". Yahoo! Tech groups: sml-dev. Archived from the original on 2001-06-03. Retrieved 2019-03-21.
  16. 16.0 16.1 "YAML मार्कअप भाषा नहीं है: के बारे में". YAML.org. Retrieved 2019-05-29.
  17. "फिर भी एक और मार्कअप लैंग्वेज (YAML) 1.0". YAML.org. Retrieved 2019-05-29.
  18. "फिर भी एक और मार्कअप लैंग्वेज (YAML) 1.0". stackoverflow.com. Retrieved 2021-03-24.
  19. "YAML 1.1 Reference Card". YAML.org. Retrieved 2019-05-29.
  20. "YAML Ain't Markup Language (YAML) Version 1.2". YAML.org. Retrieved 2019-05-29.
  21. "YAML Ain't Markup Language (YAML) Version 1.2". YAML.org. Retrieved 2019-05-29.
  22. "क्लाउड आधारित प्रबंधन ऐप्स". JigoCloud.com. Archived from the original on 2016-09-17. Retrieved 2016-09-28.
  23. 23.0 23.1 "YAML 1.2 संरचनाओं की विशिष्टता". YAML.org. Retrieved 2019-05-29.
  24. "एक्स्टेंसिबल मार्कअप लैंग्वेज (एक्सएमएल) 1.0 (दूसरा संस्करण)". W3.org. Retrieved 27 May 2015.
  25. "Free Courses | Introduction to YAML - A hands -on course". Insidelearn (in English). Retrieved 2022-08-04.
  26. "वाईएएमएल". Teknik Informatika. 2022-08-04. Retrieved 2022-08-04.
  27. "PyYAML दस्तावेज़ीकरण, YAML लोड हो रहा है". Pyyaml.org. Retrieved 2016-09-28.
  28. "मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है". YAML.org. Retrieved 2019-05-29.
  29. Additional, optional-use, logical structures are enumerated in the YAML types repository."Language-Independent Types for YAML Version 1.1". YAML.org. Retrieved 2019-05-29. The tagged types in the YAML types repository are optional and therefore not essential for conformant YAML processors. "The use of these tags is not mandatory."
  30. "YAML मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है". YAML.org. Retrieved 2019-05-29.
  31. "मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है". YAML.org. Retrieved 2019-05-29.
  32. "YAML मार्कअप लैंग्वेज (YAML) संस्करण 1.1 नहीं है". YAML.org. Retrieved 2019-05-29.
  33. The incompatibilities were as follows: JSON allows extended character sets like UTF-32 and had incompatible unicode character escape syntax relative to YAML; YAML required a space after separators like comma, equals, and colon while JSON does not. Some non-standard implementations of JSON extend the grammar to include Javascript's /*...*/ comments. Handling such edge cases may require light pre-processing of the JSON before parsing as in-line YAML. See also [1].
  34. Parsing JSON with SYCK. Note that e.g. Symfony's YAML parser does not support line breaks inside [] or {} structures, which is a major incompatibility with JSON.
  35. "गो में YAML बनाम JSON बनाम XML". Medium. 15 June 2021. Retrieved 7 March 2023.
  36. "YAML और JSON के बीच अंतर". Baeldung. 9 July 2020. Retrieved 7 March 2023.
  37. What is wrong with TOML?
  38. yaml-core@lists.sourceforge.net, mail of June 27, 2018.
  39. "लेक्सेपर्स के लिए YAML व्याकरण". GitHub.
  40. "YAML मार्कअप लैंग्वेज नहीं है (YAML) संस्करण 1.2 # 9.1.2 दस्तावेज़ मार्कर". YAML.org. Retrieved 2019-05-29.
  41. 41.0 41.1 41.2 41.3 41.4 Tournoij, Martin (4 Sep 2016). "YAML: probably not so great after all". Retrieved 16 May 2019.
  42. "यह बहुत सारा YAML है". Retrieved 16 May 2019.
  43. "वाईएएमएल बेकार है". GitHub. Retrieved 16 May 2019.
  44. 44.0 44.1 "नॉर्वे समस्या - क्यों स्ट्रिक्टवाईएएमएल अंतर्निहित टाइपिंग करने से इंकार कर देता है और आपको भी ऐसा करना चाहिए". Retrieved 3 June 2020.
  45. "YAML Test Matrix".

बाहरी संबंध