XML (eXtensible Markup Language) ایک ٹیکسٹ فارمیٹ ہے جو کسٹم ٹیگز کا استعمال کرتے ہوئے ساختہ ڈیٹا کو ذخیرہ کرنے اور منتقل کرنے کے لیے ہے۔ یہ کنفیگریشن فائلوں، ویب سروسز اور Android ڈویلپمنٹ میں وسیع پیمانے پر استعمال ہوتا ہے۔ W3C کنسورشیم کے مطابق، XML تفصیلات 2008 سے ایک مستحکم معیار ہے۔ XML اسکیما کے ذریعے توثیق کی صلاحیت کے ساتھ ایک سخت ڈیٹا ڈھانچہ فراہم کرتا ہے۔
اہم نکات
XML ایک مارک اپ زبان ہے جو دستاویزات کو ایک ایسی فارمیٹ میں انکوڈ کرنے کے لیے قوانین کا ایک مجموعہ متعین کرتی ہے جو انسان اور مشین دونوں پڑھ سکیں۔ HTML کے برعکس، XML میں ٹیگز کا کوئی مقررہ سیٹ نہیں ہے — ڈویلپرز ڈیٹا ڈھانچے کے مطابق اپنے ٹیگز بناتے ہیں۔
XML کو W3C کنسورشیم نے 1996 میں SGML (Standard Generalized Markup Language) کے ایک آسان ذیلی سیٹ کے طور پر تیار کیا تھا۔ XML کا بنیادی مقصد مواد کو ڈیٹا پریزنٹیشن سے الگ کرنا ہے۔ HTML کے برعکس، جو ظاہری شکل کو بیان کرتا ہے، XML ڈیٹا کی ساخت اور معنی کو بیان کرتا ہے۔
XML کی کلیدی خاصیت توسیع پذیری ہے۔ اگر کسی پروجیکٹ میں ڈیٹا کی نئی اقسام ابھرتی ہیں، تو ڈویلپر موجودہ ڈھانچے کو تبدیل کیے بغیر نئے ٹیگز شامل کرتا ہے۔ یہ XML کو طویل مدتی ڈیٹا اسٹوریج اور مختلف سسٹمز کے درمیان تبادلے کے لیے آسان بناتا ہے۔
XML کا نحو HTML سے زیادہ سخت ہے۔ ہر کھلنے والے ٹیگ کا ایک متعلقہ بند ہونے والا ٹیگ ہونا چاہیے، خصوصیات کو کوٹیشن مارکس میں رکھا جاتا ہے، اور ٹیگ کے نام کیس حساس ہوتے ہیں۔ دستاویز میں بالکل ایک جڑ عنصر ہونا چاہیے جو باقی سب کو رکھتا ہے۔
ایک XML دستاویز XML ورژن اور انکوڈنگ کی وضاحت کرنے والے اعلامیے سے شروع ہو سکتی ہے۔ اس کے بعد جڑ عنصر آتا ہے، جس کے اندر نیسٹڈ عناصر، خصوصیات، متنی مواد اور تبصرے ہو سکتے ہیں۔ خالی عناصر کو <element /> کے طور پر لکھا جاتا ہے۔
<?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 اجزاء (ConstraintLayout, LinearLayout, TextView, Button) کے درجہ بندی کے ساتھ ایک XML فائل سے بیان کی جاتی ہے۔ یہ طریقہ ایپلیکیشن منطق کو پیشکش سے الگ کرتا ہے، دیکھ بھال اور مختلف اسکرینوں کے لیے موافقت کو آسان بناتا ہے۔ وسائل کی 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 بلڈ کنفیگریشن، ڈیٹا کی وضاحت اور دستاویزی ورک فلو کے لیے استعمال ہوتا ہے۔ XML نحو کو سمجھنا Maven، SOAP سروسز اور بہت سے انٹرپرائز ٹولز کے ساتھ کام کرنے کے لیے ضروری ہے۔
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، اس کے برعکس، ویب APIs اور موبائل ایپلیکیشنز کے لیے معیار بن گیا ہے۔ 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں