§

XML পেস্ট করুন

§

বিকল্পসমূহ

মোড
ইন্ডেন্ট
XML ডিক্লেরেশন
সেলফ-ক্লোজিং void ট্যাগ
§

ফরম্যাট করা আউটপুট

xml

বাংলাদেশ ও পশ্চিমবঙ্গের ডেভেলপাররা RSS ফিড, SOAP ওয়েব সার্ভিস ইন্টিগ্রেশন এবং sitemap.xml ফাইল নিয়ে কাজ করার সময় XML ফরম্যাটিং ব্যবহার করেন। Maven POM ফাইল, SVG অ্যাসেট এবং Android manifest ফাইল — যা সবই XML — পুল রিকোয়েস্ট রিভিউতে পরিষ্কার ইন্ডেন্টেশনের সুবিধা পায়। এই ব্রাউজার-ভিত্তিক ফরম্যাটার ব্যবহার করুন — কোনো সার্ভারে পেলোড পাঠানো ছাড়াই।

XML ফরম্যাটিং কী?

XML (Extensible Markup Language) হলো কাঠামোগত ডকুমেন্ট এবং ডেটা বিনিময়ের জন্য একটি W3C-মানিত টেক্সট ফরম্যাট। ফরম্যাটিং — যাকে প্রিটি-প্রিন্টিং বা বিউটিফাইং-ও বলা হয় — একটি well-formed XML উৎস নিয়ে পুনরায় ইন্ডেন্ট করে যাতে প্রতিটি এলিমেন্ট, অ্যাট্রিবিউট, কমেন্ট, প্রসেসিং ইন্সট্রাকশন এবং CDATA বিভাগ সহজে স্ক্যান করা যায়। পার্স করা ডকুমেন্ট ট্রি ঠিক সংরক্ষিত থাকে; শুধুমাত্র এলিমেন্টের মধ্যবর্তী হোয়াইটস্পেস পরিবর্তিত হয়।

XML ফরম্যাটিং কীভাবে কাজ করে?

আপনার ইনপুট নেটিভ DOMParser এবং XMLSerializer API প্লাস একটি কাস্টম রিকার্সিভ ইন্ডেন্টার ব্যবহার করে সম্পূর্ণ আপনার ব্রাউজারে প্রক্রিয়া করা হয়। উচ্চ-স্তরের ধাপগুলো হলো:

  1. আপনার ইনপুট textarea থেকে হুবহু পড়া হয় — আপনি যে প্রতিটি বাইট পেস্ট করেছেন তা স্থানীয়ভাবে মেমরিতে রাখা হয়।
  2. ব্রাউজার new DOMParser().parseFromString(text, 'application/xml') দিয়ে পার্স করে। ইনপুট well-formed না হলে, পার্সার একটি <parsererror> নোড এমবেড করে যার টেক্সট পেলোড ইঞ্জিনের লাইন ও কলাম হিন্ট বহন করে — ত্রুটি স্ট্রিপে হুবহু দেখানো হয়।
  3. সফল পার্সে, একটি কাস্টম ইন্ডেন্টার DOM ট্রি ডেপথ-ফার্স্ট হাঁটে, প্রতিটি এলিমেন্ট, অ্যাট্রিবিউট সেট, CDATA বিভাগ, কমেন্ট এবং প্রসেসিং ইন্সট্রাকশন বর্তমান গভীরতায় নিজস্ব লাইনে নির্গত করে।
  4. মিনিফাই মোড পাইপলাইন ফ্লিপ করে: XMLSerializer().serializeToString(doc) একটি একক-লাইন ফর্ম নির্গত করে, তারপর একটি সুরক্ষিত রেগেক্স CDATA ব্লক বা নন-হোয়াইটস্পেস টেক্সট নোডের ভেতরের টেক্সট না ছুঁয়ে এলিমেন্টের মধ্যবর্তী হোয়াইটস্পেস সরায়।
  5. আউটপুট রিডোনলি textarea-তে লেখা হয়, ত্রুটি স্ট্রিপ পরিষ্কার হয় এবং ডাউনলোড বাটন ফলাফলকে .xml ফাইল হিসেবে প্যাকেজ করে।

কেন এই টুল দিয়ে XML প্রিটি-প্রিন্ট করবেন?

  • গোপনীয়তা: প্রতিটি পার্স, ফরম্যাট এবং মিনিফাই পাস আপনার ব্রাউজারে হয়। XML কখনও আমাদের সার্ভারে পৌঁছায় না — কোনো আপলোড নেই, কোনো টেলিমেট্রি নেই, কোনো অ্যাকাউন্ট নেই।
  • সুনির্দিষ্ট ত্রুটি: ইনপুট malformed হলে, পার্সার ব্রাউজার ইঞ্জিন নিজেই রিপোর্ট করা সঠিক লাইন ও কলাম দেখায়, কোনো সিন্থেটিক অনুমান নয় — DevTools-এ আপনি যে একই সংখ্যা দেখতেন।
  • বিশ্বস্ত রাউন্ড-ট্রিপ: ফরম্যাট তারপর মিনিফাই করুন এবং আপনি আপনার মূল ডকুমেন্টের বাইট-সমতুল্য ফিরে পাবেন — ফরম্যাটিং কখনও নেমস্পেস পুনরায় ক্যানোনিক্যালাইজ করে না বা অ্যাট্রিবিউট ক্রম পুনর্লিখন করে না।
  • দ্রুত: বিশুদ্ধ DOMParser প্লাস একটি ~৬০-লাইন ইন্ডেন্টার বহু-মেগাবাইট SOAP এনভেলোপ এবং OOXML চাংক তাৎক্ষণিকভাবে পরিচালনা করে, ডাউনলোড করতে কোনো বাহ্যিক লাইব্রেরি নেই।

XML ফরম্যাটিংয়ের সাধারণ প্রয়োগ কী কী?

প্রিটি-প্রিন্টিং XML ওয়েব পাবলিশিং, এন্টারপ্রাইজ ইন্টিগ্রেশন এবং ডেটা আর্কাইভাল জুড়ে দেখা যায়:

  • RSS / Atom ফিড পরিদর্শন: প্রকাশ করার আগে চ্যানেল মেটাডেটা, আইটেম অর্ডার এবং নেমস্পেস প্রিফিক্স নিশ্চিত করতে একটি পডকাস্ট বা নিউজ ফিড বডি পেস্ট করুন।
  • SOAP ডিবাগিং: Wireshark বা SOAP ক্লায়েন্ট লগ থেকে কপি করা একটি এনভেলোপ ফরম্যাট করুন যাতে Header, Body এবং Fault বিভাগ এক নজরে দৃশ্যমান হয়।
  • সাইটম্যাপ অডিটিং: প্রতিযোগী বা আপনার নিজের স্টেজিং সাইট থেকে আনা একটি sitemap.xml পুনরায় ইন্ডেন্ট করুন এন্ট্রি গণনা করতে এবং প্রতি URL-এ hreflang বিকল্প নিশ্চিত করতে।

XML ফরম্যাটিংয়ের উদাহরণ কেমন দেখায়?

একটি ৩-এলিমেন্টের <feed><entry><title>Hello</title></entry></feed> পেস্ট করুন এবং ২-স্পেস ইন্ডেন্ট অপশনে Format চাপুন — একটি চার-লাইনের ডকুমেন্ট পাবেন প্রতিটি এলিমেন্ট নিজস্ব লাইনে, গভীরতা অনুযায়ী ইন্ডেন্ট করা। একই ইনপুটে Minify-তে স্যুইচ করুন এবং এটি মূল বাইট-স্ট্রিংয়ে ফিরে সংকুচিত হয়। যেকোনো well-formed ডকুমেন্টের রাউন্ড-ট্রিপিং ক্ষতিমুক্ত।

এটি কি অফলাইনে চলে?

হ্যাঁ। ফরম্যাট ও মিনিফাই পাইপলাইন বিশুদ্ধ DOMParser + XMLSerializer প্লাস একটি ছোট রিকার্সিভ ইন্ডেন্টার, সব ব্রাউজার ট্যাবের ভেতরে চলে। কিছুই আপলোড হয় না, কোনো সার্ভিস ওয়ার্কার আপনার ইনপুট প্রক্সি করে না এবং ফরম্যাট ধাপে পেজ শূন্য নেটওয়ার্ক অনুরোধ করে। একমাত্র আউটবাউন্ড ট্রাফিক হলো স্ট্যান্ডার্ড পেজ-লোড অ্যাসেট (CSS, ফন্ট, অ্যানালিটিক্স) — আপনার XML কখনও Ultim8Soft-এ পৌঁছায় না।

ফরম্যাটিং কি ডকুমেন্ট পরিবর্তন করে?

কোনো সিমান্টিক পরিবর্তন নেই। ফরম্যাটিং শুধুমাত্র এলিমেন্টের মধ্যে হোয়াইটস্পেস পুনর্লিখন করে। এলিমেন্টের নাম, অ্যাট্রিবিউট মান, টেক্সট কন্টেন্ট, CDATA পেলোড, কমেন্ট এবং প্রসেসিং ইন্সট্রাকশন বাইট-ফর-বাইট সংরক্ষিত। নেমস্পেস ডিক্লেরেশন এবং প্রিফিক্স ইনপুট যেভাবে লিখেছিল ঠিক সেভাবেই রাখা হয়।

CDATA / কমেন্ট / প্রসেসিং ইন্সট্রাকশন কীভাবে পরিচালনা করা হয়?

প্রতিটি বর্তমান ইন্ডেন্ট গভীরতায় নিজস্ব লাইনে হুবহু নির্গত হয়। CDATA পেলোড <![CDATA[…]]>-এ মোড়ানো হয় ভেতরে কোনো পুনরায় ইন্ডেন্টেশন ছাড়া — স্পেক বলে CDATA কন্টেন্ট অস্বচ্ছ, তাই ফরম্যাটার কখনও এটি স্পর্শ করে না। কমেন্ট <!-- … --> ব্যবহার করে; প্রসেসিং ইন্সট্রাকশন <?target data?> ব্যবহার করে।

XML ফরম্যাটিং ও মিনিফাইয়ের মধ্যে পার্থক্য কী?

ফরম্যাটিং হোয়াইটস্পেস প্রসারিত করে যাতে মানুষ ডকুমেন্ট ট্রি পড়তে পারেন; মিনিফাইং পরিবহন ও সঞ্চয়ের জন্য তা ফিরিয়ে নেয়। উভয়ই পার্স করা DOM-এ কাজ করে, কাঁচা বাইট স্ট্রিংয়ে নয়, তাই একটি well-formed ডকুমেন্টে রাউন্ড-ট্রিপ ফরম্যাট → মিনিফাই মূল মিনিফাইড ফর্মের বাইট-সমতুল্য দেয়।

এই XML ফরম্যাটার আপনার ব্রাউজার AJAX XHR রেসপন্স এবং SVG ডকুমেন্টের জন্য যে পার্সার ব্যবহার করে সেটিই ব্যবহার করে, তাই যেকোনো well-formed XML — RSS, Atom, SOAP, sitemap, OOXML, SVG — পরিষ্কারভাবে রাউন্ড-ট্রিপ করে। উপরে যেকোনো XML পেস্ট করুন, আউটপুট কপি করুন বা .xml হিসেবে ডাউনলোড করুন।