XML পার্সার
XML ডকুমেন্ট তাৎক্ষণিকভাবে ফরম্যাট, ভ্যালিডেট ও কোয়েরি করুন। সর্বোচ্চ গতি ও প্রাইভেসির জন্য নেটিভ ব্রাউজার API দিয়ে চলে।
XML ওয়েল-ফর্মড নয়
ফলাফল
নোড ট্রি
XML পার্সার ব্যবহারের পদ্ধতি
আপনার XML পেস্ট করুন
আপনার XML কন্টেন্ট কপি করে ইনপুট ফিল্ডে পেস্ট করুন, অথবা নমুনা XML লোড করুন-এ ক্লিক করুন।
ফরম্যাট ও ভ্যালিডেট
সুন্দর করতে ফরম্যাট, সংকুচিত করতে মিনিফাই, এরর পরীক্ষা করতে ভ্যালিডেট ব্যবহার করুন।
XPath দিয়ে কোয়েরি
একটি XPath এক্সপ্রেশন লিখুন এবং নির্দিষ্ট নোড বের করতে XPath চালান-এ ক্লিক করুন।
XML কী?
XML (eXtensible Markup Language) একটি মার্কআপ ভাষা যা ডকুমেন্টকে এমন ফরম্যাটে এনকোড করার নিয়মের সেট নির্ধারণ করে যা মানুষ ও মেশিন দুজনেই পড়তে পারে। কনফিগারেশন ফাইল, ডেটা এক্সচেঞ্জ (SOAP, RSS, Atom) এবং ডকুমেন্ট সংরক্ষণে ব্যাপকভাবে ব্যবহৃত হয়।
XML-এর মূল বৈশিষ্ট্য
স্ব-বর্ণনামূলক
XML ডেটা কাঠামো বর্ণনার জন্য কাস্টম ট্যাগ ব্যবহার করে, ফলে এক নজরেই কন্টেন্ট ও শ্রেণিবিন্যাস বোঝা যায়।
প্ল্যাটফর্ম-নিরপেক্ষ
সাধারণ টেক্সট হিসেবে XML সামঞ্জস্যের সমস্যা ছাড়াই সব প্ল্যাটফর্ম, প্রোগ্রামিং ভাষা ও সিস্টেমে কাজ করে।
এক্সটেনসিবল
DTD বা XML Schema ব্যবহার করে যেকোনো ডেটা মডেলের উপযোগী নিজের ট্যাগ ও ডকুমেন্ট কাঠামো সংজ্ঞায়িত করতে পারেন।
সাধারণ জিজ্ঞাসা
ওয়েল-ফর্মড XML XML-এর মৌলিক সিনট্যাক্স নিয়ম মেনে চলে (সঠিক নেস্টিং, ক্লোজিং ট্যাগ, একক রুট এলিমেন্ট)। ভ্যালিড XML ওয়েল-ফর্মডও বটে এবং এমন স্কিমার (DTD, XSD) সাথে সঙ্গতিপূর্ণ যা অনুমোদিত কাঠামো ও ডেটা টাইপ নির্ধারণ করে।
না, এই টুল শুধু ওয়েল-ফর্মডনেস (সিনট্যাক্স সঠিকতা) পরীক্ষা করে। DTD বা XSD-র বিপরীতে স্কিমা-ভিত্তিক ভ্যালিডেশন ব্রাউজারে নেটিভভাবে সমর্থিত নয়।
ব্রাউজারের নেটিভ document.evaluate() XPath 1.0 সমর্থন করে। এতে axes, predicates এবং contains(), text(), @attribute-এর মতো ফাংশনসহ সাধারণ কোয়েরির বেশিরভাগই আসে।
নেমস্পেস xmlns অ্যাট্রিবিউটের মাধ্যমে এলিমেন্টের নামকে একটি URI-তে ম্যাপ করে - যেমন একটি atom:feed এলিমেন্ট xmlns:atom="http://www.w3.org/2005/Atom" ঘোষণা করা। প্রিফিক্স ইচ্ছামতো; শুধু URI-ই নেমস্পেস শনাক্ত করে, তাই দুটি ডকুমেন্ট একই শব্দভান্ডারের জন্য ভিন্ন প্রিফিক্স ব্যবহার করতে পারে। প্রিফিক্স আলাদা হলে XPath ম্যাচিংয়ে প্রায়ই local-name() ট্রিক লাগে এজন্যই।
XPath 1.0 এক্সপ্রেশন ট্রি ধরে হাঁটে: /rss/channel/item পথ ধরে নির্বাচন করে, //item ডকুমেন্টের যেকোনো জায়গায় item খোঁজে, item[@type='news'] একটি অ্যাট্রিবিউটে ফিল্টার করে, আর item[1] বা item[last()]-এর মতো predicate নির্দিষ্ট নোড বেছে নেয়। এটিই XSLT, অনেক টেস্ট ফ্রেমওয়ার্ক এবং এই টুলের ইভালুয়েটরের পেছনের কোয়েরি ভাষা।
XXE (XML External Entity) ইনজেকশন একটি DTD entity-কে ফাইল পাথ বা URL-এ নির্দেশ করে অপব্যবহার করে, সার্ভার-সাইড পার্সারকে তা ফেচ করায় - ঐতিহাসিকভাবে /etc/passwd বা অভ্যন্তরীণ সার্ভিস লিক হয়েছে। ব্রাউজারের XML পার্সার বাহ্যিক entity রিজলভ করে না, এবং এই টুল সার্ভার রাউন্ড-ট্রিপ ছাড়া সম্পূর্ণ আপনার ব্রাউজারে চলে, তাই পেস্ট করা XML ফাইল পড়া বা SSRF ট্রিগার করতে পারে না।
DOM পুরো ডকুমেন্ট একটি ট্রিতে লোড করে যা আপনি এলোমেলোভাবে নেভিগেট করতে পারেন - স্বজ্ঞাত কিন্তু বিশাল ফাইলের জন্য মেমরি-ক্ষুধার। SAX এক পাসে ইভেন্ট স্ট্রিম করে (স্টার্ট ট্যাগ, টেক্সট, এন্ড ট্যাগ) ধ্রুবক মেমরিতে - দ্রুত কিন্তু শুধু ফরোয়ার্ড। ব্রাউজার JavaScript DOMParser (DOM-স্টাইল) দেয়; JavaScript-এ স্ট্রিমিং XML-এর জন্য লাইব্রেরি বা Web Streams লাগে।
সাধারণ টেক্সটে সেগুলো < এবং & হিসেবে এস্কেপ করুন - ক্যারেক্টার ডেটায় কাঁচা < এবং & অবৈধ। মার্কআপ-ঘন টেক্সটের ব্লকের জন্য CDATA সেকশনে মুড়ে দিন, যার শেষে ]]> সিকোয়েন্স না আসা পর্যন্ত কোনো এস্কেপিং লাগে না। কন্টেন্টে শুধু < এবং & কঠোরভাবে আবশ্যক; > শুধু তখনই এস্কেপ করতে হয় যখন তা সেই ক্লোজিং সিকোয়েন্স গঠন করে।
সম্পর্কিত সরঞ্জাম
প্রামাণ্য রেফারেন্স
এই সরঞ্জামের পেছনের মূল উৎস — দ্বিতীয় হাতের সারাংশ নয়, বরং অফিসিয়াল স্ট্যান্ডার্ড ও স্পেসিফিকেশন।
W3C - Extensible Markup Language (XML) 1.0
ফরম্যাটের ভিত্তি Extensible Markup Language 1.0 সংজ্ঞায়িত করা W3C Recommendation।
XML - Wikipedia
XML ট্রি মডেল, নেমস্পেস, আর ফরম্যাটটি কেন validity ও well-formedness-এ জোর দেয়।
MDN Web Docs - XML
ব্রাউজারে XML প্রসেসিংয়ের Mozilla গাইড, DOMParser ব্যবহারসহ।