XML (eXtensible Markup Language) foydalanuvchi teglari yordamida strukturalangan ma’lumotlarni saqlash va uzatish uchun matn formatidir. U konfiguratsiya fayllari, veb xizmatlar va Android ishlanmasida keng qo’llaniladi. W3C konsorsiumi ma’lumotlariga ko’ra, XML spetsifikatsiyasi 2008 yildan beri barqaror standart bo’lib qolmoqda. XML sxemalar orqali validatsiya imkoniyati bilan qat’iy ma’lumot strukturasini ta’minlaydi.
Asosiy fikrlar
XML hujjatlarni inson va mashina tomonidan o’qiladigan formatda kodlash qoidalari to’plamini belgilaydigan belgilash tilidir. HTML dan farqli o’laroq, XML belgilangan teglar to’plamiga ega emas — ishlab chiquvchi ma’lumotlar tuzilishiga mos keladigan o’z teglarini yaratadi.
XML 1996 yilda W3C konsorsiumi tomonidan SGML (Standard Generalized Markup Language) ning soddalashtirilgan kichik to’plami sifatida ishlab chiqilgan. XML ning asosiy maqsadi mazmun va ma’lumotlar taqdimotini ajratishdir. Tashqi ko’rinishni tavsiflovchi HTML dan farqli o’laroq, XML ma’lumotlarning tuzilishi va ma’nosini tavsiflaydi.
XML ning asosiy xususiyati kengaytiriluvchanlikdir. Loyihada yangi ma’lumot turlari paydo bo’lsa, ishlab chiquvchi mavjud tuzilmani o’zgartirmasdan oddiygina yangi teglar qo’shadi. Bu XML ni ma’lumotlarni uzoq muddatli saqlash va turli tizimlar o’rtasida almashish uchun qulay qiladi.
XML sintaksisi HTML ga qaraganda qat’iyroq. Har bir ochiladigan teg mos yopiladigan tegga ega bo’lishi kerak, atributlar tirnoq ichiga olinadi, teg nomlari katta-kichik harfga sezgir. Hujjat qolgan barcha elementlarni o’z ichiga olgan aynan bitta ildiz elementga ega bo’lishi kerak.
XML hujjati XML versiyasi va kodlashni ko’rsatadigan deklaratsiya bilan boshlanishi mumkin. Keyin ildiz element keladi, uning ichida joylashgan elementlar, atributlar, matn mazmuni va sharhlar bo’lishi mumkin. Bo’sh elementlar
<?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 asosiy qoidalarga rioya qilishi kerak: har bir ochiladigan teg uchun yopiladigan teg majburiy, joylashtirish qat’iy (teglarning kesishishi taqiqlangan), atribut qiymatlari har doim tirnoq ichida. Har qanday qoidani buzish hujjatni noto’g’ri qiladi va parsirinq qilib bo’lmaydi.
XML nom maydonlari (XML Namespaces) bir hujjatda turli lug’atlardan elementlar ishlatilganda nom to’qnashuvlari muammosini hal qiladi. Nom maydoni lug’atni noyob tarzda aniqlaydigan URI bilan xmlns atributi orqali belgilanadi.
XML Schema (XSD) XML hujjatining tuzilishini tavsiflash tilidir. XSD qaysi elementlar va atributlar ruxsat etilganligini, ularning ma’lumot turlarini, majburiyligini va cheklovlarini aniqlaydi. Sxemalar qayta ishlashdan oldin hujjatni avtomatik ravishda tekshirish imkonini beradi, bu integratsiya yechimlari uchun juda muhimdir.
| Texnologiya | Maqsad | Misol |
|---|---|---|
| DTD | Asosiy struktura validatsiyasi | Eski, kam imkoniyatli |
| XSD | Qat’iy tiplash va validatsiya | Sanoat standarti |
| RELAX NG | XSD uchun ixcham alternativ | XSD dan sodda va o’qilishi oson |
| XSLT | XML ni boshqa formatlarga aylantirish | XML dan HTML, PDF, CSV |
| XPath | Tugunlarda navigatsiya va tanlash | XML daraxtiga so’rovlar |
XML Android ishlanmasida asosiy rol o’ynaydi. Android operatsion tizimi XML dan foydalanuvchi interfeysini tavsiflash (layout fayllari), ilova konfiguratsiyasi (AndroidManifest.xml), resurslar (satrlar, ranglar, mavzular) va vektor grafikasi (VectorDrawable) uchun foydalanadi. iOS da XML kamroq, asosan Storyboard va plist konfiguratsiya fayllari uchun ishlatiladi.
Android da ilovaning har bir ekrani View komponentlari ierarxiyasiga ega XML fayli bilan tavsiflanadi: ConstraintLayout, LinearLayout, TextView, Button. Bu yondashuv ilova mantig’i va taqdimotni ajratadi, texnik xizmat ko’rsatish va turli ekranlarga moslashishni osonlashtiradi. Resurs XML fayllari kodni o’zgartirmasdan ilovani mahalliylashtirish imkonini beradi.
Oddiy layout fayli, har biri joylashish, o’lcham va uslub atributlariga ega bo’lgan joylashtirilgan elementlar bilan ConstraintLayout ildizini o’z ichiga oladi. Android ishga tushirishda ishlashni optimallashtirish uchun XML ni AXML ikkilik formatiga kompilyatsiya qiladi.
<?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 parsirinqi mobil platformalarda ikkita asosiy yondashuv bilan amalga oshiriladi: DOM (Document Object Model) butun hujjatni daraxt sifatida xotiraga yuklaydi, SAX (Simple API for XML) hujjatni oqim rejimida o’qib, hodisa boshqaruvchilarini chaqiradi. DOM kichik hujjatlar uchun qulay, SAX — xotira cheklovlari bo’lgan katta fayllar uchun.
Android da o’rnatilgan parserlar mavjud: oqim tahlili uchun XmlPullParser va DOM yondashuvi uchun DocumentBuilder. iOS da Foundation XMLParser delegat protokoli bilan ishlatiladi. Obyektlarni XML ga seriyalash uchun ko’pincha PHP da SimpleXML yoki Java da Jackson XML kabi kutubxonalar ishlatiladi.
Android da samarali XML tahlili uchun XmlPullParser dan foydalanish tavsiya etiladi. Parser hodisa rejimida ishlaydi: keyingi elementga o’tish uchun next() chaqiradi va hodisa turini (START_TAG, TEXT, END_TAG) qaytaradi. Bu minimal xotira sarfi bilan istalgan o’lchamdagi hujjatlarni qayta ishlash imkonini beradi.
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
}
Foydalanish misollari XML ning real loyihalardagi rolini ko’rsatadi. Android ishlanmasidan tashqari, XML kompilyatsiya konfiguratsiyasi, ma’lumotlarni tavsiflash va hujjat aylanishi uchun ishlatiladi. XML sintaksisini bilish Maven, SOAP xizmatlari va ko’plab enterprise vositalari bilan ishlash uchun zarur.
pom.xml fayli Maven loyihasini tavsiflaydi: bog’liqliklar, plaginlar, versiyalar va kompilyatsiya profillari. Har bir bog’liqlik groupId, artifactId va version teglari bilan belgilanadi. Maven ko’rsatilgan kutubxonalarni omborlardan avtomatik yuklaydi.
<?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 va JSON o’rtasida tanlov loyihaning aniq talablariga bog’liq. JSON ixchamlik va tezlik muhim bo’lgan REST API, mobil ilovalar va konfiguratsiyalar uchun mos keladi. XML qat’iy validatsiya, nom maydonlari va ma’lumotlarni aylantirish talab qilinadigan Enterprise tizimlarida, hujjat aylanishida va Android ishlanmasida ajralmas hisoblanadi.
XML uzoq muddatli hujjat saqlash stsenariylarida ustunlik qiladi. XSD sxemalari tufayli XML hujjatlarni avtomatik tekshirish mumkin, bu tibbiy, moliyaviy va huquqiy tizimlar uchun juda muhimdir. XSLT o’zgartirishlari bitta XML manbasidan HTML, PDF va boshqa formatlarni yaratish imkonini beradi, bu hujjat aylanishini osonlashtiradi.
JSON esa, o’z navbatida, veb API va mobil ilovalar uchun standartga aylandi. JavaScript bilan integratsiyaning soddaligi, kichikroq hajmi va yuqori parsirinq tezligi JSON ni REST API, WebSocket xabarlari va konfiguratsiya fayllari uchun afzal tanlovga aylantiradi. Aksariyat yangi loyihalar uchun JSON bilan boshlash va faqat maxsus talablar paydo bo’lganda XML ga o’tish tavsiya etiladi.
Ko’p so’raladigan savollar
XML ma’lumotlarning tuzilishi va mazmunini tavsiflaydi, HTML — tashqi ko’rinish va taqdimotni. XML istalgan teglarni yaratishga imkon beradi, HTML belgilangan to’plamga ega. XML sintaksisda qat’iyroq: barcha teglar yopilishi kerak, HTML yopilmagan teglarga ruxsat beradi. XML — ma’lumotlar uchun, HTML — ko’rsatish uchun.
XSD (XML Schema Definition) XML hujjatining tuzilishini tavsiflash tilidir. XSD qaysi elementlar va atributlar ruxsat etilganligini, ularning ma’lumot turlarini, majburiyligini va cheklovlarini aniqlaydi. Sxema xatolarning oldini olish va ma’lumotlar yaxlitligini kafolatlash uchun XML hujjatini qayta ishlashdan oldin avtomatik tekshirish imkonini beradi.
Android da XML parsir qilish uchun XmlPullParser — o’rnatilgan oqim parseridan foydalaning. U hodisa rejimida ishlaydi: START_TAG, TEXT va END_TAG ni sikl ichida qayta ishlaydi, xotirani samarali boshqaradi. Kichik hujjatlar uchun butun hujjatni tugun daraxti sifatida xotiraga yuklaydigan DocumentBuilderFactory orqali DOM parser mos keladi.
DTD (Document Type Definition) cheklangan imkoniyatlarga ega eski validatsiya mexanizmidir: ma’lumot turlarini (hamma narsa satr) va nom maydonlarini qo’llab-quvvatlamaydi. XSD ma’lumot turlari (raqamlar, sanalar, sanab o’tishlar), nom maydonlari va kengaytiriluvchanlikni qo’llab-quvvatlovchi zamonaviy o’rindosdir. XSD ning o’zi XML hujjatidir, DTD o’z sintaksisidan foydalanadi.
Nom maydonlari XML hujjat turli manbalardan elementlarni birlashtirganda nom to’qnashuvlarining oldini oladi. Masalan, Android layout da View tegi ham android.view dan, ham kutubxonadan bo’lishi mumkin. URI bilan xmlns atributi har bir element va atributning manbasini noyob tarzda aniqlaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.