XML फॉर्मैटर

2 स्पेस, 4 स्पेस या टैब के साथ XML को सुंदर-प्रिंट करें, या इसे एक पंक्ति में मिनिफ़ाई करें। वेल-फॉर्म्डनेस आपके टाइप करते समय जाँची जाती है, और एलिमेंट गिनती व नेस्टिंग गहराई दिखाई जाती है।

XML की दीवार को पठनीय बनाएँ, या इसे वापस संकुचित करें। XML को चिपकाएँ ताकि आपके पसंदीदा स्पेसिंग के साथ उसे पुनः इंडेंट किया जा सके, या इसे एक पंक्ति में मिनिफ़ाई किया जा सके। दस्तावेज़ की वेल-फॉर्म्डनेस आपके टाइप करते समय जाँची जाती है, और काउंटर्स बताते हैं कि यह कितने एलिमेंट्स रखता है और कितनी गहरा नेस्ट है।

XML को तोड़े बिना फॉर्मैट करना

XML में व्हाइटस्पेस सामग्री है

यही एक तथ्य है जो XML फॉर्मैटिंग को JSON फॉर्मैटिंग से अलग करता है। JSON में, टोकनों के बीच का व्हाइटस्पेस अर्थहीन होता है और उसे हटाना हमेशा सुरक्षित है। XML में, <name> और Ada के बीच के वर्ण एलिमेंट के टेक्स्ट नोड का हिस्सा हैं। किसी दस्तावेज़ को पुनः इंडेंट करना तकनीकी रूप से इसमें मौजूद चीज़ को बदल देता है।

व्यावहारिक रूप से इससे लगभग कभी फ़र्क नहीं पड़ता, क्योंकि XML का भारी बहुमत केवल-एलिमेंट सामग्री का उपयोग करता है — वे एलिमेंट जो अन्य एलिमेंट्स और और कुछ नहीं रखते हैं — जहाँ आस-पास का व्हाइटस्पेस हर स्कीमा द्वारा अनदेखा किया जाता है। फॉर्मैटर केवल ऐसे एलिमेंट्स के अंदर इंडेंटेशन जोड़ता है। जब कोई एलिमेंट वास्तविक टेक्स्ट रखता है, या टेक्स्ट और चाइल्ड एलिमेंट्स का मिश्रण (जैसा HTML-जैसा मार्कअप करता है), तो उसकी सामग्री बिल्कुल वैसी ही छोड़ी जाती है जैसी मिली थी। वही एक नियम <p>Hello <b>there</b></p> को there के आस-पास चुपचाप रिक्त स्थान पाने से रोकता है।

वेल-फॉर्म्ड, वैध के समान नहीं

यहाँ किया गया जाँच वेल-फॉर्म्डनेस है, जो XML विनिर्देश हर पार्सर से माँगता है: एक रूट एलिमेंट, हर टैग बंद और सही ढंग से नेस्टेड, एट्रिब्यूट मान कोट किए गए, और टेक्स्ट के अंदर & और < एस्केप किए गए। यदि इनमें से कुछ भी विफल होता है, तो दस्तावेज़ सीधे अस्वीकार कर दिया जाता है — XML प्रसिद्ध रूप से HTML के विपरीत कोई त्रुटि पुनर्प्राप्ति नहीं रखता।

वैधता एक और कदम है: यह पूछता है कि क्या दस्तावेज़ किसी DTD, XSD या RelaxNG स्कीमा से मेल खाता है, ताकि <invoice> वास्तव में कोई <total> रखे और तिथि वास्तव में कोई तिथि हो। इसके लिए स्कीमा की ज़रूरत होती है, जो चिपकाए जा रहे दस्तावेज़ का हिस्सा नहीं है। यहाँ का हरा परिणाम इसका अर्थ है कि वाक्यरचना ध्वनिमय है और कोई भी पार्सर फ़ाइल स्वीकार करेगा। इसका यह अर्थ नहीं है कि प्राप्त करने वाली प्रणाली सामग्री को सही मानेगी।

मिनिफ़िकेशन और स्व-बंद टैग

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

दूसरी बचत खाली एलिमेंट्स से आती है: <summary></summary> और <summary/> को विनिर्देश द्वारा समान परिभाषित किया गया है, और आउटपुट पर छोटा रूप उपयोग किया जाता है। लाभ वास्तविक पर नम्र है — XML अपना अधिकांश आकार दोहरे गए टैग नामों में खर्च करता है, क्योंकि हर एलिमेंट अपना नाम दो बार लिखता है। यदि किसी फ़ाइल को वास्तव में छोटा होना चाहिए, तो gzip ही उत्तर है; यह उन दोहरे नामों को व्हाइटस्पेस हटाने की किसी भी मात्रा से कहीं बेहतर संभालता है। पढ़ने के लिए एक फॉर्मैट किया गया प्रति रखें, क्योंकि मिनिफ़ाइड XML मनुष्यों के लिए लगभग अपठनीय होता है।

ओपन-सोर्स नोट: वैनिला JavaScript में, बिना किसी तृतीय-पक्ष लाइब्रेरी के कार्यान्वित।

FAQ

क्या मेरा XML कहीं अपलोड किया जाता है?
नहीं। दस्तावेज़ आपके ब्राउज़र में निर्मित DOMParser का उपयोग करके पार्स और सीरियलाइज़ किया जाता है, इसलिए कुछ भी सर्वर को नहीं भेजा जाता।
क्या फॉर्मैटिंग मेरे दस्तावेज़ को बदलती है?
केवल उन एलिमेंट्स के अंदर जो कुछ भी नहीं, केवल अन्य एलिमेंट्स रखते हैं, जहाँ व्हाइटस्पेस अनदेखा किया जा सकता है। टेक्स्ट या मिश्रित सामग्री रखने वाले एलिमेंट्स को वैसा ही छोड़ा जाता है।
क्या यह किसी स्कीमा के विरुद्ध मान्य करता है?
नहीं। यह वेल-फॉर्म्डनेस जाँचता है — बंद और सही ढंग से नेस्टेड टैग, एक रूट, एस्केप किए गए वर्ण। किसी DTD या XSD के विरुद्ध मान्य करने के लिए स्वयं स्कीमा की ज़रूरत होती है।
मेरा दस्तावेज़ अस्वीकार क्यों किया जाता है?
आमतौर पर कोई बंद न हुआ या मेल न खाने वाला टैग, कोई एस्केप न किया गया & या <, कोई कोट न किया गया एट्रिब्यूट मान, या एक से अधिक रूट एलिमेंट। XML में कोई त्रुटि पुनर्प्राप्ति नहीं होती।
एलिमेंट और गहराई काउंटर्स का क्या अर्थ है?
एलिमेंट्स दस्तावेज़ में एलिमेंट नोड्स की कुल संख्या है। गहराई नेस्टेड एलिमेंट्स की सबसे लंबी श्रृंखला है, जिसमें रूट को स्तर एक गिना जाता है।
मेरे खाली टैग आकार क्यों बदल गए?
<a></a> और <a/> को XML विनिर्देश द्वारा समान परिभाषित किया गया है, इसलिए मिनिफ़ाइड आउटपुट बाइट्स बचाने के लिए छोटे स्व-बंद रूप का उपयोग करता है।