XML فارمیٹنگ کیا ہے؟
XML (Extensible Markup Language) منظم دستاویزات اور ڈیٹا کے تبادلے کے لیے W3C سے معیاری شدہ ٹیکسٹ فارمیٹ ہے۔ فارمیٹنگ — جسے pretty-printing یا beautifying بھی کہتے ہیں — ایک سالم XML سورس کو لیتی ہے اور اسے دوبارہ انڈینٹ کرتی ہے تاکہ ہر عنصر، attribute، تبصرہ، processing instruction اور CDATA سیکشن آسانی سے پڑھا جا سکے۔ پارس شدہ دستاویز کا درخت بالکل محفوظ رہتا ہے؛ صرف عناصر کے درمیان سفید جگہ بدلتی ہے۔
XML فارمیٹنگ کیسے کام کرتی ہے؟
آپ کا ان پٹ مکمل طور پر آپ کے براؤزر میں اصلی DOMParser اور XMLSerializer APIs اور ایک حسبِ ضرورت recursive indenter کے ذریعے پراسیس ہوتا ہے۔ بنیادی مراحل یہ ہیں:
- آپ کا ان پٹ textarea سے لفظی طور پر پڑھا جاتا ہے — جو بائٹ آپ نے پیسٹ کیا وہ مقامی میموری میں رہتا ہے۔
- براؤزر اسے
new DOMParser().parseFromString(text, 'application/xml')سے پارس کرتا ہے۔ اگر ان پٹ سالم نہ ہو تو پارسر ایک<parsererror>نوڈ شامل کرتا ہے جس کا متن انجن کی لائن و کالم کی نشاندہی رکھتا ہے — انہیں ایرر سٹرپ میں من و عن دکھایا جاتا ہے۔ - کامیاب پارس پر، ایک کسٹم indenter DOM ٹری میں depth-first چلتا ہے، ہر عنصر، attribute سیٹ، CDATA سیکشن، تبصرہ اور processing instruction کو موجودہ گہرائی پر اپنی سطر میں نکالتا ہے۔ آپشن آن ہو تو خود بند ہونے والے void ٹیگز کا احترام کیا جاتا ہے۔
- منی فائی موڈ پائپ لائن کو پلٹ دیتا ہے:
XMLSerializer().serializeToString(doc)ایک سطری شکل نکالتا ہے، پھر ایک محفوظ regex عناصر کے درمیان سفید جگہ ہٹا دیتا ہے بغیر CDATA blocks یا غیر سفید جگہ والے text nodes کو چھوئے۔ - آؤٹ پٹ readonly textarea میں لکھا جاتا ہے، ایرر سٹرپ صاف کیا جاتا ہے، اور ڈاؤن لوڈ بٹن نتیجے کو
.xmlفائل کی صورت میں پیک کرتا ہے جسے آپ شپ کر سکتے ہیں یا ٹکٹ کے ساتھ منسلک کر سکتے ہیں۔
اس ٹول سے XML کیوں pretty-print کریں؟
- رازداری: ہر پارس، فارمیٹ اور منی فائی کا عمل آپ کے براؤزر میں ہوتا ہے۔ XML ہمارے سرورز تک نہیں پہنچتا — کوئی اپلوڈ نہیں، کوئی ٹیلیمیٹری نہیں، کوئی اکاؤنٹ نہیں۔
- درست غلطیاں: جب ان پٹ خراب ہو، پارسر وہی لائن و کالم بتاتا ہے جو براؤزر انجن خود رپورٹ کرتا ہے، کوئی مصنوعی اندازہ نہیں — وہی نمبر جو آپ DevTools میں دیکھیں گے۔
- وفادار راؤنڈ ٹرپ: فارمیٹ کریں پھر منی فائی، آپ کو اپنے اصل دستاویز کے بائٹ-مساوی واپس ملتے ہیں (XML اعلامیہ آپشن کے علاوہ) — فارمیٹنگ namespaces کو re-canonicalise نہیں کرتی اور attribute order کو نہیں بدلتی۔
- تیز: خالص DOMParser اور تقریباً 60 سطری indenter ملٹی میگابائٹ SOAP envelopes اور OOXML chunks کو فوری ہینڈل کرتے ہیں، بغیر کسی بیرونی لائبریری لوڈ کیے۔
XML فارمیٹنگ کے عام استعمال کیا ہیں؟
XML کی pretty-printing ویب پبلشنگ، انٹرپرائز انضمام اور ڈیٹا آرکائیوزل میں ہر جگہ نظر آتی ہے:
- RSS / Atom feed معائنہ: شائع کرنے سے پہلے کسی پوڈکاسٹ یا نیوز فیڈ کا body پیسٹ کر کے channel metadata، item ordering اور namespace prefixes کی تصدیق کریں۔
- SOAP ڈی بگنگ: Wireshark یا SOAP client log سے کاپی کیا envelope فارمیٹ کریں تاکہ Header، Body اور Fault سیکشن ایک نظر میں نظر آئیں۔
- Sitemap آڈٹ: مقابل یا اپنی staging سائٹ سے لی گئی sitemap.xml کو دوبارہ انڈینٹ کریں تاکہ entries گنیں اور ہر URL کے hreflang alternates کی توثیق کریں۔
XML فارمیٹنگ کی مثال کیسی دکھتی ہے؟
تین عناصر والی <feed><entry><title>Hello</title></entry></feed> پیسٹ کرنا اور 2-اسپیس انڈینٹ آپشن کے ساتھ Format دبانا چار سطروں کی دستاویز دیتا ہے جس میں ہر عنصر اپنی سطر پر گہرائی کے مطابق انڈینٹ ہوتا ہے۔ اسی ان پٹ پر Minify پر سوئچ کرنا اسے دوبارہ اصل بائٹ-سٹرنگ میں سمیٹ دیتا ہے۔ ہر سالم دستاویز کے لیے راؤنڈ ٹرپ نقصان سے پاک ہے۔
کیا یہ آف لائن چلتا ہے؟
جی ہاں۔ فارمیٹ اور منی فائی پائپ لائن خالص DOMParser + XMLSerializer اور ایک چھوٹا recursive indenter ہے، سب کچھ براؤزر ٹیب کے اندر چلتا ہے۔ کچھ اپلوڈ نہیں ہوتا، کوئی service worker آپ کا ان پٹ پراکسی نہیں کرتا، اور صفحہ فارمیٹ مرحلے کے لیے کوئی نیٹ ورک ریکوئسٹ نہیں کرتا۔ صرف باہر جانے والی ٹریفک معیاری صفحہ لوڈ assets (CSS، فونٹس، analytics) ہے — آپ کا XML Ultim8Soft تک نہیں پہنچتا۔
کیا فارمیٹنگ دستاویز بدلتی ہے؟
کوئی معنوی تبدیلی نہیں۔ فارمیٹنگ صرف عناصر کے درمیان سفید جگہ کو دوبارہ لکھتی ہے۔ عنصر کے نام، attribute values، text content، CDATA payloads، تبصرے اور processing instructions بائٹ بہ بائٹ محفوظ ہیں۔ Namespace declarations اور prefixes بالکل ویسے ہی رہتے ہیں جیسے ان پٹ نے انہیں لکھا — فارمیٹر attributes کو re-canonicalise یا reorder نہیں کرتا۔ آؤٹ پٹ وہی DOM درخت پارس کرتا ہے جو ان پٹ، اختیاری XML اعلامیہ ٹوگل کے علاوہ۔
CDATA / تبصرے / processing instructions کیسے ہینڈل ہوتے ہیں؟
ہر ایک موجودہ انڈینٹ گہرائی پر اپنی سطر میں من و عن نکالا جاتا ہے۔ CDATA payloads <![CDATA[…]]> میں لپیٹ کر اندر بغیر re-indentation کے رکھے جاتے ہیں — spec کہتی ہے CDATA content opaque ہے، اس لیے فارمیٹر اسے کبھی نہیں چھوتا۔ تبصرے <!-- … --> استعمال کرتے ہیں؛ processing instructions <?target data?> استعمال کرتی ہیں۔ تینوں format → minify → format راؤنڈ ٹرپ میں اپنے مواد سمیت برقرار رہتے ہیں۔
XML فارمیٹنگ اور منی فائنگ میں کیا فرق ہے؟
فارمیٹنگ سفید جگہ بڑھاتی ہے تاکہ انسان دستاویز کا درخت پڑھ سکیں؛ منی فائنگ اسے transport اور storage کے لیے واپس نکال دیتی ہے۔ دونوں پارس شدہ DOM پر کام کرتے ہیں، خام بائٹ سٹرنگ پر نہیں، اس لیے ایک سالم دستاویز پر format → minify راؤنڈ ٹرپ اصل minified شکل کا بائٹ-مساوی دیتا ہے۔ format کی سمت اس وقت استعمال کریں جب آپ کو کوئی XML payload پڑھنا یا diff کرنا ہو، اور minify کی سمت جب آپ اسے metered API gateway پر بھیجنا چاہیں یا کسی دوسری دستاویز کے اندر embed کرنا چاہیں۔
یہ XML فارمیٹر اسی پارسر کو استعمال کرتا ہے جو آپ کا براؤزر AJAX XHR responses اور SVG دستاویزات کے لیے استعمال کرتا ہے، اس لیے کوئی بھی سالم XML — RSS، Atom، SOAP، sitemap، OOXML، SVG — صاف ستھرا راؤنڈ ٹرپ کرتا ہے۔ اوپر کوئی بھی XML پیسٹ کریں، آؤٹ پٹ کاپی کریں، یا اسے .xml کے طور پر ڈاؤن لوڈ کریں۔