ToolDeck

XML ফরম্যাটার

সিনট্যাক্স হাইলাইটিং সহ XML ফরম্যাট ও প্রিটি-প্রিন্ট করুন

একটি উদাহরণ চেষ্টা করুন

XML ইনপুট

ফরম্যাট করা XML

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ
ফরম্যাট করা XML এখানে দেখাবে…

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

XML ফরম্যাটিং (যাকে XML প্রিটি-প্রিন্টিং বা XML বিউটিফিকেশনও বলা হয়) হলো একটি XML ডকুমেন্টে সামঞ্জস্যপূর্ণ ইন্ডেন্টেশন ও লাইন ব্রেক যোগ করার প্রক্রিয়া, যাতে এর শ্রেণিবদ্ধ কাঠামো দৃশ্যমান হয়। API, কনফিগ জেনারেটর বা সিরিয়ালাইজার থেকে পাওয়া কাঁচা XML প্রায়ই ট্যাগগুলোর মধ্যে কোনো হোয়াইটস্পেস ছাড়াই একটি একক লাইনে আসে। একটি XML ফরম্যাটার ঐ ডকুমেন্টটিকে একটি ট্রিতে পার্স করে, তারপর সুসংগত স্পেসিং সহ পুনরায় সিরিয়ালাইজ করে। এই রূপান্তর ডকুমেন্টের কোনো তথ্য পরিবর্তন করে না — শুধুমাত্র উপস্থাপনা উন্নত করে।

XML 1.0 স্পেসিফিকেশন (W3C Recommendation, পঞ্চম সংস্করণ) একটি কঠোর ব্যাকরণ সংজ্ঞায়িত করে যেখানে প্রতিটি ওপেনিং ট্যাগের একটি সংগতিপূর্ণ ক্লোজিং ট্যাগ থাকতে হবে অথবা সেলফ-ক্লোজিং হতে হবে, অ্যাট্রিবিউটগুলো কোটেড হতে হবে, এবং পাঁচটি বর্ণ (<, >, &, ", ') এন্টিটি এস্কেপিং প্রয়োজন। একটি ফরম্যাটারকে এই নিয়মগুলো মেনে চলতে হবে এবং একই সাথে শুধুমাত্র অ-গুরুত্বপূর্ণ হোয়াইটস্পেস যোগ করতে হবে যা ডকুমেন্টের তথ্য সেট (ইনফোসেট) পরিবর্তন করে না।

ফরম্যাট করা XML কোড রিভিউতে পড়া সহজ, ভার্সন কন্ট্রোলে ডিফ করা সহজ, এবং কোনো সার্ভিস অপ্রত্যাশিত ডেটা ফেরত দিলে ডিবাগ করা সহজ। ফরম্যাটিং অপারেশনটি নিজেই ক্ষতিহীন: ডকুমেন্টের যৌক্তিক বিষয়বস্তু অপরিবর্তিত থাকে, শুধুমাত্র উপস্থাপনা পরিবর্তন হয়। git diff এবং পুল-রিকোয়েস্ট রিভিউ প্ল্যাটফর্মের মতো টুলগুলো শুধুমাত্র পরিবর্তিত লাইনগুলো দেখায় — সামঞ্জস্যপূর্ণভাবে ইন্ডেন্ট করা XML নিশ্চিত করে যে ঐ ডিফগুলো প্রকৃত পরিবর্তন প্রতিফলিত করে, রিফরম্যাটিং নয়।

Before · xml
After · xml
<catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date></book></catalog>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
  </book>
</catalog>

অনলাইন XML ফরম্যাটার কেন ব্যবহার করবেন?

হাতে XML ফরম্যাট করা ত্রুটি-প্রবণ এবং ধীর, বিশেষত গভীর নেস্টিং বা মিশ্র নেমস্পেস সহ ডকুমেন্টের জন্য। একটি ব্রাউজার-ভিত্তিক ফরম্যাটার ফাইলের আকার নির্বিশেষে এক সেকেন্ডেরও কম সময়ে ফরম্যাট করে দেয়।

তাৎক্ষণিক প্রিটি-প্রিন্ট
XML পেস্ট বা টাইপ করুন এবং সাথে সাথে ইন্ডেন্ট করা আউটপুট পান। কোনো CLI টুল ইনস্টল করা বা বিল্ড স্টেপ চালানোর জন্য অপেক্ষা করতে হবে না।
🔒
গোপনীয়তা-কেন্দ্রিক প্রক্রিয়াকরণ
DOMParser API ব্যবহার করে আপনার ব্রাউজারেই সমস্ত পার্সিং ও ফরম্যাটিং হয়। আপনার XML কখনো আপনার মেশিন ছেড়ে যায় না এবং কোনো সার্ভারে পাঠানো হয় না।
🎨
কনফিগারযোগ্য ইন্ডেন্টেশন
কনফিগ ফাইল সম্পাদনা না করেই আপনার প্রকল্পের কোডিং মানদণ্ডের সাথে মেলাতে ২-স্পেস, ৪-স্পেস বা ট্যাব ইন্ডেন্টেশনের মধ্যে বেছে নিন।
📋
কোনো অ্যাকাউন্ট বা ইনস্টল প্রয়োজন নেই
পৃষ্ঠাটি খুলুন, আপনার XML পেস্ট করুন, এবং ফলাফল কপি করুন। কোনো সাইন-আপ ফর্ম নেই, কোনো ডেস্কটপ সফটওয়্যার নেই, কোনো ব্রাউজার এক্সটেনশন নেই।

XML ফরম্যাটারের ব্যবহারের ক্ষেত্র

ফ্রন্টেন্ড ডেভেলপমেন্ট
CMS থেকে ফেরত আসা SVG মার্কআপ বা XHTML ফ্র্যাগমেন্ট পরীক্ষা করুন। কাঁচা আউটপুট ফরম্যাট করলে নির্দিষ্ট অ্যাট্রিবিউট ও নেস্টেড গ্রুপগুলো দ্রুত খুঁজে পাওয়া যায়।
ব্যাকেন্ড ইঞ্জিনিয়ারিং
তৃতীয়-পক্ষের সার্ভিস থেকে আসা SOAP রেসপন্স, RSS ফিড বা XML-RPC পেলোড ডিবাগ করুন। প্রিটি-প্রিন্ট করা আউটপুট দিয়ে অনুপস্থিত এলিমেন্ট বা ভুল নেমস্পেস খুঁজে বের করুন।
ডেভঅপস ও CI/CD
কোনো ইন্ডেন্টেশন ছাড়াই মেশিন-জেনারেটেড Maven pom.xml ফাইল, Ant বিল্ড স্ক্রিপ্ট, বা .csproj প্রজেক্ট ফাইল পড়ুন। কমিট করার আগে ডিফ পরিষ্কার রাখতে এগুলো ফরম্যাট করুন।
QA ও পরীক্ষা
ইন্টিগ্রেশন টেস্টে প্রত্যাশিত বনাম প্রকৃত XML পেলোড তুলনা করুন। উভয় দিক একই ইন্ডেন্টেশন স্টাইলে ফরম্যাট করলে হোয়াইটস্পেস পার্থক্যের কারণে ফলস নেগেটিভ দূর হয়।
ডেটা ইঞ্জিনিয়ারিং
ডেটাবেস, ETL পাইপলাইন বা সরকারি ওপেন-ডেটা পোর্টাল থেকে XML এক্সপোর্ট পরীক্ষা করুন। ফরম্যাট করা XML XSLT ট্রান্সফর্ম বা XPath কোয়েরি লেখার আগে রেকর্ডের কাঠামো প্রকাশ করে।
XML শেখা
W3C XML টিউটোরিয়াল অনুসরণ করা শিক্ষার্থীরা তাদের নেস্টিং ও অ্যাট্রিবিউট সিনট্যাক্স সঠিক কিনা যাচাই করতে ব্যায়াম ফাইলগুলো ফরম্যাটারে পেস্ট করতে পারেন।

XML পূর্বনির্ধারিত এন্টিটি রেফারেন্স

XML তার সিনট্যাক্সের জন্য পাঁচটি বর্ণ সংরক্ষিত রাখে। যখন এই বর্ণগুলো আক্ষরিক টেক্সট কন্টেন্ট বা অ্যাট্রিবিউট মানে দেখা যায়, তখন সেগুলোকে পূর্বনির্ধারিত এন্টিটি রেফারেন্স দিয়ে প্রতিস্থাপন করতে হবে। একটি সঠিক ফরম্যাটার প্রিটি-প্রিন্টিংয়ের সময় এই এন্টিটিগুলো সংরক্ষণ করে।

বর্ণXML-এ ভূমিকাএন্টিটি
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

XML ইন্ডেন্টেশন স্টাইলের তুলনা

XML ইন্ডেন্টেশনের জন্য একটি একক মানদণ্ড নেই। পছন্দটি আপনার টিমের নিয়মাবলি ও পাইপলাইনের টুলগুলোর উপর নির্ভর করে। এখানে তিনটি সর্বাধিক সাধারণ স্টাইল রয়েছে।

২ স্পেস (প্রস্তাবিত)
ওয়েব-সম্পর্কিত XML-এর জন্য সবচেয়ে সাধারণ পছন্দ: SVG, XHTML, SOAP, Spring কনফিগ। গভীরভাবে নেস্টেড ডকুমেন্টগুলো সংক্ষিপ্ত রাখে। বেশিরভাগ অনলাইন ফরম্যাটার ও IDE-তে ডিফল্ট হিসেবে ব্যবহৃত হয়।
৪ স্পেস
Java ইকোসিস্টেমে (Maven, Ant, Android ম্যানিফেস্ট) পছন্দনীয় যেখানে ফাইলগুলো খুব কমই ৩-৪ স্তরের নেস্টিং অতিক্রম করে। Java ও C# কোডের ডিফল্ট ইন্ডেন্টেশনের সাথে মিলে।
ট্যাব বর্ণ
প্রতিটি ডেভেলপারকে তাদের সম্পাদকে নিজস্ব ভিজ্যুয়াল প্রস্থ নির্ধারণ করতে দেয়। লিগেসি প্রকল্পগুলোতে এবং কিছু Microsoft টুলিং-এ (.csproj, .nuspec) সাধারণ। স্পেসের তুলনায় ছোট ফাইল আকার তৈরি করে।

কোড উদাহরণ: প্রোগ্রামেটিক্যালি XML ফরম্যাট করুন

যখন আপনাকে কোনো স্ক্রিপ্ট বা বিল্ড প্রক্রিয়ার ভিতরে XML ফরম্যাট করতে হবে, প্রতিটি প্রধান প্রোগ্রামিং ভাষায় একটি অন্তর্নির্মিত বা স্ট্যান্ডার্ড-লাইব্রেরি বিকল্প রয়েছে। নিচে কার্যকরী উদাহরণ রয়েছে যা আপনি সরাসরি কপি করতে পারেন।

JavaScript (DOM API)
const raw = '<root><item>hello</item></root>'
const parser = new DOMParser()
const doc = parser.parseFromString(raw, 'application/xml')
const serializer = new XMLSerializer()
const xml = serializer.serializeToString(doc)

// Indent with XSLT (browser-native approach)
const xslt = new DOMParser().parseFromString(`
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="node()|@*">
      <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
    </xsl:template>
  </xsl:stylesheet>`, 'application/xml')

const proc = new XSLTProcessor()
proc.importStylesheet(xslt)
const formatted = proc.transformToDocument(doc)
console.log(new XMLSerializer().serializeToString(formatted))
// → <root>\n  <item>hello</item>\n</root>
Python
import xml.dom.minidom

raw = '<root><item>hello</item><item>world</item></root>'
dom = xml.dom.minidom.parseString(raw)
print(dom.toprettyxml(indent='  '))
# → <?xml version="1.0" ?>
# → <root>
# →   <item>hello</item>
# →   <item>world</item>
# → </root>

# With lxml (handles namespaces, XSD, large files)
from lxml import etree
tree = etree.fromstring(raw.encode())
print(etree.tostring(tree, pretty_print=True).decode())
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func formatXML(raw string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    var out strings.Builder
    encoder := xml.NewEncoder(&out)
    encoder.Indent("", "  ")
    for {
        tok, err := decoder.Token()
        if err != nil {
            break
        }
        encoder.EncodeToken(tok)
    }
    encoder.Flush()
    return out.String(), nil
}
// formatXML("<a><b>1</b></a>") → "<a>\n  <b>1</b>\n</a>"
CLI (xmllint)
# Format XML file with xmllint (part of libxml2, pre-installed on macOS/Linux)
xmllint --format input.xml > formatted.xml

# Format from stdin
echo '<a><b>1</b></a>' | xmllint --format -
# → <?xml version="1.0"?>
# → <a>
# →   <b>1</b>
# → </a>

# Validate and format at the same time
xmllint --format --schema schema.xsd input.xml

প্রায়শই জিজ্ঞাসিত প্রশ্ন

XML ফরম্যাট করলে কি ডকুমেন্টের অর্থ পরিবর্তন হয়?
না। XML ফরম্যাটিং শুধুমাত্র ট্যাগগুলোর মধ্যে অ-গুরুত্বপূর্ণ হোয়াইটস্পেস যোগ বা অপসারণ করে। XML ইনফরমেশন সেট (ইনফোসেট) অপরিবর্তিত থাকে। একটি ব্যতিক্রম: যদি আপনার স্কিমা নির্দিষ্ট এলিমেন্টে xml:space="preserve" ব্যবহার করে, তবে একটি ফরম্যাটারের ঐ এলিমেন্টগুলো অস্পর্শ রাখা উচিত, এবং এই টুলটি তা মেনে চলে।
XML ফরম্যাটিং ও XML ভ্যালিডেশনের মধ্যে পার্থক্য কী?
ফরম্যাটিং XML পড়ার উপযোগী করতে ইন্ডেন্টেশন ও লাইন ব্রেক যোগ করে। ভ্যালিডেশন পরীক্ষা করে ডকুমেন্টটি কোনো স্কিমার (XSD, DTD বা RelaxNG) সাথে সামঞ্জস্যপূর্ণ কিনা। একটি ডকুমেন্ট ওয়েল-ফর্মড হতে পারে কিন্তু তার স্কিমার বিপরীতে অকার্যকর। পঠনযোগ্যতার জন্য এই ফরম্যাটার এবং স্কিমা সম্মতির জন্য XML Validator টুল ব্যবহার করুন।
আমি কি নেমস্পেস সহ XML ফরম্যাট করতে পারি?
হ্যাঁ। ব্রাউজারের DOMParser স্বাভাবিকভাবে XML নেমস্পেস পরিচালনা করে। নেমস্পেস প্রিফিক্স, ডিফল্ট নেমস্পেস ডিক্লারেশন (xmlns), এবং কোয়ালিফাইড অ্যাট্রিবিউট নাম সবই ফরম্যাটিংয়ের সময় সংরক্ষিত হয়। ফরম্যাটার কোনো নেমস্পেস বাইন্ডিং যোগ, অপসারণ বা পুনঃনামকরণ করে না।
আমি ব্রাউজারে কত বড় XML ফাইল ফরম্যাট করতে পারি?
ব্রাউজার-ভিত্তিক ফরম্যাটিং প্রায় ১০ MB পর্যন্ত ডকুমেন্টের জন্য ভালোভাবে কাজ করে। তার বাইরে, DOM ট্রি উল্লেখযোগ্য মেমোরি ব্যবহার করে এবং UI অসাড় হয়ে যেতে পারে। খুব বড় ফাইলের জন্য xmllint --format-এর মতো CLI টুল ব্যবহার করুন, যা XML স্ট্রিম হিসেবে প্রক্রিয়া করে।
কেন আমার ফরম্যাট করা XML-এ একটি XML ডিক্লারেশন যোগ হয়েছে?
কিছু ফরম্যাটার DOM ট্রি সিরিয়ালাইজ করার সময় <?xml version="1.0"?> প্রিপেন্ড করে। এনকোডিং UTF-8 হলে XML 1.0-তে এই ডিক্লারেশন ঐচ্ছিক। যদি আপনি এটি না চান, আউটপুট থেকে প্রথম লাইনটি মুছুন। এই ডিক্লারেশন কোনো সামঞ্জস্যপূর্ণ XML প্রসেসরের পার্সিংকে প্রভাবিত করে না।
XML ফরম্যাটিং ও XML মিনিফিকেশন কি একই?
এগুলো বিপরীত অপারেশন। ফরম্যাটিং পঠনযোগ্যতা উন্নত করতে হোয়াইটস্পেস যোগ করে। মিনিফিকেশন ফাইলের আকার কমাতে সমস্ত অ-প্রয়োজনীয় হোয়াইটস্পেস অপসারণ করে। উভয় অপারেশনই XML ইনফোসেটের সাপেক্ষে ক্ষতিহীন। যদি আপনাকে XML মিনিফাই করতে হয়, XML Minifier টুল ব্যবহার করুন।
XML ও HTML ফরম্যাটিংয়ের মধ্যে পার্থক্য কী?
XML কঠোর: প্রতিটি ট্যাগ বন্ধ হতে হবে, অ্যাট্রিবিউট মান কোটেড হতে হবে, এবং ডকুমেন্টে ঠিক একটি রুট এলিমেন্ট থাকতে হবে। HTML (বিশেষভাবে HTML5) নমনীয়: ঐচ্ছিক ক্লোজিং ট্যাগ, কোটবিহীন অ্যাট্রিবিউট, এবং &lt;br&gt;-এর মতো ভয়েড এলিমেন্ট সবই বৈধ। একটি XML ফরম্যাটার অকার্যকর XML প্রত্যাখ্যান করবে, যেখানে একটি HTML ফরম্যাটার এমন সিনট্যাক্স সহ্য করে যা XML অনুমোদন করবে না।