XML (eXtensible Markup Language) হল কাস্টম ট্যাগ ব্যবহার করে কাঠামোবদ্ধ ডেটা সংরক্ষণ এবং প্রেরণের জন্য একটি টেক্সট ফরম্যাট। এটি কনফিগারেশন ফাইল, ওয়েব সার্ভিস এবং Android ডেভেলপমেন্টে ব্যাপকভাবে ব্যবহৃত হয়। W3C কনসোর্টিয়ামের মতে, XML স্পেসিফিকেশন ২০০৮ সাল থেকে একটি স্থিতিশীল মান হিসেবে রয়ে গেছে। XML স্কিমার মাধ্যমে ভ্যালিডেশনের ক্ষমতা সহ একটি কঠোর ডেটা কাঠামো প্রদান করে।
মূল পয়েন্ট
XML হল একটি মার্কআপ ভাষা যা ডকুমেন্টকে মানব এবং মেশিন উভয়েরই পাঠযোগ্য ফরম্যাটে এনকোড করার জন্য নিয়মের একটি সেট সংজ্ঞায়িত করে। HTML-এর বিপরীতে, XML-এর ট্যাগের কোনো নির্দিষ্ট সেট নেই — ডেভেলপাররা ডেটা কাঠামোর সাথে সঙ্গতিপূর্ণ তাদের নিজস্ব ট্যাগ তৈরি করেন।
XML W3C কনসোর্টিয়াম দ্বারা ১৯৯৬ সালে SGML (Standard Generalized Markup Language)-এর একটি সরলীকৃত উপসেট হিসেবে তৈরি করা হয়েছিল। XML-এর মূল লক্ষ্য হল বিষয়বস্তুকে ডেটা উপস্থাপনা থেকে আলাদা করা। HTML-এর বিপরীতে, যা চেহারা বর্ণনা করে, XML ডেটার কাঠামো এবং অর্থ বর্ণনা করে।
XML-এর মূল বৈশিষ্ট্য হল এক্সটেনসিবিলিটি। যদি একটি প্রকল্পে নতুন ডেটা টাইপ উদ্ভূত হয়, ডেভেলপার বিদ্যমান কাঠামো পরিবর্তন না করে কেবল নতুন ট্যাগ যোগ করে। এটি XML-কে দীর্ঘমেয়াদী ডেটা সংরক্ষণ এবং বিভিন্ন সিস্টেমের মধ্যে বিনিময়ের জন্য সুবিধাজনক করে তোলে।
XML সিনট্যাক্স HTML-এর তুলনায় কঠোর। প্রতিটি ওপেনিং ট্যাগের একটি সংশ্লিষ্ট ক্লোজিং ট্যাগ থাকতে হবে, অ্যাট্রিবিউট উদ্ধৃতি চিহ্নের মধ্যে থাকে এবং ট্যাগের নাম কেস-সেন্সিটিভ। ডকুমেন্টে ঠিক একটি রুট এলিমেন্ট থাকতে হবে যা অন্যদের ধারণ করে।
একটি XML ডকুমেন্ট XML সংস্করণ এবং এনকোডিং নির্দিষ্ট করে একটি ডিক্লারেশন দিয়ে শুরু হতে পারে। তারপর রুট এলিমেন্ট আসে, যার ভিতরে নেস্টেড এলিমেন্ট, অ্যাট্রিবিউট, টেক্সট বিষয়বস্তু এবং মন্তব্য থাকতে পারে। খালি এলিমেন্ট
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk001">
<title>XML Developer Guide</title>
<author>John Smith</author>
<price currency="USD">29.99</price>
<published>2026-03-15</published>
</book>
<book id="bk002">
<title>Advanced XML Schemas</title>
<author>Jane Doe</author>
<price currency="USD">49.99</price>
</book>
</catalog>
সুসংগঠিত (Well-formed) XML অবশ্যই মৌলিক নিয়ম অনুসরণ করবে: প্রতিটি ওপেনিং ট্যাগের জন্য ক্লোজিং ট্যাগ বাধ্যতামূলক, নেস্টিং কঠোর (ট্যাগ ওভারল্যাপিং নিষিদ্ধ), অ্যাট্রিবিউটের মান সর্বদা উদ্ধৃতি চিহ্নে থাকে। যেকোনো নিয়ম লঙ্ঘন ডকুমেন্টকে অবৈধ এবং পার্সযোগ্য করে তোলে।
XML নেমস্পেস নামের দ্বন্দ্বের সমস্যা সমাধান করে যখন একটি ডকুমেন্টে বিভিন্ন শব্দকোষ থেকে এলিমেন্ট ব্যবহার করা হয়। নেমস্পেস xmlns অ্যাট্রিবিউট দ্বারা একটি URI-এর সাথে সংজ্ঞায়িত করা হয় যা শব্দকোষটিকে স্বতন্ত্রভাবে চিহ্নিত করে।
XML Schema (XSD) হল XML ডকুমেন্টের কাঠামো বর্ণনা করার একটি ভাষা। XSD সংজ্ঞায়িত করে কোন এলিমেন্ট এবং অ্যাট্রিবিউট অনুমোদিত, তাদের ডেটা টাইপ, বাধ্যতামূলকতা এবং সীমাবদ্ধতা। স্কিমা প্রক্রিয়াকরণের আগে স্বয়ংক্রিয় ডকুমেন্ট ভ্যালিডেশনের অনুমতি দেয়, যা ইন্টিগ্রেশন সমাধানের জন্য গুরুত্বপূর্ণ।
| প্রযুক্তি | উদ্দেশ্য | উদাহরণ |
|---|---|---|
| DTD | মৌলিক কাঠামো ভ্যালিডেশন | পুরনো, কম ক্ষমতা |
| XSD | কঠোর টাইপিং এবং ভ্যালিডেশন | শিল্প মান |
| RELAX NG | XSD-এর কমপ্যাক্ট বিকল্প | XSD-এর চেয়ে সহজ এবং পড়তে সহজ |
| XSLT | XML-কে অন্যান্য ফরম্যাটে রূপান্তর | XML থেকে HTML, PDF, CSV |
| XPath | নেভিগেশন এবং নোড নির্বাচন | XML ট্রিতে কুয়েরি |
XML Android ডেভেলপমেন্টে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। Android অপারেটিং সিস্টেম ইউজার ইন্টারফেস (লেআউট ফাইল), অ্যাপ্লিকেশন কনফিগারেশন (AndroidManifest.xml), রিসোর্স (strings, colors, themes) এবং ভেক্টর গ্রাফিক্স (VectorDrawable) বর্ণনা করতে XML ব্যবহার করে। iOS-এ, XML কম ঘন ঘন ব্যবহৃত হয়, প্রধানত Storyboard এবং কনফিগারেশন plist ফাইলের জন্য।
Android-এ, প্রতিটি অ্যাপ্লিকেশন স্ক্রিন View কম্পোনেন্টের একটি শ্রেণিবিন্যাসসহ একটি XML ফাইল দ্বারা বর্ণিত হয়: ConstraintLayout, LinearLayout, TextView, Button। এই পদ্ধতি অ্যাপ্লিকেশন লজিককে প্রেজেন্টেশন থেকে আলাদা করে, রক্ষণাবেক্ষণ এবং বিভিন্ন স্ক্রিনে অভিযোজন সহজ করে। রিসোর্স XML ফাইল কোড পরিবর্তন না করে অ্যাপ্লিকেশনের স্থানীয়করণের অনুমতি দেয়।
একটি সাধারণ লেআউট ফাইলে নেস্টেড এলিমেন্টসহ একটি রুট ConstraintLayout থাকে, যার প্রতিটির অবস্থান, আকার এবং শৈলীর অ্যাট্রিবিউট থাকে। Android স্টার্টআপে পারফরম্যান্স অপ্টিমাইজেশনের জন্য XML-কে AXML বাইনারি ফরম্যাটে কম্পাইল করে।
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/click"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
XML পার্সিং মোবাইল প্ল্যাটফর্মে দুটি প্রধান পদ্ধতিতে করা হয়: DOM (Document Object Model) পুরো ডকুমেন্টকে একটি ট্রি হিসেবে মেমোরিতে লোড করে, SAX (Simple API for XML) ডকুমেন্টকে স্ট্রিমিং করে পড়ে, ইভেন্ট হ্যান্ডলার কল করে। DOM ছোট ডকুমেন্টের জন্য সুবিধাজনক, SAX মেমোরি সীমাবদ্ধতা সহ বড় ফাইলের জন্য।
Android-এ বিল্ট-ইন পার্সার রয়েছে: স্ট্রিম পার্সিংয়ের জন্য XmlPullParser এবং DOM পদ্ধতির জন্য DocumentBuilder। iOS ডেলিগেট প্রোটোকল সহ Foundation XMLParser ব্যবহার করে। অবজেক্টকে XML-এ সিরিয়ালাইজ করার জন্য, PHP-তে SimpleXML বা Java-তে Jackson XML-এর মতো লাইব্রেরি ব্যবহার করা হয়।
Android দক্ষ XML পার্সিংয়ের জন্য XmlPullParser ব্যবহার করার পরামর্শ দেয়। পার্সার ইভেন্ট-চালিত মোডে কাজ করে: পরবর্তী এলিমেন্টে যেতে next() কল করে এবং ইভেন্ট টাইপ (START_TAG, TEXT, END_TAG) ফেরত দেয়। এটি ন্যূনতম মেমোরি খরচে যেকোনো আকারের ডকুমেন্ট প্রক্রিয়াকরণের অনুমতি দেয়।
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException
fun parseCatalog(parser: XmlPullParser): List<Book> {
val books = mutableListOf<Book>()
var eventType = parser.getEventType()
var currentBook: Book? = null
while (eventType != XmlPullParser.END_DOCUMENT) {
when (eventType) {
XmlPullParser.START_TAG -> {
when (parser.getName()) {
"book" -> currentBook = Book()
"title" -> parser.next()
"author" -> parser.next()
}
}
XmlPullParser.TEXT -> {
currentBook?.apply {
title = parser.getText() ?: ""
}
}
XmlPullParser.END_TAG -> {
if (parser.getName() == "book") {
currentBook?.let { books.add(it) }
}
}
}
eventType = parser.next()
}
return books
}
XML ব্যবহারের উদাহরণ বাস্তব প্রকল্পে এর ভূমিকা প্রদর্শন করে। Android ডেভেলপমেন্ট ছাড়াও, XML বিল্ড কনফিগারেশন, ডেটা বর্ণনা এবং ডকুমেন্ট ওয়ার্কফ্লোর জন্য ব্যবহৃত হয়। Maven, SOAP সার্ভিস এবং অনেক এন্টারপ্রাইজ টুলের সাথে কাজ করার জন্য XML সিনট্যাক্স বোঝা প্রয়োজন।
pom.xml ফাইল Maven প্রকল্প বর্ণনা করে: নির্ভরতা, প্লাগইন, সংস্করণ এবং বিল্ড প্রোফাইল। প্রতিটি নির্ভরতা groupId, artifactId এবং version ট্যাগ দিয়ে নির্দিষ্ট করা হয়। Maven রিপোজিটরি থেকে নির্দিষ্ট লাইব্রেরি স্বয়ংক্রিয়ভাবে ডাউনলোড করে।
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
</project>
XML এবং JSON-এর মধ্যে পছন্দ প্রকল্পের নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করে। JSON REST API, মোবাইল অ্যাপ্লিকেশন এবং কনফিগারেশনের জন্য উপযুক্ত যেখানে কম্প্যাক্টনেস এবং গতি গুরুত্বপূর্ণ। XML এন্টারপ্রাইজ সিস্টেম, ডকুমেন্ট ওয়ার্কফ্লো এবং Android ডেভেলপমেন্টে অপরিহার্য, যেখানে কঠোর ভ্যালিডেশন, নেমস্পেস এবং ডেটা রূপান্তর প্রয়োজন।
XML দীর্ঘমেয়াদী ডকুমেন্ট সংরক্ষণের দৃশ্যে জয়ী হয়। XSD স্কিমার কারণে, XML ডকুমেন্ট স্বয়ংক্রিয়ভাবে ভ্যালিডেট করা যেতে পারে, যা চিকিৎসা, আর্থিক এবং আইনি সিস্টেমের জন্য গুরুত্বপূর্ণ। XSLT রূপান্তর একটি একক XML উৎস থেকে HTML, PDF এবং অন্যান্য ফরম্যাট তৈরি করার অনুমতি দেয়, যা ডকুমেন্ট ওয়ার্কফ্লো সহজ করে।
JSON, পালাক্রমে, ওয়েব API এবং মোবাইল অ্যাপ্লিকেশনের জন্য মান হয়ে উঠেছে। JavaScript-এর সাথে একীকরণের সহজতা, ছোট আকার এবং উচ্চ পার্সিং গতি JSON-কে REST API, WebSocket বার্তা এবং কনফিগারেশন ফাইলের জন্য পছন্দের বিকল্প করে তোলে। বেশিরভাগ নতুন প্রকল্পের জন্য, JSON দিয়ে শুরু করার এবং নির্দিষ্ট প্রয়োজনীয়তা দেখা দিলেই XML-এ স্যুইচ করার পরামর্শ দেওয়া হয়।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
XML ডেটার কাঠামো এবং বিষয়বস্তু বর্ণনা করে, HTML চেহারা এবং উপস্থাপনা বর্ণনা করে। XML যেকোনো ট্যাগ তৈরি করার অনুমতি দেয়, HTML-এর একটি নির্দিষ্ট সেট রয়েছে। XML সিনট্যাক্সে কঠোর: সব ট্যাগ বন্ধ হতে হবে, HTML বন্ধ না করা ট্যাগের অনুমতি দেয়। XML ডেটার জন্য, HTML প্রদর্শনের জন্য।
XSD (XML Schema Definition) XML ডকুমেন্টের কাঠামো বর্ণনা করার একটি ভাষা। XSD সংজ্ঞায়িত করে কোন এলিমেন্ট এবং অ্যাট্রিবিউট অনুমোদিত, তাদের ডেটা টাইপ, বাধ্যতামূলকতা এবং সীমাবদ্ধতা। স্কিমা প্রক্রিয়াকরণের আগে XML ডকুমেন্টের স্বয়ংক্রিয় ভ্যালিডেশনের অনুমতি দেয়, ত্রুটি প্রতিরোধ করে এবং ডেটা অখণ্ডতা নিশ্চিত করে।
Android-এ, XML পার্সিংয়ের জন্য XmlPullParser ব্যবহার করুন — একটি বিল্ট-ইন স্ট্রিমিং পার্সার। এটি ইভেন্ট-চালিতভাবে কাজ করে: একটি লুপে START_TAG, TEXT এবং END_TAG প্রক্রিয়া করে, মেমোরি দক্ষভাবে পরিচালনা করে। ছোট ডকুমেন্টের জন্য, DocumentBuilderFactory-এর মাধ্যমে DOM পার্সার উপযুক্ত, যা পুরো ডকুমেন্টকে নোড ট্রি হিসেবে মেমোরিতে লোড করে।
DTD (Document Type Definition) একটি পুরনো ভ্যালিডেশন প্রক্রিয়া যার সীমিত ক্ষমতা রয়েছে: এটি ডেটা টাইপ (সবকিছু স্ট্রিং) এবং নেমস্পেস সমর্থন করে না। XSD ডেটা টাইপ (সংখ্যা, তারিখ, গণনা), নেমস্পেস এবং এক্সটেনসিবিলিটির সমর্থন সহ একটি আধুনিক প্রতিস্থাপন। XSD নিজেই একটি XML ডকুমেন্ট, যেখানে DTD তার নিজস্ব সিনট্যাক্স ব্যবহার করে।
নেমস্পেস নামের দ্বন্দ্ব প্রতিরোধ করে যখন একটি XML ডকুমেন্ট বিভিন্ন উৎস থেকে এলিমেন্ট একত্রিত করে। উদাহরণস্বরূপ, Android লেআউটে View ট্যাগ android.view এবং একটি লাইব্রেরি উভয় থেকে আসতে পারে। URI-সহ xmlns অ্যাট্রিবিউট প্রতিটি এলিমেন্ট এবং অ্যাট্রিবিউটের উৎস স্বতন্ত্রভাবে চিহ্নিত করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন