2011-08-06 14 views
35

मैं यह देखने में असफल रहा कि वाईएएमएल एक्सएमएल की तुलना में मार्कअप भाषा से कम क्या बनाता है। मार्कअप भाषा का उद्देश्य किसी दस्तावेज़ की संरचना को परिभाषित करना है, और वाईएएमएल बिल्कुल वैसा ही करता है। (वाईएएमएल का मतलब है कि यमल मार्कअप भाषा नहीं है।)यदि वाईएएमएल मार्कअप भाषा नहीं है, तो यह क्या है?

वाईएएमएल को इसके बजाय खड़ा होना चाहिए, फिर भी एक अन्य मार्कअप भाषा

उत्तर

29

तो, एक मार्कअप भाषा एक मूल पाठ, आम तौर पर मानव पठनीय, और फिर विशेष संकेतक या "मार्कअप" जो प्रत्यक्ष प्रसंस्करण का अनुमान लगाती है। विचार एक संपादक से आता है, जो किसी की पांडुलिपि का मुद्रित संस्करण लेगा, और यह दिखाने के लिए "इसे चिह्नित करें" कहां नई लाइनों, संपादनों, आदि

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

वाईएएमएल और जेएसओएन दृश्य पर दिखाई दिए और डेटा क्रमशः दस्तावेज़ मार्कअप पर ध्यान केंद्रित किया। इन भाषाओं में, बस एक मूल दस्तावेज़ पाठ नहीं है।
इसलिए, वाईएएमएल मार्कअप भाषा एक्सएमएल से काफी सटीक अंतर नहीं है।

+10

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

-3

मैं यह देखने में असफल रहा कि वाईएएमएल एक्सएमएल की तुलना में मार्कअप भाषा से कम क्या बनाता है।

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

यहां एक उदाहरण दिखाया गया है कि उनकी संरचनाएं अलग-अलग हैं।

XML Examples: 
<busNo>101 
    <busStop>ABC 
      <busFee>5.4</busFee> 
    </busStop> 
    <busStop>CUHK 
      <busFee>5.4</busFee> 
    </busStop> 
    <busStop>HKU 
      <busFee>5.4</busFee> 
    </busStop> 
    <busStop>XYZ 
      <busFee>5.4</busFee> 
    </busStop> 
</busNo> 

YAML Examples: 
--- #bus no 
101 : [ABC:5.4, HKU:5.4, CUHK:5.4, XYZ:5.4] 

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

निष्कर्ष में, वाईएएमएल मानव-पढ़ने के लिए डिज़ाइन किया गया है, जो एक्सएमएल की तुलना में एक मार्कअप भाषा कम करता है।

+1

प्रश्न के बारे में क्यों YAML के लिए * खड़ा YAML मार्कअप लैंग्वेज नहीं है * था। यह वास्तव में इसका जवाब नहीं देता है। – EdoDodo

+0

@EdoDodo: वह पूछ रहा है "मैं यह देखने में असफल रहा कि वाईएएमएल एक्सएमएल की तुलना में मार्कअप भाषा में से कम क्या बनाता है।" और मैं समझा रहा हूँ। –

+4

आपने जो किया है, आपने एक्सएमएल और वाईएएमएल के सिंटैक्स की तुलना की है, यह कहकर कि एक्सएमएल को टैग की आवश्यकता है और यह थकाऊ है, और वाईएएमएल को दो स्पेस इंडेंटेशन की आवश्यकता है और टाइप करना आसान है। एक भाषा स्वरूपित करने की इस तरह की तुलना मतभेदों की व्याख्या नहीं करती है। यह PHP और रूबी के सिंटैक्स की तुलना करने जैसा है, और फिर कह रहा है कि चर के लिए '$ 'नहीं है और' '' बयान समाप्त करने के लिए उन्हें प्रोग्रामिंग भाषा नहीं बनाते हैं। आपने सवाल का जवाब नहीं दिया है। एक और मानव पठनीय मार्कअप किसी अन्य भाषा की तुलना में कोई भी कम या अधिक 'मार्कअप' भाषा नहीं बनाता है। – desbest

2

यहाँ a page about YAML से एक उद्धरण है: "क्यों नाम YAML"

मुझे लगता है पाठकों के मन पर बहुत पहला सवाल, हो गया है ऐसे कई टूल हैं जिन्होंने "YA *" फ़ॉर्म के शब्दकोष को "अभी तक एक और XXX" का अर्थ दिया है। हथियार ओपन-सोर्स बुद्धि की दौड़ में, वाईएएमएल इसके अंतर्निहित परिवर्णी शब्द को छोड़ देता है, इसके बजाय रिकर्सिव "YAML मार्कअप भाषा नहीं है" पर बस रहा है। इसके लिए कुछ समझ है, हालांकि: वाईएएमएल करता है कि मार्कअप भाषाएं क्या करती हैं, लेकिन बिना किसी, अच्छी तरह से, मार्कअप की आवश्यकता के।

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

+0

वाईएएमएल को कम मार्कअप की आवश्यकता क्यों है; और यदि इसे कम मार्कअप की आवश्यकता होती है, तो क्या यह इसे मार्कअप भाषा नहीं बनाता है? – desbest

1

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

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

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

+0

"बाद में, कुछ लोगों ने एक्सएमएल लिखने के लिए लिया जिसमें टैग और विशेषताओं को शामिल किया गया था, जिसमें उन टैग के लिए कोई सादा पाठ नहीं था।" तो इसका मतलब यह है कि '<पुस्तक शीर्षक =" उदय "लेखक =" स्टीफन किंग ">' ** है नहीं ** एक मार्कअप भाषा है, जबकि ' उदय स्टीफन किंग '** ** है, क्योंकि पाठ वास्तव में चिह्नित किया जा रहा है? – desbest

+0

_language_ स्वयं ही यही है, इससे कोई फर्क नहीं पड़ता कि आप इसका उपयोग कैसे करते हैं। आपके पहले उदाहरण में, आप _using_ _x_ एक मार्कअप भाषा नहीं कर रहे हैं, न कि इसके बारे में नैतिक रूप से बुरा कुछ भी है। यह शैली है जब मैं एक्सएमएल के रूप में चीजों को क्रमबद्ध करता हूं, हालांकि बहुत से लोग हैं जो आपको बताएंगे कि यह डिंग रिंग है। मेरी किताब में यह ठीक है कि चीजों को टेक्स्ट-मार्क-मार्कअप के रूप में लिखना न कि जब वे वास्तव में नहीं हैं। अंतर्निहित सादा पाठ "द शाइनिंगस्टेन किंग" अपने आप को बहुत अधिक समझ में नहीं आता है। –

67

यहाँ असली कहानी है ... :)

क्लार्क, Oren और मैं अप्रैल 2001 में YAML पर काम कर Oren और क्लार्क एसएमएल मेलिंग सूची है, जो एक्सएमएल सरल बनाने के लिए कोशिश कर रहा था का हिस्सा थे शुरू कर दिया। मैंने डेटा :: डेंटर नामक पर्ल के लिए डेटा सीरियलाइजेशन भाषा लिखी थी। क्लार्क ने मुझे उन विचारों के बारे में बताने के लिए मुझसे संपर्क किया जिन्हें उन्होंने वाईएएमएल कहा था, जो डाटा :: डेंटर सिंटैक्स के समान दिखता था। क्लार्क पहले से ही yaml.org हासिल किया था।

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

http://yaml.org/spec/ साथ शुरू होता है:

YAML ™ ("ऊंट" के साथ कविताओं) एक मानव के अनुकूल है, पार भाषा, यूनिकोड आधारित डेटा क्रमबद्धता भाषा चुस्त प्रोग्रामिंग भाषाओं की आम देशी डेटा संरचनाओं के आसपास बनाया गया है।

मैं इसे बेहतर अपने आप को कहा नहीं हो सकता था ...:

+11

"backronymed", अच्छा। –

+0

ठीक है, यह एक मनोरंजक पूर्ण सर्कल जवाब है। – ViggyNash

संबंधित मुद्दे