ToolDeck

XML ভ্যালিডেটর

XML সিনট্যাক্স যাচাই করুন এবং ওয়েল-ফর্মডনেস ত্রুটি পরীক্ষা করুন

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

XML ইনপুট

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ

XML ভ্যালিডেশন কী?

একটি XML ভ্যালিডেটর পরীক্ষা করে যে একটি XML ডকুমেন্ট XML 1.0 স্পেসিফিকেশনে (W3C Recommendation, পঞ্চম সংস্করণ) সংজ্ঞায়িত কাঠামোগত নিয়মগুলো মেনে চলে কিনা। ন্যূনতমভাবে, এই XML ভ্যালিডেটর নিশ্চিত করে যে একটি ডকুমেন্ট ওয়েল-ফর্মড: এতে একটি একক রুট এলিমেন্ট রয়েছে, সমস্ত ট্যাগ সঠিকভাবে নেস্টেড ও বন্ধ করা হয়েছে, অ্যাট্রিবিউট মান কোটেড, এবং সংরক্ষিত বর্ণগুলো পূর্বনির্ধারিত এন্টিটি ব্যবহার করে। এই পরীক্ষাগুলোর যেকোনো একটি ব্যর্থ হলে XML পার্সার নিঃশব্দে ভুল আউটপুট দেওয়ার পরিবর্তে এরর থ্রো করে।

ওয়েল-ফর্মডনেস ও বৈধতার মধ্যে পার্থক্য গুরুত্বপূর্ণ। একটি ওয়েল-ফর্মড XML ডকুমেন্ট XML স্পেসিফিকেশনের সিনট্যাক্স নিয়মগুলো পূরণ করে। একটি বৈধ XML ডকুমেন্ট আরও এগিয়ে যায়: এটি একটি বাহ্যিক স্কিমায় সংজ্ঞায়িত সীমাবদ্ধতাগুলোও মেনে চলে, যেমন DTD (Document Type Definition), XSD (XML Schema Definition), বা Relax NG স্কিমা। এই টুলটি ওয়েল-ফর্মডনেস পরীক্ষা করে — প্রথম ও সবচেয়ে সাধারণ ভ্যালিডেশন ধাপ। এটি ছাড়া পরবর্তী কোনো ধাপ সম্পন্ন করা সম্ভব নয়।

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

অনলাইন XML ভ্যালিডেটর কেন ব্যবহার করবেন?

XML সিনট্যাক্স ত্রুটি আগেই ধরলে XML ডেটা ব্যবহার করা অ্যাপ্লিকেশনে ধারাবাহিক ব্যর্থতা প্রতিরোধ হয়। একটি ব্রাউজার-ভিত্তিক ভ্যালিডেটর কমান্ড-লাইন টুল ইনস্টল বা IDE প্লাগইন কনফিগার না করেই তাৎক্ষণিক প্রতিক্রিয়া দেয়।

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

XML ভ্যালিডেটরের ব্যবহারের ক্ষেত্র

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

XML ওয়েল-ফর্মডনেসের নিয়মাবলি

XML 1.0 স্পেসিফিকেশন সিনট্যাক্সের একটি কঠোর নিয়মসমষ্টি সংজ্ঞায়িত করে। ওয়েল-ফর্মড বলে বিবেচিত হতে একটি ডকুমেন্টকে সবগুলো নিয়ম পূরণ করতে হবে। নিচের সারণিতে প্রতিটি নিয়ম, এটি কী প্রয়োজন করে এবং একটি সঠিক উদাহরণ দেওয়া হয়েছে। অধিকাংশ ভ্যালিডেশন ত্রুটি এই নিয়মগুলোর একটির সাথে সম্পর্কিত।

নিয়মপ্রয়োজনীয়তাসঠিক উদাহরণ
Single root elementDocument must have exactly one root<root>...</root>
Matched tagsEvery opening tag needs a closing tag<p>text</p>
Proper nestingTags must close in reverse order of opening<a><b>...</b></a>
Quoted attributesAttribute values must be in single or double quotes<el attr="val"/>
Entity escapingReserved characters must use predefined entities&lt; &gt; &amp; &quot; &apos;
Case sensitivityTag names are case-sensitive: <A> is not </a><Book>...</Book>
No duplicate attributesEach attribute name must appear once per element<el a="1" b="2"/>
Valid XML declarationIf present, must be the very first line<?xml version="1.0"?>

ওয়েল-ফর্মড বনাম DTD-বৈধ বনাম স্কিমা-বৈধ

XML ভ্যালিডেশনের তিনটি স্তর রয়েছে। এই টুলটি প্রথম স্তর (ওয়েল-ফর্মডনেস) পরীক্ষা করে, যা বাকি দুটির পূর্বশর্ত।

ওয়েল-ফর্মড
XML 1.0 সিনট্যাক্স নিয়মগুলো পূরণ করে: একক রুট, মিলযুক্ত ট্যাগ, কোটেড অ্যাট্রিবিউট, সঠিক নেস্টিং। প্রতিটি XML পার্সার প্রথমে এটি পরীক্ষা করে। একটি ডকুমেন্ট ওয়েল-ফর্মড না হলে এটি মোটেও XML নয়।
DTD-বৈধ
একটি Document Type Definition-এর সাথে সামঞ্জস্যপূর্ণ, যা কোন এলিমেন্ট ও অ্যাট্রিবিউট অনুমোদিত, তাদের ক্রম ও সংখ্যা নির্দিষ্ট করে। DTD ইনলাইন বা DOCTYPE রেফারেন্সের মাধ্যমে ঘোষণা করা হয়। DTD ভ্যালিডেশন লেগেসি সিস্টেম ও XHTML-এ সাধারণ।
স্কিমা-বৈধ (XSD / Relax NG)
একটি XML Schema Definition (XSD) বা Relax NG স্কিমার সাথে সামঞ্জস্যপূর্ণ। এই স্কিমাগুলো ডেটা টাইপ (integer, date, URI), নেমস্পেস এবং জটিল কন্টেন্ট মডেল সমর্থন করে। XSD ভ্যালিডেশন SOAP ওয়েব সার্ভিস, HL7 স্বাস্থ্যসেবা ডেটা ও এন্টারপ্রাইজ ইন্টিগ্রেশনে আদর্শ।

কোড উদাহরণ

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

JavaScript (DOMParser)
function validateXML(xmlString) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xmlString, 'application/xml')
  const error = doc.querySelector('parsererror')
  if (error) {
    return { valid: false, message: error.textContent }
  }
  return { valid: true, message: 'Well-formed XML' }
}

validateXML('<root><item>hello</item></root>')
// → { valid: true, message: "Well-formed XML" }

validateXML('<root><item>hello</root>')
// → { valid: false, message: "Opening and ending tag mismatch..." }
Python
import xml.etree.ElementTree as ET

def validate_xml(xml_string):
    try:
        ET.fromstring(xml_string)
        return True, "Well-formed XML"
    except ET.ParseError as e:
        return False, str(e)

valid, msg = validate_xml('<root><item>hello</item></root>')
# → (True, "Well-formed XML")

valid, msg = validate_xml('<root><item>hello</root>')
# → (False, "mismatched tag: line 1, column 27")

# With lxml — also supports XSD schema validation
from lxml import etree
schema = etree.XMLSchema(etree.parse('schema.xsd'))
doc = etree.fromstring(b'<root><item>hello</item></root>')
schema.validate(doc)  # → True or False
Go
package main

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

func validateXML(raw string) error {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    for {
        _, err := decoder.Token()
        if err != nil {
            if err.Error() == "EOF" {
                return nil
            }
            return err
        }
    }
}

func main() {
    err := validateXML("<root><item>hello</item></root>")
    fmt.Println(err) // → <nil>

    err = validateXML("<root><item>hello</root>")
    fmt.Println(err) // → XML syntax error: unexpected end element </root>
}
CLI (xmllint)
# Check well-formedness (part of libxml2, pre-installed on macOS/Linux)
xmllint --noout document.xml
# Exit code 0 = valid, non-zero = errors printed to stderr

# Validate against an XSD schema
xmllint --noout --schema schema.xsd document.xml

# Validate against a DTD
xmllint --noout --dtdvalid schema.dtd document.xml

# Validate from stdin
echo '<root><unclosed>' | xmllint --noout -
# → :1: parser error : Premature end of data in tag unclosed line 1

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

ওয়েল-ফর্মড ও বৈধ XML-এর মধ্যে পার্থক্য কী?
ওয়েল-ফর্মড XML হলো এমন XML যা XML 1.0 স্পেসিফিকেশনের সিনট্যাক্স নিয়মগুলো অনুসরণ করে: একটি রুট এলিমেন্ট, মিলযুক্ত ও সঠিকভাবে নেস্টেড ট্যাগ, কোটেড অ্যাট্রিবিউট। বৈধ XML আরও এগিয়ে যায়: এটি একটি DTD বা XSD স্কিমার সাথেও সামঞ্জস্যপূর্ণ যা কোন এলিমেন্ট, অ্যাট্রিবিউট ও ডেটা টাইপ অনুমোদিত তা নির্ধারণ করে। একটি ডকুমেন্ট ওয়েল-ফর্মড কিন্তু অবৈধ হতে পারে যদি সঠিক সিনট্যাক্স থাকে কিন্তু স্কিমার সীমাবদ্ধতা ভাঙে।
একটি XML ডকুমেন্ট কি বৈধ হতে পারে কিন্তু ওয়েল-ফর্মড নয়?
না। ওয়েল-ফর্মডনেস বৈধতার পূর্বশর্ত। যদি একটি ডকুমেন্ট কোনো XML সিনট্যাক্স নিয়ম ভাঙে (অবন্ধ ট্যাগ, কোটবিহীন অ্যাট্রিবিউট ইত্যাদি), পার্সার এটি থেকে একটি ট্রি তৈরি করতে পারে না, তাই স্কিমা ভ্যালিডেশন শুরু করাই সম্ভব নয়। প্রথমে ওয়েল-ফর্মডনেস ত্রুটি ঠিক করুন, তারপর স্কিমার বিপরীতে পরীক্ষা করুন।
সবচেয়ে সাধারণ XML ভ্যালিডেশন ত্রুটিগুলো কী?
পাঁচটি সবচেয়ে ঘন ঘন ত্রুটি হলো: অবন্ধ বা অমিল ট্যাগ, টেক্সট কন্টেন্টে এস্কেপ-বিহীন অ্যাম্পারস্যান্ড, কোটবিহীন অ্যাট্রিবিউট মান, রুট এলিমেন্টের অনুপস্থিতি, এবং ট্যাগ নামে ভুল কেস (XML কেস সেনসিটিভ)। এগুলোর বেশিরভাগ হাতে XML সম্পাদনা বা সঠিক XML সিরিয়ালাইজার ব্যবহারের পরিবর্তে কোডে স্ট্রিং সংযোজনের ফলে হয়।
XML ভ্যালিডেশন কি XML লিন্টিংয়ের মতো?
এগুলো ওভারল্যাপ করে তবে অভিন্ন নয়। ভ্যালিডেশন পরীক্ষা করে যে একটি ডকুমেন্ট XML স্পেসিফিকেশন (ওয়েল-ফর্মডনেস) বা একটি স্কিমা (DTD/XSD) মেনে চলে কিনা। লিন্টিং সাধারণত আরও এগিয়ে স্টাইল সমস্যাও চিহ্নিত করে: অসামঞ্জস্যপূর্ণ ইন্ডেন্টেশন, অব্যবহৃত নেমস্পেস ডিক্লারেশন, বা অপ্রয়োজনীয় ডিফল্ট অ্যাট্রিবিউট মান। libxml2-এর xmllint উভয়ই করে: --noout ওয়েল-ফর্মডনেস পরীক্ষা করে, আর --schema XSD ভ্যালিডেশন যোগ করে।
XML ভ্যালিডেশন ও JSON ভ্যালিডেশনের মধ্যে পার্থক্য কী?
XML-এর ব্যাকরণ JSON-এর চেয়ে কঠোর ও জটিল। XML-এ মিলযুক্ত ওপেনিং/ক্লোজিং ট্যাগ, অ্যাট্রিবিউট, নেমস্পেস, মিশ্র কন্টেন্ট (একসাথে টেক্সট ও এলিমেন্ট) এবং একাধিক স্কিমা ভাষা (DTD, XSD, Relax NG, Schematron) রয়েছে। JSON ভ্যালিডেশন ব্রেস/ব্র্যাকেট মেলানো, কোটেড কী ও কমার অবস্থান পরীক্ষা করে। JSON Schema বিদ্যমান কিন্তু XSD-এর চেয়ে সরল। একটি XML ডকুমেন্ট সাধারণত একই ডেটার সমতুল্য JSON-এর চেয়ে ২-৩ গুণ বড়।
এই টুলটি কি XSD বা DTD স্কিমার বিপরীতে যাচাই করে?
এই টুলটি শুধুমাত্র ওয়েল-ফর্মডনেস পরীক্ষা করে: এটি নিশ্চিত করে যে আপনার XML 1.0 স্পেসিফিকেশনের সিনট্যাক্স নিয়মগুলো অনুসরণ করে। এটি বাহ্যিক DTD বা XSD স্কিমার বিপরীতে যাচাই করে না। স্কিমা ভ্যালিডেশনের জন্য কমান্ড লাইনে xmllint --schema ব্যবহার করুন, অথবা Python-এ lxml ব্যবহার করুন, যা XSD ও Relax NG উভয়ই সমর্থন করে।
আমার XML দেখতে সঠিক মনে হলেও ভ্যালিডেশন ব্যর্থ হয় কেন?
সবচেয়ে সাধারণ অদৃশ্য কারণগুলো হলো: XML ডিক্লারেশনের আগে একটি বাইট অর্ডার মার্ক (BOM), ক্লোজিং রুট ট্যাগের পরে একটি বিপথগামী বর্ণ, টেক্সট কন্টেন্টে এস্কেপ-বিহীন অ্যাম্পারস্যান্ড (এর পরিবর্তে &amp; ব্যবহার করুন), অথবা একটি নেমস্পেস প্রিফিক্স যা ব্যবহার করা হয়েছে কিন্তু কখনো ঘোষণা করা হয়নি। আপনার XML একটি হেক্স ভিউয়ারে কপি করুন অথবা ত্রুটির সঠিক বাইট অফসেট পেতে xmllint --noout দিয়ে চালান।