Skip to content
XML ফরম্যাটার
Tools

XML ফরম্যাটার

নতুন

আপনার ব্রাউজারেই XML সুন্দর করুন, মিনিফাই ও যাচাই করুন।

Runs entirely in your browser. Nothing is uploaded.

ফ্রি অনলাইন XML formatter — বিউটিফাই, মিনিফাই ও ভ্যালিডেট

এই XML formatter ঘন বা মিনিফাই করা XML-কে তাৎক্ষণিকভাবে পরিষ্কার, পাঠযোগ্য মার্কআপে রূপান্তরিত করে, সঠিক ইনডেন্টেশনসহ। যেকোনো XML পেস্ট করুন, আপনার ইনডেন্ট স্টাইল বেছে নিন (২ স্পেস, ৪ স্পেস বা Tab), আর Beautify-তে ক্লিক করুন — ফলাফল কয়েক মিলিসেকেন্ডেই আউটপুট প্যানে দেখা যায়। এটি যেকোনো XML-ভিত্তিক ফরম্যাটে কাজ করে: REST ও SOAP API রেসপন্স, RSS ও Atom ফিড, SVG ফাইল, Android ম্যানিফেস্ট, Maven POM, Spring কনফিগ ফাইল, GPX ট্র্যাক, Apple PList ফাইল এবং আরও অনেক কিছু।

একই টুল XML মিনিফাই করতে পারে — সম্ভাব্য সবচেয়ে ছোট ডকুমেন্ট তৈরি করতে সমস্ত অপ্রয়োজনীয় whitespace সরিয়ে ফেলে — এবং ভ্যালিডেট করতে পারে যে ডকুমেন্টটি well-formed কিনা, যেকোনো ত্রুটির সঠিক লাইন ও কলাম জানিয়ে দেয়। সবকিছুই আপনার ব্রাউজারে লোকালি চলে; আপনার XML কখনও আপলোড হয় না, ফলে গোপনীয় ডেটা পেস্ট করা নিরাপদ।

কনফিগারযোগ্য ইনডেন্টেশন ও স্মার্ট ফরম্যাটিং

তিনটি ইনডেন্ট স্টাইলের মধ্যে বেছে নিন — ২ স্পেস, ৪ স্পেস বা Tab — যাতে তা আপনার প্রজেক্টের কোড স্টাইলের সাথে মেলে। সেটিং পাল্টানোর সাথে সাথেই আউটপুট আপডেট হয়। বিউটিফায়ারটি XML ডিক্লারেশন (<?xml version="1.0"?>), self-closing ট্যাগ, প্রসেসিং ইনস্ট্রাকশন, কমেন্ট এবং মিশ্র কন্টেন্ট সঠিকভাবে সামলায়।

মিনিফিকেশনের জন্য, Minify বাটন সমস্ত ট্যাগের মধ্যকার whitespace সংকুচিত করে একটি একক-লাইন ডকুমেন্ট তৈরি করে — HTTP-এর মাধ্যমে পাঠানো, ডেটাবেসে এমবেড করা, বা যেখানে পেলোডের আকার গুরুত্বপূর্ণ এমন কনফিগারেশন সিস্টেমে সংরক্ষিত XML-এর মানক রূপ। ফরম্যাটিং ও মিনিফিকেশন কেবল whitespace স্পর্শ করে; এলিমেন্টের নাম, অ্যাট্রিবিউটের মান এবং টেক্সট কন্টেন্ট কখনও পরিবর্তিত হয় না।

XML-এর well-formedness তাৎক্ষণিক ভ্যালিডেট করুন

আপনার XML well-formed কিনা যাচাই করতে Validate-এ ক্লিক করুন (অথবা Beautify — দুটোই চেকটি চালায়)। টুলটি আপনার ডকুমেন্ট পার্স করতে ব্রাউজারের নেটিভ DOMParser ব্যবহার করে এবং প্রথম ত্রুটিটি একটি সুনির্দিষ্ট অবস্থানসহ জানিয়ে দেয়। এটি যেসব সাধারণ সমস্যা ধরে তার মধ্যে আছে unclosed ট্যাগ, ওভারল্যাপিং এলিমেন্ট, একাধিক root নোড, এস্কেপ না করা ampersand, ভুলভাবে quote করা অ্যাট্রিবিউট এবং এনকোডিং অমিল।

একটি সবুজ Well-formed XML ব্যাজ নিশ্চিত করে যে ডকুমেন্টটি কাঠামোগতভাবে সঠিক। একটি হলুদ সতর্কতা সম্ভাব্য সমস্যার ইঙ্গিত দেয়, তবু formatter ইনডেন্টেশন প্রয়োগ করে যাতে আপনি আউটপুট তুলনা করে সমস্যাটি খুঁজে পেতে পারেন। এটি সেই একই XML ভ্যালিডেশন যা ব্রাউজার XHTML ও SVG পার্স করতে ব্যবহার করে।

কোলাপসিবল XML ট্রি ভিউয়ার

raw ফরম্যাট করা টেক্সট থেকে একটি ইন্টারঅ্যাক্টিভ, কোলাপসিবল ট্রি ভিউতে যেতে Tree ট্যাবে ক্লিক করুন। প্রতিটি XML এলিমেন্ট একটি সারি হিসেবে দেখা যায়, যার পাশে একটি ত্রিভুজ থাকে যা ক্লিক করে আপনি এর সাবট্রি এক্সপ্যান্ড বা কোলাপস করতে পারেন। অ্যাট্রিবিউট নীল রঙে, ট্যাগের নাম সবুজে এবং টেক্সট কন্টেন্ট গাঢ় রঙে দেখানো হয় — যা জটিল nested কাঠামো এক নজরে দেখা সহজ করে তোলে।

ট্রি ভিউয়ারটি বিশেষভাবে কাজে আসে SOAP envelope, Maven POM ফাইল, বড় RSS ফিড, Android রিসোর্স ফাইল এবং যেকোনো গভীরভাবে nested XML-এর জন্য, যেখানে raw টেক্সটের মধ্য দিয়ে স্ক্রল করা অবাস্তব। একটি ব্রাঞ্চ কোলাপস করলে এক ক্লিকেই তার পুরো সাবট্রি লুকিয়ে যায়, যা আপনাকে গুরুত্বপূর্ণ অংশগুলোতে মনোযোগ দিতে সাহায্য করে।

Notepad++, VS Code, XMLSpy ও xmllint-এর সাথে তুলনা

XML Tools প্লাগ-ইনসহ Notepad++ এবং VS Code (Shift+Alt+F) দুটোই XML ফরম্যাট করে, কিন্তু এদের জন্য লোকাল সফটওয়্যার ইনস্টল করতে হয় এবং এগুলো কেবল ডিস্কে সংরক্ষিত ফাইলে কাজ করে। XMLSpy ও oXygen XML Editor স্কিমা ভ্যালিডেশনসহ (XSD, DTD, RelaxNG) উন্নত XML এডিটিং দেয়, কিন্তু লাইসেন্সপ্রতি বছরে কয়েকশো ডলার খরচ হয় — যা মাঝেমধ্যে XML ফরম্যাট করার প্রয়োজনের তুলনায় অনেক বেশি। কমান্ড লাইনে xmllint ফ্রি ও শক্তিশালী, কিন্তু এর জন্য libxml2 ইনস্টল করা এবং একটি টার্মিনাল সেশন দরকার।

এই অনলাইন formatter-এর কোনো ইনস্টলেশন, লাইসেন্স বা অ্যাকাউন্ট লাগে না। সরাসরি ক্লিপবোর্ড থেকে পেস্ট করুন, আপনার ডিভাইস থেকে একটি ফাইল আপলোড করুন, বা একটি বিল্ট-ইন স্যাম্পল লোড করুন, তারপর ফলাফল কপি বা ডাউনলোড করুন। ট্রি ভিউ এমন একটি ফিচার যার জন্য বেশিরভাগ ডেস্কটপ টুল টাকা নেয়, কিন্তু এখানে তা ফ্রি — বিশেষত ডিবাগিংয়ের সময় গভীর SOAP রেসপন্স পেলোড বা Android ম্যানিফেস্ট ফাইল ঘেঁটে দেখার জন্য দারুণ কাজের।

আপলোড, স্যাম্পল ও ডাউনলোড

আপনার কম্পিউটার থেকে একটি XML ফাইল খুলতে Upload বাটন ব্যবহার করুন — এটি ফাইলটি লোকালি পড়ে ইনপুট বক্স ভরে দেয়, কোনো সার্ভারে কিছু আপলোড না করেই। অথবা Sample-এ ক্লিক করে একটি সংক্ষিপ্ত bookstore উদাহরণ লোড করুন, যা অ্যাট্রিবিউট ও nested এলিমেন্টসহ একটি সাধারণ XML ডকুমেন্টে formatter-এর আউটপুট দেখায়।

ফরম্যাট করার পর, ফলাফল ক্লিপবোর্ডে নিতে Copy-তে বা একটি .xml ফাইল হিসেবে সংরক্ষণ করতে Download-এ ক্লিক করুন। ডাউনলোডটি আপনার বেছে নেওয়া ইনডেন্ট স্টাইল বজায় রাখে এবং সঙ্গে সঙ্গেই একটি এডিটরে খোলা বা রিপোজিটরিতে কমিট করার জন্য প্রস্তুত থাকে।

প্রাইভেট, তাৎক্ষণিক ও ফ্রি — iPhone, Android ও ডেস্কটপে চলে

কোনো সাইনআপ নেই, ইনস্টল করার কোনো এক্সটেনশন নেই এবং কোনো পেইড প্ল্যান নেই। প্রতিটি অপারেশন — ফরম্যাটিং, মিনিফিকেশন, ভ্যালিডেশন এবং ট্রি ভিউ — আপনার ব্রাউজারে চলে। আপনার XML কখনও আপনার ডিভাইস ছেড়ে যায় না। টুলটি সম্পূর্ণ রেসপনসিভ এবং iPhone-এর Safari, Android-এর Chrome এবং সব ডেস্কটপ ব্রাউজারে কাজ করে — যখন ল্যাপটপ না খুলে ফোনেই একটি API রেসপন্স চেক করতে হয়, তখন কাজের।

পরের বার যখন একটি ঘন API রেসপন্স পড়তে হবে, একটি কনফিগ ফাইল পরিষ্কার করতে হবে, বা একটি ত্রুটিপূর্ণ ডকুমেন্ট ডিবাগ করতে হবে, তখনের জন্য এই ফ্রি অনলাইন XML formatter বুকমার্ক করে রাখুন।

XML-এর সংক্ষিপ্ত ইতিহাস: SGML থেকে JSON এবং তারও পরে

XML 1.0 একটি W3C Recommendation হিসেবে ১৯৯৮ সালের ফেব্রুয়ারিতে প্রকাশিত হয়, কিন্তু এর বংশপরম্পরা আরও অনেক পুরনো। এর সরাসরি পূর্বসূরি হলো SGML (Standard Generalized Markup Language), যা ১৯৮৬ সালের একটি ISO মানক এবং মার্কআপ সিস্টেম বর্ণনার জন্য একটি মেটা-ভাষা সংজ্ঞায়িত করেছিল। HTML, যা প্রথম ১৯৯১ সালে Tim Berners-Lee প্রস্তাব করেন, নিজেই একটি SGML অ্যাপ্লিকেশন — ওয়েব কন্টেন্টের জন্য ট্যাগের একটি স্থির শব্দভাণ্ডার (<p>, <a>, <img>)। XML, SGML-এর সবচেয়ে জটিল ফিচারগুলো বাদ দিয়ে এটিকে সরল করে এবং একটি সাধারণ-উদ্দেশ্যের মার্কআপ ভাষা তৈরি করে, যেখানে ডেভেলপাররা একটি স্থির শব্দভাণ্ডার উত্তরাধিকারসূত্রে না পেয়ে নিজেদের ট্যাগ শব্দভাণ্ডার সংজ্ঞায়িত করেন।

২০০০-এর দশক জুড়ে “XML সর্বত্র” যুগ প্রতিষ্ঠিত হয়: ডেভেলপাররা সিস্টেমের মধ্যে ডেটা বিনিময়, অ্যাপ্লিকেশন কনফিগারেশন (Spring beans, Maven POM, Ant build script), UI লেআউট (Android XML লেআউট, .NET-এ XAML, Firefox-এ XUL), ডকুমেন্ট ফরম্যাট (OpenDocument, Microsoft Office-এর জন্য OOXML, ইবুকের জন্য EPUB), এবং ওয়েব সার্ভিসে (SOAP, WSDL, UDDI) XML ব্যবহার করতেন। W3C, XML-কে মানকের একটি পূর্ণ পরিবারে প্রসারিত করে: XML ডকুমেন্ট রূপান্তরের জন্য XSLT, নোড কোয়েরির জন্য XPath, স্কিমা ভ্যালিডেশনের জন্য XSD, XML ডেটাসেট জুড়ে জটিল কোয়েরির জন্য XQuery, এবং একটি সরল বিকল্প স্কিমা ভাষা হিসেবে RelaxNG

২০১০ সালের পর, JSON REST API পেলোডের ডিফল্ট ফরম্যাট হিসেবে XML-কে সরিয়ে দেয়, কারণ এটি আরও কমপ্যাক্ট, সরাসরি JavaScript অবজেক্টে ম্যাপ হয় এবং বেশিরভাগ ভাষায় পার্স করা সহজ। কিন্তু XML কখনও অদৃশ্য হয়নি: SOAP-ভিত্তিক এন্টারপ্রাইজ সার্ভিস, আর্থিক ডেটা মানক, স্বাস্থ্যসেবা ইন্টারঅপারেবিলিটি (HL7, FHIR), SVG গ্রাফিক্স এবং কার্যত প্রতিটি XML-ভিত্তিক ডকুমেন্ট ফরম্যাট আজও ২০০৫ সালের মতোই প্রাসঙ্গিক। কখন XML বনাম JSON ব্যবহার করতে হবে — এবং প্রতিটি কীভাবে প্রসেস করতে হবে — তা বোঝা backend ও ইন্টিগ্রেশন ডেভেলপারদের একটি মূল দক্ষতা।

XML namespace: নাম সংঘর্ষ ছাড়াই একটি ডকুমেন্ট শেয়ার করা

XML namespace একটি মৌলিক সমস্যার সমাধান করে: দুটি XML শব্দভাণ্ডার স্বাধীনভাবে একই নামের এলিমেন্ট সংজ্ঞায়িত করতে পারে। একটি purchase-order স্কিমা একটি <address> এলিমেন্ট সংজ্ঞায়িত করতে পারে, এবং একটি shipping স্কিমাও ভিন্ন child এলিমেন্টসহ একটি সংজ্ঞায়িত করতে পারে। namespace প্রক্রিয়াটি এলিমেন্ট ও অ্যাট্রিবিউটের নামগুলোকে একটি URI শনাক্তকারীর সাথে যুক্ত করে উভয়কে একটি ডকুমেন্টে সহাবস্থান করতে দেয়। একটি namespace ডিক্লারেশন দেখতে হয় xmlns:po="http://example.com/purchaseorder"-এর মতো — এর পর po: দিয়ে prefix করা প্রতিটি এলিমেন্ট সেই namespace-এর অন্তর্গত। গুরুত্বপূর্ণ বিষয় হলো, URI-টি কেবল একটি অনন্য স্ট্রিং শনাক্তকারী; এটির একটি প্রকৃত ওয়েব পেজে resolve হওয়ার দরকার নেই।

একটি default namespace (xmlns="http://www.w3.org/2000/svg") প্রতিটি ট্যাগে prefix ছাড়াই ডিক্লেয়ার করা এলিমেন্ট ও তার সমস্ত descendant-এ প্রযোজ্য হয়। এই কারণেই SVG ফাইল root <svg> এলিমেন্টে SVG namespace ডিক্লেয়ার করে — সব child এলিমেন্ট (<path>, <rect>, <circle>) স্বয়ংক্রিয়ভাবে সেই namespace-এ থাকে। এর বিপরীতে, HTML5-এর ভেতরে সরাসরি এমবেড করা inline SVG-এর namespace ডিক্লারেশন দরকার হয় না, কারণ HTML parser আগে থেকেই জানে যে একটি <svg> প্রসঙ্গের এলিমেন্টগুলোকে SVG হিসেবে বিবেচনা করতে হবে।

XML ইকোসিস্টেম জুড়ে namespace দেখা যায়। একটি SOAP 1.1 envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ডিক্লেয়ার করে, যাতে <soap:Envelope>, <soap:Header><soap:Body> র‍্যাপার এলিমেন্টগুলো দ্ব্যর্থহীন থাকে, এমনকি body পেলোড নিজের শব্দভাণ্ডার ব্যবহার করলেও। RSS ও Atom ফিড namespace ব্যবহার করে core ফিড এলিমেন্টকে এক্সটেনশন শব্দভাণ্ডারের সাথে মেশাতে, যেমন Media RSS (xmlns:media="http://search.yahoo.com/mrss/") বা Dublin Core মেটাডেটা সেট (xmlns:dc="http://purl.org/dc/elements/1.1/")। আপনি যখন একটি ট্রি ভিউয়ারে একটি জটিল ফিড বা এন্টারপ্রাইজ XML ডকুমেন্ট খোলেন এবং prefix করা এলিমেন্টের নাম দেখেন, সেই prefix-গুলো ডকুমেন্টের শীর্ষে সংজ্ঞায়িত namespace উপনাম।

XML স্কিমা ভ্যালিডেশন: DTD, XSD, RelaxNG ও Schematron

Well-formed হওয়া — কাঠামোগতভাবে বৈধ XML — সঠিকতার কেবল প্রথম স্তর। স্কিমা ভ্যালিডেশন যাচাই করে যে একটি ডকুমেন্ট একটি নির্দিষ্ট শব্দভাণ্ডারের সাথেও সঙ্গতিপূর্ণ কিনা: সঠিক ক্রমে সঠিক এলিমেন্ট, সঠিক ডেটা টাইপসহ। সবচেয়ে পুরনো প্রক্রিয়াটি হলো DTD (Document Type Definition), যা SGML থেকে উত্তরাধিকারসূত্রে পাওয়া। একটি DTD কোন এলিমেন্ট ও অ্যাট্রিবিউট অনুমোদিত এবং তাদের প্রয়োজনীয় ক্রম ঘোষণা করে, কিন্তু এটি একটি non-XML সিনট্যাক্স ব্যবহার করে এবং ডেটা টাইপ প্রকাশ করতে পারে না — এটি নির্দিষ্ট করতে পারে না যে একটি দাম যেকোনো টেক্সট নয় বরং একটি দশমিক সংখ্যা হতে হবে। DTD এখনও লিগ্যাসি সিস্টেম এবং XHTML-এর মতো ডকুমেন্ট টাইপে ব্যবহৃত হয়।

XML Schema (XSD) হলো W3C মানক যা বেশিরভাগ ক্ষেত্রে DTD-কে প্রতিস্থাপন করেছে। একটি XSD ফাইল নিজেই XML-এ লেখা, সমৃদ্ধ ডেটা টাইপ সমর্থন করে (xs:integer, xs:date, xs:anyURI), এক্সটেনশন বা রেস্ট্রিকশনের মাধ্যমে জটিল টাইপ ডেরিভেশনের অনুমতি দেয়, এবং সর্বনিম্ন/সর্বোচ্চ occurrence সীমা প্রয়োগ করতে পারে। XSD প্রধান বাস্তব-জগতের মানকের ভিত্তি: UBL (Universal Business Language) ইউরোপ ও এশিয়া জুড়ে সরকারি খাতের সংগ্রহে ব্যবহৃত e-invoicing ও procurement ডকুমেন্ট সংজ্ঞায়িত করে; HL7 FHIR স্বাস্থ্যসেবা ডেটা ইন্টারঅপারেবিলিটির জন্য XSD স্কিমা ব্যবহার করে; OOXML (ISO/IEC 29500) Microsoft Word, Excel ও PowerPoint ফাইল ফরম্যাটের XML স্কিমা নির্দিষ্ট করে। RelaxNG, একটি OASIS মানক, দুটি সিনট্যাক্সসহ XSD-এর একটি সরল বিকল্প দেয় — একটি XML রূপ এবং একটি আরও কমপ্যাক্ট non-XML নোটেশন — এবং DocBook, EPUB ও অন্যান্য ডকুমেন্ট মানকে ব্যবহৃত হয়।

Schematron (ISO/IEC 19757-3) একটি ভিন্ন পথ নেয়: আগে থেকে একটি ডকুমেন্টের কাঠামো সংজ্ঞায়িত করার বদলে, এটি XPath assertion ব্যবহার করে ব্যবসায়িক নিয়ম প্রকাশ করে। একটি Schematron নিয়ম বলতে পারে “যদি status এলিমেন্টে 'active' থাকে, তবে end-date এলিমেন্ট অনুপস্থিত থাকতে হবে” — একটি সীমাবদ্ধতা যা XSD প্রকাশ করতে পারে না, কারণ XSD-তে শর্তসাপেক্ষ যুক্তি নেই। এন্টারপ্রাইজ XML বাস্তবায়ন সাধারণত XSD-এর উপর Schematron স্তর করে: XSD কাঠামো ও ডেটা টাইপ সামলায়, Schematron cross-element ব্যবসায়িক নিয়ম সামলায়। একসাথে তারা European PEPPOL নেটওয়ার্কের মতো e-invoicing মানকে ব্যবহৃত ভ্যালিডেশন স্ট্যাক গঠন করে।

XPath ও XSLT: XML ডকুমেন্ট কোয়েরি ও রূপান্তর

XPath (XML Path Language) হলো একটি XML ডকুমেন্টের মধ্যে নোড বেছে নেওয়ার কোয়েরি ভাষা। একটি XPath এক্সপ্রেশন axessteps ব্যবহার করে ডকুমেন্ট ট্রি নেভিগেট করে: //book ডকুমেন্টের যেকোনো জায়গার সব <book> এলিমেন্ট বেছে নেয়; /catalog/book[price>30]/title একটি catalog-এর সেই বইগুলোর title বেছে নেয় যাদের দাম ৩০-এর বেশি; @isbn isbn নামের একটি অ্যাট্রিবিউট বেছে নেয়। পূর্ণ axis সিনট্যাক্সে আছে ancestor::, child::, descendant::, following-sibling::, preceding-sibling::attribute::, যা আপনাকে নোড ট্রি-র মধ্য দিয়ে যেকোনো দিকে নেভিগেট করতে দেয়। XPath 2.0 একটি সমৃদ্ধ ডেটা-টাইপ সিস্টেম এবং string ম্যানিপুলেশন, date গণনা ও sequence অপারেশন সহ একটি ফাংশন লাইব্রেরি যোগ করেছে। XPath, XSLT ও XQuery উভয়েরই ভিত্তি।

XSLT (eXtensible Stylesheet Language Transformations) হলো একটি ডিক্লারেটিভ ভাষা — XML-এ লেখা — যা একটি XML ইনপুট ডকুমেন্টকে HTML, প্লেইন টেক্সট বা একটি ভিন্ন XML শব্দভাণ্ডারে রূপান্তরিত করে। একটি XSLT stylesheet টেমপ্লেট নিয়ম (<xsl:template match="...">) নিয়ে গঠিত, যা XPath match এক্সপ্রেশন একটি নোড বেছে নিলে চালু হয়। XSLT মূলত CSS পরিপক্ব হওয়ার আগে প্রদর্শনের জন্য XML রেন্ডার করতে ডিজাইন করা হয়েছিল, কিন্তু এর সবচেয়ে টেকসই ব্যবহার হলো ভিন্ন স্কিমার মধ্যে XML-থেকে-XML অনুবাদ (যেমন একটি মালিকানাধীন purchase order ফরম্যাটকে UBL-এ রূপান্তর), JavaScript ছাড়া সার্ভারে RSS-থেকে-HTML রেন্ডারিং, এবং এমন ডকুমেন্ট পাবলিশিং পাইপলাইন যেখানে একই XML উৎস থেকে PDF ও HTML উভয় আউটপুট তৈরি হয়। Saxon processor (Saxonica-র) হলো শীর্ষস্থানীয় এন্টারপ্রাইজ XSLT ইঞ্জিন, যা XSLT 3.0 সমর্থন করে — এটি streaming, higher-order function ও JSON সমর্থন যোগ করে।

বাস্তবে, বেশিরভাগ ডেভেলপার আজকাল একটি standalone টুলের বদলে একটি লাইব্রেরির মাধ্যমে XPath ব্যবহার করেন। Python-এর lxml (যা libxml2-কে wrap করে, সেই C লাইব্রেরি যা PHP-র DOM এক্সটেনশন, GNOME প্রজেক্ট ও xmllint-কেও চালায়) পার্স করা এলিমেন্টে সরাসরি .xpath() উন্মুক্ত করে। কমান্ড লাইনে, XMLStarlet একটি XPath ইন্টারফেস দেয়: xml sel -t -m "//book" -v "title" -n file.xml প্রতি লাইনে একটি করে বইয়ের title প্রিন্ট করে — JSON-এর কাছে jq যা, XML-এর কাছে XMLStarlet তাই। এককালীন অনুসন্ধানমূলক কোয়েরির জন্য, এই formatter-এর ট্রি ভিউ আপনাকে একটি XPath এক্সপ্রেশন লেখার আগে ডকুমেন্টের কাঠামো দৃশ্যমানভাবে নেভিগেট করতে দেয়, একটি কমান্ড-লাইন টুল চালানোর ঝক্কি বাঁচিয়ে।

Frequently asked questions

XML formatter / beautifier কী?

একটি XML formatter (যা XML beautifier বা pretty-printer নামেও পরিচিত) ঘনভাবে সাজানো বা মিনিফাই করা XML নিয়ে সামঞ্জস্যপূর্ণ ইনডেন্টেশন ও লাইন ব্রেক যোগ করে, যাতে কাঠামোটি মানুষের পড়ার উপযোগী হয়। উদাহরণস্বরূপ, <root><item>1</item></root> তিনটি স্পষ্টভাবে ইনডেন্ট করা লাইনে পরিণত হয়: opening ট্যাগ, ইনডেন্ট করা child, এবং closing ট্যাগ। এই টুলটি একই সাথে যাচাই করে যে XML-টি well-formed কিনা।

XML কীভাবে ফরম্যাট করা উচিত?

স্ট্যান্ডার্ড XML ফরম্যাটিং প্রতিটি এলিমেন্টকে নিজের লাইনে রাখে, child এলিমেন্টগুলোকে তাদের parent-এর তুলনায় ইনডেন্ট করে — সাধারণত ২ বা ৪ স্পেস বা একটি Tab দিয়ে। অ্যাট্রিবিউট opening ট্যাগের লাইনেই থাকে। একটি ভালোভাবে ফরম্যাট করা ডকুমেন্ট একটি XML ডিক্লারেশন দিয়েও শুরু হয়, যেমন <?xml version="1.0" encoding="UTF-8"?>। উপরে আপনার XML পেস্ট করুন এবং স্ট্যান্ডার্ড ফরম্যাটিং তাৎক্ষণিক প্রয়োগ করতে Beautify-তে ক্লিক করুন।

আমি কীভাবে XML ফরম্যাট (beautify) করব?

ইনপুট বক্সে আপনার XML পেস্ট করুন, আপনার পছন্দের ইনডেন্ট বেছে নিন (২ স্পেস, ৪ স্পেস বা Tab), তারপর Beautify-তে ক্লিক করুন। ফরম্যাট করা ফলাফল আউটপুট প্যানে দেখা যায় এবং টুলটি জানায় ডকুমেন্টটি well-formed কিনা। আপনি একটি স্যাম্পল লোড করতে বা একটি .xml ফাইল আপলোড করতেও পারেন। ফরম্যাট হয়ে গেলে, ফলাফল সংরক্ষণ করতে Copy বা Download-এ ক্লিক করুন।

আমি কীভাবে XML মিনিফাই করব?

আপনার XML পেস্ট করার পর Minify-তে ক্লিক করুন। মিনিফাই করা ট্যাগগুলোর মধ্যকার সমস্ত whitespace সরিয়ে একটি কমপ্যাক্ট একক-লাইন ডকুমেন্ট তৈরি করে — যেমন: <root><item>1</item><item>2</item></root>। নেটওয়ার্কে XML পাঠানোর সময় বা প্রতিটি বাইট গুরুত্বপূর্ণ এমন কনফিগারেশনে এটি এমবেড করার সময় এটি কাজে আসে। মিনিফিকেশন কখনও এলিমেন্টের নাম, অ্যাট্রিবিউটের মান বা টেক্সট কন্টেন্ট পরিবর্তন করে না।

আমি কীভাবে XML ভ্যালিডেট করব?

Validate-এ ক্লিক করুন (অথবা শুধু Beautify-তে ক্লিক করুন — দুটোই চেকটি চালায়)। টুলটি ব্রাউজারের বিল্ট-ইন XML parser (DOMParser) দিয়ে আপনার XML পার্স করে এবং জানায় ডকুমেন্টটি well-formed কিনা, প্রথম সমস্যার লাইন ও কলামসহ ত্রুটি বার্তা দেখায়। একটি সবুজ ব্যাজ মানে বৈধ; একটি হলুদ সতর্কতা মানে ডকুমেন্টে কাঠামোগত সমস্যা থাকতে পারে।

কীসে একটি XML well-formed হয়?

একটি well-formed XML ডকুমেন্টে থাকতে হবে: (১) ঠিক একটি root এলিমেন্ট, (২) প্রতিটি খোলা ট্যাগ বন্ধ করা — হয় <item></item> হিসেবে বা self-closing <item/> হিসেবে, (৩) ওভারল্যাপ ছাড়া ট্যাগ nest করা (কোনো <b><i>text</b></i> নয়), (৪) সব অ্যাট্রিবিউটের মান quote করা, (৫) বিশেষ অক্ষর escape করা (& → &amp;, < → &lt;, > → &gt;), এবং (৬) সঠিক এনকোডিং ঘোষণা করা। কোনো নিয়ম ভাঙলে XML parser ডকুমেন্টটি প্রত্যাখ্যান করবে।

আমি কীভাবে XML-কে একটি কোলাপসিবল ট্রি হিসেবে দেখব?

আপনার XML ফরম্যাট বা পেস্ট করার পর, আউটপুট প্যানেলের উপরের Tree ট্যাবে ক্লিক করুন। প্রতিটি XML এলিমেন্ট একটি কোলাপসিবল সারি হিসেবে দেখা যায়, যার একটি ত্রিভুজে ক্লিক করে আপনি এর children লুকাতে বা দেখাতে পারেন। অ্যাট্রিবিউট নীলে, ট্যাগের নাম সবুজে এবং টেক্সট কন্টেন্ট কালোতে হাইলাইট করা হয় — যা SOAP envelope, Maven POM, Android ম্যানিফেস্ট বা বড় RSS ফিডের মতো গভীরভাবে nested কাঠামো শত শত raw লাইন স্ক্রল না করেই ঘেঁটে দেখা সহজ করে।

আমার XML অবৈধ কেন?

অবৈধ XML-এর সাধারণ কারণ: (১) unclosed ট্যাগ — </item> ছাড়া <item>; (২) ওভারল্যাপিং ট্যাগ — <b><i>text</b></i>; (৩) একাধিক root এলিমেন্ট — পাশাপাশি দুটি top-level ট্যাগ; (৪) escape না করা ampersand — &amp;-এর বদলে খালি &; (৫) ভুলভাবে quote করা বা quote অনুপস্থিত অ্যাট্রিবিউট। প্রথম সমস্যার সঠিক লাইন ও কলাম নির্দেশ করা একটি ত্রুটি বার্তার জন্য Validate-এ ক্লিক করুন, যাতে আপনি দ্রুত তা ঠিক করতে পারেন।

Notepad++ কি XML ফরম্যাট করে?

হ্যাঁ — Notepad++ XML Tools প্লাগ-ইন দিয়ে XML ফরম্যাট করতে পারে (Plugins → XML Tools → Pretty print)। কিন্তু প্লাগ-ইনটির জন্য একটি আলাদা ইনস্টলেশন ধাপ দরকার এবং এটি কেবল Windows-এ কাজ করে। XMLSpy ও oXygen XML Editor-ও XML ফরম্যাট করে কিন্তু উভয়ই পেইড ডেস্কটপ অ্যাপ্লিকেশন যার seat-প্রতি শত শত ডলার খরচ হয়। এই অনলাইন formatter-এর কোনো ইনস্টলেশন, কোনো লাইসেন্স লাগে না এবং যেকোনো ডিভাইসের যেকোনো ব্রাউজারে কাজ করে — আপনার XML পেস্ট করুন, Beautify-তে ক্লিক করুন, হয়ে গেল।

VS Code-এ আমি কীভাবে একটি XML ডকুমেন্ট ফরম্যাট করব?

VS Code-এ, আপনার .xml ফাইল খুলুন এবং বিল্ট-ইন Format Document কমান্ড চালাতে Windows/Linux-এ Shift+Alt+F (বা Mac-এ Shift+Option+F) চাপুন। আপনি ডান-ক্লিক করে Format Document বেছেও নিতে পারেন। একটি এডিটর না খুলে দ্রুত এককালীন ফরম্যাটিংয়ের জন্য — বিশেষত একটি ব্রাউজার, টার্মিনাল বা API রেসপন্স থেকে কপি করা XML-এর জন্য — এটি এখানে পেস্ট করে Beautify-তে ক্লিক করুন।

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

না। XML beautify বা minify করা কেবল ট্যাগগুলোর মধ্যকার whitespace পরিবর্তন করে — এটি কখনও এলিমেন্টের নাম, অ্যাট্রিবিউটের মান বা টেক্সট কন্টেন্ট পরিবর্তন করে না। ফরম্যাটিংয়ের আগে ও পরে ডেটা অভিন্ন থাকে। আপনি ফরম্যাট করে, তারপর ফলাফলটি minify করে এবং মূল minify করা রূপের সাথে তুলনা করে এটি যাচাই করতে পারেন।

অনলাইনে XML ফরম্যাট করা কি নিরাপদ?

হ্যাঁ। এই টুলটি সম্পূর্ণভাবে আপনার ব্রাউজারে চলে — আপনার XML কখনও কোনো সার্ভারে পাঠানো, লগ করা বা কারও সাথে শেয়ার করা হয় না। ফরম্যাটিং, মিনিফিকেশন, ভ্যালিডেশন এবং ট্রি ভিউ সবই JavaScript দিয়ে লোকালি ঘটে। অভ্যন্তরীণ API রেসপন্স, কনফিগ ফাইল বা মালিকানাধীন ডকুমেন্টের মতো গোপনীয় ডেটা পেস্ট করা নিরাপদ। Code Beautify ও FreeFormatter.com-এর মতো অন্যান্য অনলাইন XML formatter আপনার ডেটা তাদের সার্ভারে পাঠায় — এই টুল কখনও তা করে না।

XML ও JSON-এর মধ্যে পার্থক্য কী?

XML ও JSON উভয়ই কাঠামোবদ্ধ ডেটা বিনিময়ের জন্য টেক্সট ফরম্যাট। XML ঐচ্ছিক অ্যাট্রিবিউটসহ nested angle-bracket ট্যাগ ব্যবহার করে (<person age="30">Alice</person>), কমেন্ট ও namespace সমর্থন করে, এবং একটি সমৃদ্ধ স্কিমা ইকোসিস্টেম আছে (XSD, XSLT, XPath)। JSON key-value জোড়া ও array ব্যবহার করে, আরও কমপ্যাক্ট, এবং REST API ও JavaScript-এর জন্য ডিফল্ট। XML এন্টারপ্রাইজ সিস্টেম, SOAP সার্ভিস, কনফিগারেশন ফাইল (Maven, Android, Spring) এবং ডকুমেন্ট ফরম্যাটে (SVG, EPUB, OpenDocument) এখনও প্রভাবশালী।

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

হ্যাঁ। পেজটি একবার লোড হয়ে গেলে, সমস্ত প্রসেসিং আপনার ব্রাউজারে চলে, আর কোনো নেটওয়ার্ক অনুরোধ ছাড়াই — তাই আপনি অফলাইনে গেলেও formatter কাজ করতে থাকে। সীমিত ইন্টারনেট অ্যাক্সেসযুক্ত একটি মেশিনে অভ্যন্তরীণ XML ফাইল ফরম্যাট করার প্রয়োজনে এটি কাজে আসে।

xmllint ও অন্যান্য কমান্ড-লাইন টুলের সাথে এটি কীভাবে তুলনীয়?

xmllint (libxml2-এর অংশ) হলো স্ট্যান্ডার্ড Unix কমান্ড-লাইন XML ভ্যালিডেটর ও formatter — pretty-print করতে xmllint --format file.xml চালান। এর জন্য libxml2 ইনস্টল করা দরকার, যা Linux/Mac-এ সহজ কিন্তু Windows-এ কম সহজ। Python-এর বিল্ট-ইন xml.dom.minidom মডিউলও কমান্ড লাইন থেকে XML pretty-print করতে পারে। এই অনলাইন formatter কিছু ইনস্টল না করেই যেকোনো ব্রাউজারে আপনাকে তাৎক্ষণিক একই আউটপুট দেয় — এবং একটি কোলাপসিবল ট্রি ভিউ যোগ করে যা কমান্ড-লাইন টুল দেয় না।