आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप XML को YAML में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
XML से YAML
XML अपने आधे अक्षर बस यह बताने में लगाता है कि कोई एलिमेंट कहाँ ख़त्म होता है। YAML यही इंडेंटेशन से कहता है, इसलिए वही दस्तावेज़ काफ़ी छोटा आता है और हर नेस्टिंग-स्तर स्कैन करने के लिए किसी जोड़ी की बजाय एक दृश्य क़दम भर है। किसी Maven pom या web.config पर यही स्क्रोल करने और पढ़ने के बीच का फ़र्क़ है।
संरचना नहीं बदलती। हर एलिमेंट की बन जाता है, उसके बच्चे उसके नीचे mapping बनते हैं, और पाठ मान बन जाता है। कुछ भी दोबारा क्रमबद्ध नहीं होता और कुछ भी संक्षेप नहीं किया जाता — जो आप देख रहे हैं वह विराम-चिह्न हटा हुआ वही दस्तावेज़ है।
Attributes @ लगे उपसर्ग वाली कीज़ बनकर आते हैं, और जो एलिमेंट attributes और पाठ दोनों रखता है वह पाठ को #text की के तहत रखता है। दोनों कोट में लिखे जाते हैं, क्योंकि YAML @ को किसी plain scalar की शुरुआत में आरक्षित संकेतक मानता है और # को टिप्पणी की शुरुआत।
यह शोर जैसा दिखता है और सही होना ही है। फ़ाइल हाथ से संपादित करते समय वे कोट रखिए: हटाने पर YAML या तो पार्स होना बंद कर देती है, या #text के मामले में लाइन का बाक़ी हिस्सा चुपचाप टिप्पणी बन जाता है और मान खो जाता है।
यही बदलने की सबसे मज़बूत वजह है। XML को diff करना परेशान करने वाला है क्योंकि एक स्तर गहरा बदलाव कई लाइन-टैग के रूप में दिखता है, और किसी औज़ार से दोबारा-फ़ॉर्मेट करना पूरी फ़ाइल फिर से लिख देता है। दोनों वर्शन बदलकर YAML को diff करना बदले मान अपनी लाइन पर उनके ऊपर की-पथ के साथ दिखाता है।
एक चेतावनी सब कुछ तय करती है। चूँकि एक दोहराया एलिमेंट mapping बनता है और दो एलिमेंट सूची बनते हैं, दूसरी निर्भरता जोड़ने वाला वर्शन उस शाखा का आकार बदल देता है, सिर्फ़ सामग्री नहीं — यानी diff पूरा ब्लॉक फिर से लिखा हुआ दिखाता है।
उपसर्ग की-नाम का हिस्सा बनकर बचे रहते हैं, इसलिए soap: या xsi: इस्तेमाल करने वाला दस्तावेज़ कोलन वाली कीज़ बनाता है। लेखक उन्हें बिना कोट लिखता है, और वे उसी पार्सर से वापस सही पढ़ी जाती हैं। नेमस्पेस-घोषणाएँ ख़ुद attribute के रूप में बचती हैं।
किसी की के भीतर का कोलन फ़ाइल भेजने से पहले हाथ से ठीक करने लायक़ है। YAML किसी और औज़ार से पढ़ी जाने वाली हो तो उन कीज़ को ख़ुद कोट कर दीजिए। कुछ भी उपसर्ग को उसके नेमस्पेस URI में नहीं सुलझाता।
संख्या जैसे दिखने वाले मान पार्स होते हैं, एलिमेंट-पाठ और attribute दोनों में। Maven का वर्शन 4.13.2 स्ट्रिंग ही रहता है, क्योंकि उसमें दो बिंदु हैं और वह संख्या नहीं हो सकता। 1.0 लिखा गया version attribute 1 बन जाता है, और 007 जैसा शून्य-पैडेड मान 7 बन जाता है।
सिर्फ़ इंसान की आँख से पढ़ी जाने वाली कॉन्फ़िग पर नुक़सान इतना ही है कि वह कैसी दिखती है, और यह अब भी मायने रखता है — किसी रिव्यू में 1.0 की जगह 1 दिखना कुछ सवाल खड़ा करता है या ग़लत कॉपी हो जाता है।
नई-लाइन वाला मान ब्लॉक स्केलर के रूप में लिखा जाता है — pipe चिह्न और उसके नीचे इंडेंट पाठ — जो उसे escape करने की बजाय पढ़ने लायक़ रखता है। बिना नई-लाइन वाला लंबा एक-लाइन मान बिना लपेटे ही जस का तस लिखा जाता है।
ख़ाली या self-closing एलिमेंट ख़ाली स्ट्रिंग बन जाता है, कोट की एक जोड़ी के रूप में लिखा। XML में ख़ाली एलिमेंट और कुछ न होने वाले एलिमेंट में फ़र्क़ नहीं होता, इसलिए कुछ खोता नहीं, पर लंबी फ़ाइल में ख़ाली स्ट्रिंग नज़र से आसानी से छूट जाती है।
XML टिप्पणियों का समर्थन करता है, YAML भी करता है, और आपकी कोई भी नहीं बचती। पार्सर उन्हें फेंक देता है और कुछ भी उन्हें वापस नहीं लिखता। किसी build फ़ाइल पर यह सबसे बड़ा नुक़सान है, क्योंकि किसी पिन की गई निर्भरता-वर्शन के ऊपर की टिप्पणी अक्सर उसकी वजह का इकलौता बचा रिकॉर्ड होती है।
जो तरीक़ा इस जाल से बचाता है वह है YAML को पढ़ने की प्रति मानना और XML को स्रोत रखना। अगर YAML असल में स्रोत बनने वाली है — किसी Ansible या Helm chart में असली माइग्रेशन — तो टिप्पणियाँ कॉपी करने का पास काम में जोड़ लीजिए, XML मिटाने से पहले।
बदला हुआ कॉन्फ़िग अभी values फ़ाइल या variable-सेट नहीं है। इसमें XML के निशान हैं — @ कीज़, #text कीज़, root पर कोई नेमस्पेस-घोषणा — जो जिसे आप खिला रहे हैं उसके लिए बे-मतलब हैं। पहला काम उन्हें मिटाना है।
दूसरा है नामकरण। XML एलिमेंट-नाम अक्सर किसी स्कीमा के पीछे बहुत लंबे होते हैं, और YAML कॉन्फ़िग को आमतौर पर छोटे और सपाट चाहिए। दोनों पास हाथ से होते हैं और दोनों असली माइग्रेशन हैं; कन्वर्ज़न बस पढ़ने लायक़ शुरुआती बिंदु देता है।
तब बदलिए जब मक़सद समझना, रिव्यू करना या तुलना करना हो: YAML छोटी है, संरचना साफ़ है, और पूरा काम ब्राउज़र में फ़ाइल छोड़ने जितने समय में हो जाता है।
तब न बदलें जब फ़ाइल किसी स्कीमा से वैलिडेट होती हो, sign की गई हो, या किसी XML-पढ़ने वाले औज़ार से इस्तेमाल होती हो। उस मामले में XML ही असली दस्तावेज़ है, और YAML की नक़ल दूसरा सच बनकर बहक जाएगी। पढ़िए YAML के रूप में, बदलिए XML के रूप में।
| XML | YAML | |
|---|---|---|
| पूरा नाम | Extensible Markup Language | YAML Ain't Markup Language |
| फ़ाइल एक्सटेंशन | .xml | .yaml, .yml |
| मीडिया टाइप | application/xml | application/yaml |
| पहली बार प्रकाशित | 1998 | 2001 |
| प्रकाशक | W3C | — |
| विनिर्देश | XML 1.0 | YAML 1.2 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | हर ब्राउज़र | कोई ब्राउज़र नहीं |
| इसकी जगह विचारणीय | JSON | JSON, TOML |
टिप्पणियाँ साथ जाती हैं। XML और YAML — दोनों में टिप्पणी की वाक्य-रचना है, इसलिए बाद में फ़ाइल सँभालने वाले के लिए छोड़े गए नोट चुपचाप ग़ायब नहीं होते।
YAML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।
Visual Studio Code XML और YAML — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
XML W3C का फ़ॉर्मेट है, जो 1998 में आया। यह XML 1.0 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
YAML 2001 से चला आ रहा है, और YAML 1.2 में तय किया गया है। Visual Studio Code और yq इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
XML और YAML सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। XML के गुण और लिखावट वाली गाँठें — दोनों कुंजी बन जाते हैं, और यह फ़ैसला कन्वर्टर आपकी जगह ख़ुद करता है।
YAML को कोई भी ब्राउज़र नहीं पढ़ता। इस लिहाज़ से दोनों में यही कम जगह चलने वाला है। भेजने से पहले देख लीजिए कि पाने वाला इसे लेता भी है या नहीं।