XML বা Extensible Markup Language হলো একটি মার্কআপ ল্যাঙ্গুয়েজ যা ডেটা সংরক্ষণ এবং বিনিময়ের জন্য ব্যবহৃত হয়। এটি একটি টেক্সট-ভিত্তিক ফাইল ফরম্যাট, যা ডেটা কাঠামো তৈরি করতে সহজতর এবং ব্যবহারকারীর নিজস্ব ট্যাগ তৈরির সুবিধা দেয়। XML মূলত বিভিন্ন প্রোগ্রাম এবং সিস্টেমের মধ্যে ডেটা বিনিময় করতে ব্যবহার করা হয় এবং এটি যেকোনো ডেটাবেস, ওয়েব সার্ভিস, এবং ডেটা ইন্টিগ্রেশনে প্রয়োজনীয়।
XML এর কিছু বৈশিষ্ট্য হলো:
- মানব-পাঠযোগ্য: XML ফাইলগুলো সাধারণত মানব-পাঠযোগ্য, যা এটি বোঝা ও সংরক্ষণ করা সহজ করে।
- গঠনশীল ও সহজলভ্য: XML ডেটাকে একটি গঠনশীল ও সহজলভ্য ফরম্যাটে সংরক্ষণ করতে দেয়।
- বিন্যাসযোগ্য: এটি প্রায় যেকোনো ধরনের তথ্য সঞ্চয় এবং বিনিময়ের জন্য ব্যবহার করা যায়।
- ক্রস-প্ল্যাটফর্ম সমর্থন: XML ফাইল যেকোনো অপারেটিং সিস্টেম ও অ্যাপ্লিকেশনে একইভাবে কাজ করে।
উদাহরণস্বরূপ, একটি সাধারণ XML ফাইল এরকম হতে পারে:
<student>
<name>Syed Mahadi Hasan</name>
<age>35</age>
<course>Information Technology</course>
</student>
<student>
মূল ট্যাগ এবং তার মধ্যে <name>
, <age>
, এবং <course>
হলো বিভিন্ন ডেটার ট্যাগ।এক্সএমএল কেন শিখতে হবে?
- ধরুন আপনার সাইটে কোন বিখ্যাত অনলাইন পত্রিকার শিরোনামগুলি একদিকে দেখাতে চান। সেই বিখ্যাত পত্রিকার শিরোনাম তো তাদের ডেটাবেসে আছে এবং সেখান থেকে তারা তাদের সাইটে দেখায়, আপনি তো তাদের ডেটাবেসে একসেস করে তাদের ডেটা আনতে পারবেন না। এমনাবস্থায় সেই সাইটের খবরের/শিরোনামের যদি কোন এক্সএমএল ফরমেট থাকে তাহলে সেই এক্সএমএল থেকে ডেটা নিয়ে আপনার সাইটে শিরোনামগুলি দেখাতে পারবেন। rss, atom এগুলির নাম শুনেছেন তো? এগুলি হচ্ছে কোন সাইটের এক্সএমএল ফরমেটের ডেটা।
- এক্সএমএল দিয়ে ডেটাবেসের কাজ হয়। জুমলা এবং এছাড়া অনেক এপ্লিকেশনে এক্সএমএল ব্যবহার করে ডেটা ধরে রাখে। এই ডেটা তুলে এনে এপ্লিকেশনের যেকোন জায়গায় দেখানো যায়। যেমন জুমলাতে এক্সটেনশনগুলির অপশন যেটা ব্যাকইন্ড থেকে পরিবর্তন করা যায় এগুলি সব অপশন এক্সএমএল ফাইলে থাকে।
- যেকোন সিস্টেম/এপ্লিকেশন এক্সএমএল বর্তমানে পড়তে/চিনতে পারে, ফলে এক্সএমএল বর্তমানে ওয়েব জগতে এপ্লিকেশন/সিস্টেমগুলির জন্য একটা ভাষা হয়ে গেছে।
- এছাড়া আরো অনেক কাজ হয় এক্সএমএল দিয়ে। এক্সএমএল শিখলে আপনি অন্য সাইটের বিভিন্ন ডেটা আপনার সাইটে দেখাতে পারেন আবার আপনার সাইটের কোন ডেটা যদি অন্য কাউকে দিতে চান তাহলে আপনার ঐ ডেটাগুলির একটা এক্সএমএল ফরমেট বানিয়ে সেটার ঠিকানা দিয়ে রাখলে সেটা দিয়ে অন্যরা আপনার সাইটের ডেটা ব্যবহার করতে পারবে।
- যেমন আমাদের এই সাইটের ফোরামের এরুপ এক্সএমএল ফরমেটের ডেটা আছে, চাইলে নিজের সাইটে দেখাতে পারেন। ঠিকানা: https://www.smhamiri.com/p/all-writings.html , এই লিংকে গিয়ে রাইট বাটন ক্লিক করে "View Source" দিয়ে দেখুন এটা একটা এক্সএমএল ডকুমেন্ট।
- পিএইচপি সহ সব ল্যাংগুয়েজেই এক্সএমএল একসেস করার অনেক ফাংশন ইত্যাদি আছে। এসব ব্যবহার করে এই ফিডের এক্সএমএল কে যেকোনভাবে সাইটে বা অন্য কোথাও প্রদর্শন করাতে পারেন। আমাদের সাইটের হোমপেজে দেখুন "সর্বশেষ ফোরাম পোস্ট" একটা মডিউল আছে ডানদিকে সেখানে ফোরাম থেকে সর্বশেষ ৫টি পোস্ট দেখাচ্ছে। আমরা উপরের লিংক (ঐ লিংকে যে এক্সএমএল ডেটা আছে) ব্যবহার করে জুমলার ফ্রেমওয়ার্ক তথা পিএইচপি দিয়ে ডেটা গুছিয়ে সুন্দরভাবে পোস্টেগুলির শিরোনাম এবং বর্ননা (টুলটিপে) দেখাচ্ছি।
XML ট্যাগ
XML-এ ট্যাগগুলো HTML এর মতো দেখতে হলেও এগুলো বেশিরভাগ সময় ব্যবহারকারীর নিজস্ব নিয়মে তৈরি করা হয় এবং ডেটা সংরক্ষণ বা বিনিময়ের জন্য নির্দিষ্ট তথ্যের প্রতিনিধিত্ব করে। XML ট্যাগগুলোতে সাধারণত কয়েকটি গুরুত্বপূর্ণ বৈশিষ্ট্য থাকে, এবং এগুলো ব্যবহার করার কিছু নির্দিষ্ট নিয়ম রয়েছে।
XML ট্যাগের মূল বিষয়গুলো
১. রুট ট্যাগ (Root Tag): রুট ট্যাগ (Root Tag) XML ডকুমেন্টের প্রধান বা মূল ট্যাগ, যা ডকুমেন্টের সমস্ত উপাদানকে একত্রিত করে। প্রতিটি XML ডকুমেন্টে একটি মাত্র রুট ট্যাগ থাকতে হবে এবং এর ভেতরেই অন্যান্য সব ট্যাগ বা ডেটা থাকে। এটি ছাড়া XML ডকুমেন্টটি বৈধ বলে গণ্য হবে না।- প্রতিটি XML ডকুমেন্টে একটি মূল বা রুট ট্যাগ থাকতে হবে যা ডকুমেন্টের সমস্ত তথ্যকে ধারণ করে।
- উদাহরণ: নিচের XML কোডে
<students>
হলো রুট ট্যাগ যা অন্যান্য সমস্ত ডেটা ধারণ করছে।
<students>
<student>
<name>Syed Mahadi Hasan</name>
<age>35</age>
<course>Information Technology</course>
</student>
<student>
<name>Ahmed Ali</name>
<age>30</age>
<course>Cybersecurity</course>
</student>
</students>
এখানে:
<students>
হলো রুট ট্যাগ, যা XML ডকুমেন্টের শুরুতে রয়েছে এবং এর শেষে ক্লোজিং ট্যাগ</students>
দিয়ে বন্ধ করা হয়েছে।- রুট ট্যাগের ভেতরে একাধিক
<student>
ট্যাগ রয়েছে, যা বিভিন্ন শিক্ষার্থীর তথ্য ধারণ করে।
রুট ট্যাগের বৈশিষ্ট্য
- একটি XML ডকুমেন্টে একটি মাত্র রুট ট্যাগ থাকে।
- রুট ট্যাগের বাইরে কোনো ট্যাগ থাকতে পারে না; এটি XML ডকুমেন্টের সর্বপ্রথম এবং সর্বশেষ ট্যাগ।
- রুট ট্যাগের মধ্যে সব উপ-ট্যাগ বা শিশু ট্যাগ গুচ্ছ হিসেবে সাজানো থাকে, যা ডেটাকে গঠনমূলক এবং পঠনযোগ্য করে তোলে।
২. চাইল্ড ট্যাগ (Child Tag): চাইল্ড ট্যাগ (Child Tag) বলতে XML ডকুমেন্টের রুট ট্যাগ বা অন্য কোনো মূল ট্যাগের ভেতরে থাকা ট্যাগগুলোকে বোঝায়। এটি রুট ট্যাগ বা প্যারেন্ট ট্যাগের অংশ হিসেবে থাকে এবং একটি নির্দিষ্ট ডেটার প্রতিনিধিত্ব করে। চাইল্ড ট্যাগের মাধ্যমে ডেটাকে পর্যায়ক্রমে বিভক্ত এবং সংগঠিত করা যায়।
- রুট ট্যাগের ভেতর থাকা ট্যাগগুলোকে চাইল্ড ট্যাগ বলা হয়।
- উদাহরণ: নিচের XML কোডে
<student>
এবং এর ভেতরে থাকা<name>
,<age>
, এবং<course>
হলো চাইল্ড ট্যাগ।
<student><students><age>35</age><name>Syed Mahadi Hasan</name></student><course>Information Technology</course><name>Ahmed Ali</name><student><course>Cybersecurity</course><age>30</age></students></student>
এখানে:
<students>
হলো রুট ট্যাগ।<student>
হলো<students>
ট্যাগের চাইল্ড ট্যাগ।- প্রতিটি
<student>
ট্যাগের ভেতরে<name>
,<age>
, এবং<course>
চাইল্ড ট্যাগ হিসেবে রয়েছে, যা একেকটি শিক্ষার্থীর নির্দিষ্ট তথ্য ধারণ করে।
চাইল্ড ট্যাগের বৈশিষ্ট্য
- প্যারেন্ট ট্যাগের মধ্যে থাকে: শিশু ট্যাগ সবসময় তার প্যারেন্ট ট্যাগ বা রুট ট্যাগের মধ্যে অবস্থান করে।
- গঠনমূলক সম্পর্ক: শিশু ট্যাগের মাধ্যমে ডেটাকে বিভিন্ন স্তরে বিভক্ত করা যায়, যা XML ডকুমেন্টকে গঠনমূলক এবং সহজবোধ্য করে তোলে।
- প্রয়োজনমতো স্তরবিন্যাস: একাধিক স্তরে শিশু ট্যাগ ব্যবহার করা যায়, যা ডেটার স্তরবিন্যাস তৈরি করে।
- ট্যাগের মধ্যে অতিরিক্ত তথ্য বা বৈশিষ্ট্য যোগ করতে এট্রিবিউট ব্যবহার করা হয়। এট্রিবিউট সাধারণত ট্যাগের মধ্যে থাকে এবং নাম ও মান দিয়ে সংজ্ঞায়িত হয়।
- উদাহরণ:
<name>Syed Mahadi Hasan</name><student id="1" gender="male"></student><age>35</age>
এট্রিবিউট ব্যবহারের নিয়মাবলী:
- এট্রিবিউট সবসময় ওপেনিং ট্যাগে থাকে।
- এট্রিবিউটের মান (value) অবশ্যই ডাবল কোটেশন (
" "
) বা সিঙ্গেল কোটেশন (' '
) চিহ্নের মধ্যে থাকতে হবে। - একটি ট্যাগে একাধিক এট্রিবিউট থাকতে পারে এবং প্রতিটি এট্রিবিউটের জন্য আলাদা নাম ও মান থাকতে হবে।
উদাহরণ:
নিচে <student>
ট্যাগে id
, gender
, এবং grade
নামের এট্রিবিউট ব্যবহার করা হয়েছে:
<students>
<student id="1" gender="male" grade="A">
<name>Syed Mahadi Hasan</name>
<age>35</age>
<course>Information Technology</course>
</student>
<student id="2" gender="female" grade="B">
<name>Ahmed Ali</name>
<age>30</age>
<course>Cybersecurity</course>
</student>
</students>
এখানে:
<student>
ট্যাগের মধ্যেid
,gender
, এবংgrade
হল এট্রিবিউট, যা শিক্ষার্থীদের অতিরিক্ত তথ্য যোগ করতে ব্যবহৃত হয়েছে।- প্রতিটি
student
ট্যাগেid
এট্রিবিউটের মাধ্যমে নির্দিষ্ট আইডি নম্বর,gender
এট্রিবিউটের মাধ্যমে শিক্ষার্থীর লিঙ্গ এবংgrade
এট্রিবিউটের মাধ্যমে শিক্ষার্থীর গ্রেড উল্লেখ করা হয়েছে।
এট্রিবিউটের ব্যবহার
এট্রিবিউট সাধারণত তখন ব্যবহার করা হয় যখন ছোট বা নির্দিষ্ট কিছু তথ্য প্রদর্শন করতে হয় যা ট্যাগের মূল ডেটার অংশ নয়। তবে যখন তথ্য বেশি বড় বা বিস্তারিত হয়, তখন এটিকে আলাদা শিশু ট্যাগে রাখা ভালো।
ওপেনিং ট্যাগ
- ট্যাগের শুরুতে
<
এবং শেষে>
চিহ্ন থাকে। - ওপেনিং ট্যাগের মাধ্যমে ট্যাগের নাম নির্দিষ্ট করা হয় এবং প্রয়োজনমতো এট্রিবিউট যোগ করা যায়।
- উদাহরণ:
<name>
,<age>
ক্লোজিং ট্যাগ
- ক্লোজিং ট্যাগের শুরুতে
<
, শেষে>
, এবং ট্যাগের নামের আগে/
চিহ্ন থাকে। - ক্লোজিং ট্যাগ দিয়ে ট্যাগটি সমাপ্ত করা হয়।
- উদাহরণ:
</name>
,</age>
উদাহরণ:
নিচের উদাহরণে <student>
এবং </student>
হলো ওপেনিং ও ক্লোজিং ট্যাগ।
<name>Syed Mahadi Hasan</name><student>
<course>Information Technology</course><age>35</age>
</student>
এখানে:
<student>
দিয়ে শুরু হয়েছে, যা ওপেনিং ট্যাগ, এবং</student>
দিয়ে শেষ করা হয়েছে, যা ক্লোজিং ট্যাগ।<name>
,<age>
, এবং<course>
এর ওপেনিং ট্যাগ, এবং</name>
,</age>
,</course>
হলো সংশ্লিষ্ট ক্লোজিং ট্যাগ।
নিয়মাবলী
- প্রতিটি ওপেনিং ট্যাগের জন্য একটি মিলিত ক্লোজিং ট্যাগ থাকতে হবে।
- ক্লোজিং ট্যাগের মধ্যে অবশ্যই
/
চিহ্ন থাকতে হবে। - ট্যাগের ভেতরে থাকা সমস্ত ডেটা ওপেনিং এবং ক্লোজিং ট্যাগের মধ্যে থাকতে হবে।
এভাবে ওপেনিং ও ক্লোজিং ট্যাগ ব্যবহার করে XML ডেটাকে গঠনমুলক এবং সঠিকভাবে উপস্থাপন করা হয়।
নেস্টেড ট্যাগের গঠন
- একটি ট্যাগের মধ্যে অন্য ট্যাগ থাকা মানে সেই ট্যাগটি তার প্যারেন্ট ট্যাগের চাইল্ড ট্যাগ।
- একটি ট্যাগ যতখানি গভীরে নেস্ট করা যায়, তত বেশি স্তরবিন্যাস তৈরি করা সম্ভব।
- উদাহরণ: নিচের উদাহরণে
<students>
,<student>
,<name>
,<age>
, এবং<course>
ট্যাগগুলো একে অপরের মধ্যে নেস্টেড আকারে রয়েছে।
<students>
<student>
<name>Syed Mahadi Hasan</name>
<age>35</age>
<course>
<name>Information Technology</name>
<code>IT101</code>
</course>
</student></students>
এখানে:
<students>
হলো রুট ট্যাগ, যা XML ডকুমেন্টের প্রধান ট্যাগ।<student>
ট্যাগটি<students>
এর ভেতরে নেস্টেড ট্যাগ হিসেবে আছে।<name>
,<age>
, এবং<course>
<student>
ট্যাগের শিশু ট্যাগ।<course>
ট্যাগের ভেতরে আরও নেস্টেড ট্যাগ<name>
এবং<code>
আছে, যা কোর্সের নির্দিষ্ট তথ্য ধারণ করছে।
নেস্টেড ট্যাগ ব্যবহারের সুবিধা
- ডেটা সম্পর্ক গঠন: বিভিন্ন ডেটার মধ্যে সম্পর্ক স্পষ্টভাবে প্রদর্শিত হয়।
- পঠনযোগ্যতা বৃদ্ধি: স্তরবিন্যাসের মাধ্যমে ডেটা পঠনযোগ্য এবং সহজে বোধগম্য হয়।
- বিভিন্ন স্তরভিত্তিক উপস্থাপন: বিভিন্ন স্তরে ডেটা উপস্থাপনের মাধ্যমে জটিল তথ্যকেও সংগঠিত করা যায়।
সেল্ফ-ক্লোজিং ট্যাগের গঠন
- সেল্ফ-ক্লোজিং ট্যাগে একটি স্ল্যাশ
/
চিহ্ন থাকে যা ট্যাগটিকে খুলে এবং বন্ধ করে দেয়। - এটি
<tagname />
এই ফরম্যাটে লেখা হয়। - এই ট্যাগে সাধারণত এট্রিবিউট ব্যবহার করা যায়, তবে এর মধ্যে কোনো ভেতরের ট্যাগ বা টেক্সট থাকে না।
- উদাহরণ: নিচে
<photo>
,<input>
, এবং<br>
হলো সেল্ফ-ক্লোজিং ট্যাগের উদাহরণ:
<photo src="syed.jpg" />
<input type="text" /><br />
এখানে:
<photo />
একটি সেল্ফ-ক্লোজিং ট্যাগ, যার এট্রিবিউটsrc
ফাইলের উৎস উল্লেখ করছে।<input />
এবং<br />
ও সেল্ফ-ক্লোজিং ট্যাগ যা অতিরিক্ত কোনো ভেতরের তথ্য ধারণ করছে না।
সেল্ফ-ক্লোজিং ট্যাগ ব্যবহারের ক্ষেত্র
সেল্ফ-ক্লোজিং ট্যাগ মূলত তখন ব্যবহার করা হয় যখন:
- ট্যাগের ভেতরে কোনো অতিরিক্ত তথ্য রাখার প্রয়োজন নেই।
- শুধু ট্যাগটির উপস্থিতিই কিছু নির্দেশ করে।
- ডেটার কাঠামো গঠন করতে অতিরিক্ত কোনো শিশু ট্যাগ বা তথ্য রাখা প্রয়োজন হয় না।
XML ট্যাগ ব্যবহারের কিছু নিয়ম
- XML ট্যাগের নাম স্পেস-সেন্সিটিভ, অর্থাৎ
<name>
এবং<Name>
ভিন্ন ট্যাগ হিসেবে বিবেচিত হয়। - ট্যাগের নাম সংখ্যা দিয়ে শুরু করা যাবে না এবং স্পেস বা স্পেশাল ক্যারেক্টার এড়িয়ে চলতে হবে।
- প্রতিটি ওপেনিং ট্যাগের একটি ক্লোজিং ট্যাগ থাকতে হবে।
- রুট ট্যাগ একবারই ব্যবহার করা যাবে।