XML-কে 2 স্পেস, 4 স্পেস বা ট্যাব দিয়ে সুন্দরভাবে প্রিন্ট করুন, অথবা এক লাইনে মিনিফাই করুন। টাইপ করার সাথে সাথে ভালো-গঠন যাচাই করা হয় এবং উপাদান সংখ্যা ও নেস্টিং গভীরতা দেখানো হয়।
XML-এর একটি প্রাচীর পড়ার উপযোগী করুন, অথবা আবার সংকুচিত করুন। আপনার পছন্দের স্পেসিং দিয়ে পুনরায় ইন্ডেন্ট করতে XML পেস্ট করুন, অথবা এক লাইনে মিনিফাই করুন। টাইপ করার সাথে সাথে ডকুমেন্টের ভালো-গঠন যাচাই করা হয় এবং কাউন্টারগুলো বলে দেয় এতে কতগুলো উপাদান আছে এবং কত গভীরে নেস্ট হয়।
–
XML ভাঙা ছাড়াই ফরম্যাট করা
XML-এ হোয়াইটস্পেস হলো কনটেন্ট
এটিই XML ফরম্যাটিংকে JSON ফরম্যাটিং থেকে আলাদা করে। JSON-এ, টোকেনের মধ্যে হোয়াইটস্পেস অর্থহীন এবং সরানো সর্বদা নিরাপদ। XML-এ, <name> এবং Ada-এর মধ্যে থাকা ক্যারেক্টারগুলো উপাদানটির টেক্সট নোডের অংশ। একটি ডকুমেন্ট পুনরায় ইন্ডেন্ট করা প্রযুক্তিগতভাবে এর বিষয়বস্তু পরিবর্তন করে।
বাস্তবে এটি প্রায় কখনোই গুরুত্বপূর্ণ নয়, কারণ সিংহভাগ XML শুধুমাত্র-উপাদান কনটেন্ট ব্যবহার করে — উপাদান যা শুধু অন্য উপাদান ধারণ করে এবং আর কিছু নয় — যেখানে চারপাশের হোয়াইটস্পেস প্রতিটি স্কিমা দ্বারা উপেক্ষাযোগ্য। ফরম্যাটার শুধুমাত্র এমন উপাদানের ভেতরে ইন্ডেন্টেশন যোগ করে। যখন একটি উপাদান প্রকৃত টেক্সট ধারণ করে, বা HTML-এর মতো মার্কআপের মতো টেক্সট ও শিশু উপাদানের মিশ্রণ, তখন এর কনটেন্ট যেমন পাওয়া গিয়েছিল ঠিক তেমনই থাকে। এই একক নিয়ম <p>Hello <b>there</b></p>-কে there-এর চারপাশে নীরবে স্পেস যোগ করা থেকে রক্ষা করে।
ভালোভাবে গঠিত হওয়া বৈধ হওয়ার মতো নয়
এখানে সম্পাদিত চেক হলো ভালো-গঠন, যা XML স্পেসিফিকেশন প্রতিটি পার্সারের কাছ থেকে চায়: একটি রুট উপাদান, প্রতিটি ট্যাগ বন্ধ ও সঠিকভাবে নেস্ট, অ্যাট্রিবিউট মান উদ্ধৃত, এবং টেক্সটের ভেতরে & ও < এস্কেপ। এর যেকোনো একটি ব্যর্থ হলে ডকুমেন্টটি সরাসরি প্রত্যাখ্যাত হয় — XML-এ কুখ্যাতভাবে কোনো এরর রিকভারি নেই, HTML-এর মতো নয়।
বৈধতা একটি আরও ধাপ: এটি জিজ্ঞাসা করে ডকুমেন্টটি DTD, XSD বা RelaxNG স্কিমার সাথে মেলে কিনা, যাতে <invoice> সত্যিই একটি <total> ধারণ করে এবং তারিখটি সত্যিই একটি তারিখ হয়। এর জন্য স্কিমা প্রয়োজন, যা পেস্ট করা ডকুমেন্টের অংশ নয়। এখানে সবুজ ফলাফল মানে সিনট্যাক্স সঠিক এবং যেকোনো পার্সার ফাইলটি গ্রহণ করবে। এর মানে এই নয় যে গ্রহণকারী সিস্টেম কনটেন্টগুলো সঠিক মনে করবে।
মিনিফিকেশন এবং সেলফ-ক্লোজিং ট্যাগ
মিনিফাই করা উপাদানগুলোর মধ্যে উপেক্ষাযোগ্য হোয়াইটস্পেস সরিয়ে দেয় এবং পুরো ডকুমেন্ট এক লাইনে রাখে। কারণ সেই হোয়াইটস্পেস কখনো কনটেন্ট ছিল না, শুধুমাত্র-উপাদান মার্কআপ হিসেবে শুরু হওয়া আউটপুট হুবহু একই ট্রি পার্স করে।
অন্য সাশ্রয়টি খালি উপাদান থেকে আসে: <summary></summary> এবং <summary/> স্পেসিফিকেশন অনুযায়ী অভিন্ন, এবং আউটপুটে ছোট ফর্মটি ব্যবহৃত হয়। লাভটি বাস্তব কিন্তু মাঝারি — XML তার বেশিরভাগ আকার পুনরাবৃত্ত ট্যাগ নামে ব্যয় করে, কারণ প্রতিটি উপাদান তার নাম দুবার লেখে। একটি ফাইলকে সত্যিই ছোট করতে হলে gzip উত্তর; এটি সেই পুনরাবৃত্ত নামগুলো যেকোনো পরিমাণ হোয়াইটস্পেস অপসারণের চেয়ে অনেক ভালো হ্যান্ডেল করে। পড়ার জন্য একটি ফরম্যাটেড কপি রাখুন, কারণ মিনিফাইড XML মানুষের পড়ার জন্য প্রায় অযোগ্য।
সচরাচর জিজ্ঞাসা
আমার XML কি কোথাও আপলোড হয়?
না। ডকুমেন্টটি আপনার ব্রাউজারে অন্তর্নির্মিত DOMParser দিয়ে পার্স ও সিরিয়ালাইজ করা হয়, তাই সার্ভারে কিছু পাঠানো হয় না।
ফরম্যাটিং কি আমার ডকুমেন্ট পরিবর্তন করে?
শুধুমাত্র সেই উপাদানের ভেতরে যা উপাদান ছাড়া আর কিছুই ধারণ করে না, যেখানে হোয়াইটস্পেস উপেক্ষাযোগ্য। টেক্সট বা মিশ্র কনটেন্ট ধারণ করা উপাদানগুলো অপরিবর্তিত থাকে।
এটি কি কোনো স্কিমার বিপরীতে যাচাই করে?
না। এটি ভালো-গঠন যাচাই করে — বন্ধ ও সঠিকভাবে নেস্ট করা ট্যাগ, একটি রুট, এস্কেপ করা ক্যারেক্টার। DTD বা XSD-এর বিপরীতে যাচাই করতে স্কিমাটি নিজেই প্রয়োজন।
আমার ডকুমেন্ট কেন প্রত্যাখ্যাত হয়?
সাধারণত একটি বন্ধ না হওয়া বা অমিল ট্যাগ, আনস্কেপড & বা <, উদ্ধৃতবিহীন অ্যাট্রিবিউট মান, বা একাধিক রুট উপাদান। XML-এর কোনো এরর রিকভারি নেই।
উপাদান এবং গভীরতা কাউন্টার কী বোঝায়?
উপাদান হলো ডকুমেন্টে মোট উপাদান নোডের সংখ্যা। গভীরতা হলো নেস্টেড উপাদানের দীর্ঘতম চেইন, রুটকে স্তর এক ধরে।
আমার খালি ট্যাগগুলো কেন আকার বদলাল?
<a></a> এবং <a/> XML স্পেসিফিকেশন অনুযায়ী অভিন্ন হিসেবে সংজ্ঞায়িত, তাই মিনিফাইড আউটপুট বাইট বাঁচাতে ছোট সেলফ-ক্লোজিং ফর্ম ব্যবহার করে।