XML: nima, hujjat tuzilishi va ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-03-08 O'qish vaqti: 8 daq

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 — strukturalangan ma’lumotlar uchun foydalanuvchi teglariga ega kengaytiriladigan belgilash tili
  • Qat’iy struktura — majburiy yopiladigan teglar, ildiz element va XSD orqali validatsiya
  • Nom maydonlari — bitta hujjatda nom to’qnashuvlarining oldini olish mexanizmi
  • XSLT — XML ni boshqa formatlarga aylantirish: HTML, PDF, CSV
  • Android ishlanmasi — XML layoutlar, manifest va resurslar uchun ishlatiladi

XML nima?

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 ning asosiy qo’llanish sohalari

  • Android ishlanmasi — layout fayllari, manifest, resurslar (strings, colors, themes)
  • Konfiguratsiya — Maven POM, Ant build, veb konfiguratsiyalar (web.xml)
  • Veb xizmatlar — SOAP, XML-RPC, RSS/Atom lentalari
  • Hujjat aylanishi — SVG, DocBook, Office Open XML
  • Ma’lumot bazalari — SQL Server (XML type), Oracle, PostgreSQL

XML sintaksisi va tuzilishi

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 shaklida yoziladi.

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>

Yaxshi shakllangan XML qoidalari

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.

  1. Bitta ildiz element — hujjat aynan bitta ildizga ega
  2. To’g’ri joylashtirish — teglar kesishmasligi kerak
  3. Yopiladigan teglar — o’z-o’zidan yopiladiganlardan tashqari barcha elementlar uchun majburiy
  4. Katta-kichik harf sezgirligi — <Book> va <book> turli elementlar
  5. Atributlarda tirnoqlar — atribut qiymatlari qo’sh yoki bitta tirnoq ichida

XML nom maydonlari va sxemalari

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 mobil ishlanmada

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.

Android layout namunasi

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
<?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>

Mobil platformalarda XML parsirinqi

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 XML parsirinqi (Kotlin)

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.

kotlin
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
}

Ilovalarda XML misollari

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.

Maven konfiguratsiyasi (POM)

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
<?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 vs JSON: qachon nimani tanlash

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 HTML dan nimasi bilan farq qiladi?

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 nima va u nima uchun kerak?

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 qanday parsir qilinadi?

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 va XSD o’rtasidagi farq nima?

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.

XML da nom maydonlari nima uchun kerak?

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

  • XML — strukturalangan ma’lumotlar uchun foydalanuvchi teglariga ega kengaytiriladigan belgilash tili
  • Qat’iy sintaksis — majburiy yopiladigan teglar, ildiz element, katta-kichik harf sezgirligi
  • Nom maydonlari va XSD sxemalari validatsiyani ta’minlaydi va nom to’qnashuvlarining oldini oladi
  • Android XML dan interfeyslar, resurslar va ilova konfiguratsiyasi uchun foydalanadi
  • Parsirinq XmlPullParser (oqim) yoki DOM (xotiraga) orqali amalga oshiriladi
  • XSLT XML ni HTML, PDF va boshqa formatlarga aylantirish imkonini beradi
  • Kamroq mashhurlik REST API da JSON ga yutqazadi, ammo XML Enterprise va Android da ajralmas

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.

Loyihani muhokama qilish

Shuningdek o'qing