IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal36/40-dars17 daqiqa
Mundarija (35)

XML va uning vorislari: teglar, sitemap.xml, RSS va SVG

Qisqacha: XML — ma'lumotni teglar orasiga o'rab yozadigan matnli format: <narx>45000</narx>. U HTML'ning qat'iy "qarindoshi": bitta teg yopilmasa ham, butun fayl o'qilmaydi. Bugun ma'lumot almashishda JSON ko'proq ishlatiladi, lekin XML sitemap.xml, RSS/Atom lentalari va SVG rasmlarida har kuni ishlaydi.

Bu darsda

  • Teg, element, atribut va prolog nima ekanini tushuntira olasiz.
  • XML faylni "well-formed" (to'g'ri tuzilgan) qiladigan 6 ta qoidani bilasiz.
  • XML faylni PowerShell'da tekshirib, xato xabarini o'qiy olasiz.
  • XML va HTML farqini, namespace nega kerakligini ayta olasiz.
  • sitemap.xml, RSS/Atom va SVG fayllarini o'qiy olasiz va oddiysini o'zingiz yozasiz.

Oldin bilishingiz kerak: Matnli va binar fayllar, JSON: dasturlar tili, YAML, TOML, INI va .env.


1. Nega bu kerak?

Oldingi darslarda JSON va YAML'ni ko'rdingiz. Ularda ma'lumot "kalit: qiymat" ko'rinishida yoziladi. Endi boshqacha uslub bilan tanishamiz: ma'lumot nomlangan "yorliqlar" orasiga o'raladi.

Bir kitob haqidagi ma'lumot JSON'da va XML'da qanday ko'rinishini solishtiring:

json
{ "nomi": "O'tkan kunlar", "narx": 45000 }
xml
<kitob>
  <nomi>O'tkan kunlar</nomi>
  <narx>45000</narx>
</kitob>

Ma'lumot bir xil, faqat yozilishi boshqa. XML uzunroq, lekin har bir qiymat qayerda boshlanib, qayerda tugashi juda aniq ko'rinadi.

XML (eXtensible Markup Language — "kengaytiriladigan belgilash tili") 1998-yilda paydo bo'lgan. Uni W3C chiqargan — internet standartlarini yozadigan xalqaro tashkilot. O'sha paytda turli dasturlar ma'lumot almashishi uchun yagona, qat'iy format kerak edi. XML shu bo'shliqni to'ldirdi.

Bugun yangi loyihalar ma'lumot almashish uchun ko'proq JSON tanlaydi. Lekin XML yo'qolmadi, u quyidagi joylarda yashayapti:

Qayerda Fayl Kim o'qiydi
Sayt sahifalari ro'yxati sitemap.xml Google, Bing, Yandex
Yangiliklar lentasi RSS / Atom Yangilik ilovalari, botlar
Ikonka va logotiplar .svg Brauzer
Word va Excel hujjatlari .docx, .xlsx Office dasturlari

Shuning uchun dasturchi XML'ni yozishi shart bo'lmasa ham, uni o'qiy olishi kerak.


2. Teg, element va atribut

2.1 Teg nima?

Teg (tag) — burchakli qavs ichidagi nom: <narx>. U ma'lumotning boshlanishi va tugashini belgilaydi. Xuddi daftardagi bo'lim sarlavhasi va uning oxiridagi chiziq kabi.

Teglar juft bo'ladi:

  • <narx> — ochuvchi teg.
  • </narx> — yopuvchi teg. Farqi bitta: nom oldida / belgisi bor.

Ochuvchi teg, yopuvchi teg va ular orasidagi hamma narsa birga element deb ataladi:

xml
<narx>45000</narx>

Bu yerda element nomi — narx, ichidagi qiymat — 45000.

XML'ning eng muhim xususiyati — teg nomlarini o'zingiz o'ylab topasiz. <kitob>, <taom>, <talaba> — istalgan nom. Shuning uchun u "kengaytiriladigan" deyiladi.

2.2 Elementlar ichma-ich: daraxt

Element ichida boshqa elementlar ham bo'lishi mumkin. Kutubxonadagi ikki kitobni yozamiz:

xml
<kutubxona>
  <kitob>
    <nomi>O'tkan kunlar</nomi>
    <muallif>Abdulla Qodiriy</muallif>
  </kitob>
  <kitob>
    <nomi>Alpomish</nomi>
    <muallif>Xalq dostoni</muallif>
  </kitob>
</kutubxona>

Bu tuzilma Fayl tizimi darsidagi papkalar daraxtiga o'xshaydi. kutubxona — eng katta papka, kitob lar — uning ichidagi papkalar, nomi va muallif — ulardagi fayllar:

flowchart TD
  K["kutubxona (ildiz)"] --> B1["kitob"]
  K --> B2["kitob"]
  B1 --> N1["nomi: O'tkan kunlar"]
  B1 --> M1["muallif: Abdulla Qodiriy"]
  B2 --> N2["nomi: Alpomish"]
  B2 --> M2["muallif: Xalq dostoni"]

Eng tashqi element — kutubxona — ildiz element (root element) deyiladi. Qolgan hamma element uning ichida turadi.

Ichki elementlar odatda 2 ta probel bilan suriladi. Bu faqat o'qish qulayligi uchun: XML uchun suriluvchi bo'shliqning ma'nosi yo'q. YAML'dan farqli, bu yerda bo'shliq xato keltirib chiqarmaydi.

2.3 Atribut — tegga qo'shimcha ma'lumot

Ba'zan elementga kichik qo'shimcha ma'lumot yopishtirish kerak. Masalan, kitobning raqami yoki narxning valyutasi. Buning uchun atribut (attribute) ishlatiladi:

xml
<kitob id="101" janr="badiiy">
  <nomi>O'tkan kunlar</nomi>
  <narx valyuta="UZS">45000</narx>
</kitob>

Atribut ochuvchi teg ichida yoziladi: nom="qiymat". Bu yerda uchta atribut bor: id, janr va valyuta.

Qachon atribut, qachon ichki element? Oddiy odat bor:

  • Asosiy ma'lumot (kitob nomi, narxi) — element bo'lib yoziladi.
  • Shu ma'lumot haqidagi qisqa izoh (raqami, valyutasi, tili) — atribut bo'ladi.

Bu qat'iy qonun emas, lekin ko'p XML fayllar shunday tuzilgan.

Tekshirib ko'ring: <taom narx="25000">Palov</taom> qatorida element nomi, atribut va element qiymati qaysi?

Javob

Element nomi — taom. Atribut — narx="25000" (nomi narx, qiymati 25000). Element qiymati — Palov, u ochuvchi va yopuvchi teg orasida turibdi. Atribut har doim ochuvchi teg ichida bo'ladi.

2.4 Prolog va izoh

Ko'p XML fayllar mana shu qator bilan boshlanadi:

xml
<?xml version="1.0" encoding="UTF-8"?>

Bu prolog (aniqrog'i, XML e'lon qatori). U faylni o'qiydigan dasturga ikki narsani aytadi:

  • version="1.0" — XML'ning qaysi versiyasi. Amalda doim 1.0.
  • encoding="UTF-8" — fayl qaysi kodlashda saqlangan. Matn kodlash darsidagi UTF-8 aynan shu.

Prolog majburiy emas: usiz ham XML to'g'ri bo'lishi mumkin. Lekin yozib qo'yish yaxshi odat. Agar yozsangiz, u faylning eng birinchi belgisi bo'lishi shart — undan oldin hatto bo'sh qator ham bo'lmasin.

XML'da izoh <!-- va --> orasiga yoziladi. Uni dastur e'tiborsiz qoldiradi:

xml
<!-- Bu qatorni dastur o'qimaydi -->
<narx>45000</narx>

Tekshirib ko'ring: Faylning birinchi qatori bo'sh, prolog esa ikkinchi qatorda. Bu fayl to'g'rimi?

Javob

Yo'q. Prolog yozilgan bo'lsa, u faylning eng boshida turishi kerak. Undan oldin bo'sh qator yoki probel bo'lsa, XML o'quvchi dastur xato beradi. Bu xatoning aniq matnini "Ko'p uchraydigan xatolar" bo'limida ko'ramiz.


3. Well-formed: XML'ning qat'iy qoidalari

JSON darsida bitta ortiqcha vergul butun faylni buzganini ko'rdingiz. XML ham xuddi shunday qat'iy. Qoidalarga to'liq amal qilgan XML fayl well-formed ("to'g'ri tuzilgan") deyiladi.

XML faylni o'qiydigan dastur parser deyiladi (o'zbekcha: "tahlilchi"). Parser bitta qoida buzilganini ko'rsa, butun faylni o'qishdan bosh tortadi. "Taxminan tushundim" degan narsa yo'q.

3.1 Oltita qoida

  1. Faqat bitta ildiz element. Butun hujjat bitta tashqi element ichida bo'ladi.
  2. Har bir teg yopiladi. <narx> ochilgan bo'lsa, </narx> ham bo'lishi shart. Ichi bo'sh element qisqa yoziladi: <chegirma/> — bu <chegirma></chegirma> bilan bir xil.
  3. Teglar kesishmaydi. Oxirgi ochilgan teg birinchi yopiladi: <a><b>...</b></a> to'g'ri, <a><b>...</a></b> xato. Xuddi qutini qutiga solgandek: ichkisini yopmay turib, tashqisini yopa olmaysiz.
  4. Katta-kichik harf farqlanadi. <Kitob> va <kitob> — ikki xil teg. <Kitob>...</kitob> — xato.
  5. Atribut qiymati tirnoqda. id="101" yoki id='101' — ikkalasi to'g'ri. id=101 — xato.
  6. < va & matn ichida ochiq yozilmaydi. Ular o'rniga maxsus yozuv ishlatiladi (pastdagi "Maxsus belgilar" bo'limida).

Nomlash qoidasi ham bor: teg nomi raqam bilan boshlanmaydi va ichida bo'sh joy yoki apostrof bo'lmaydi. <2kitob>, <kitob nomi> va <yog'och> — xato. <kitob2> va <kitob_nomi> — to'g'ri.

3.2 Maxsus belgilar

"Ali & Vali" do'koni nomini XML'ga yozmoqchisiz. Muammo: & belgisi XML'da maxsus ma'noga ega. < ham shunday — parser uni yangi teg boshlanishi deb o'ylaydi.

Shuning uchun bu belgilar o'rniga entity (maxsus yozuv) ishlatiladi:

Belgi XML'da yoziladi Qachon shart
< &lt; Matnda doim
& &amp; Matnda doim
> &gt; Ixtiyoriy, lekin xavfsiz
" &quot; "..." atribut ichida
' &apos; '...' atribut ichida
xml
<dokon>Ali &amp; Vali</dokon>
<shart>narx &lt; 50000</shart>

Parser buni o'qiganda Ali & Vali va narx < 50000 deb tushunadi.

3.3 Well-formed va valid — farqi

Siz yana bir so'zni uchratasiz: valid ("yaroqli"). Well-formed — faylning yozilishi to'g'ri. Valid — fayl oldindan kelishilgan tuzilma (sxema) ga ham mos: masalan, "har kitobda albatta nomi bo'lsin". Sxemalar (DTD, XSD) katta tizimlarda ishlatiladi. Hozir bilish shart emas — asosiysi well-formed.

Tekshirib ko'ring: Quyidagi qatorlardan qaysi biri well-formed emas va nega?

xml
<ism>Malika</ism>
<Ism>Malika</ism>
<yosh qiymat=20/>
<izoh>Narx &lt; 100</izoh>
Javob

Ikkinchi qator: ochuvchi Ism katta harf bilan, yopuvchi ism kichik harf bilan — XML ular ikki xil teg deb hisoblaydi. Uchinchi qator: 20 tirnoqsiz, qiymat="20" bo'lishi kerak. Birinchi va to'rtinchi qatorlar to'g'ri: &lt; — < belgisining xavfsiz yozuvi.

3.4 O'zingiz sinab ko'ring: PowerShell bilan tekshirish

XML to'g'riligini tekshirish uchun maxsus dastur o'rnatish shart emas. PowerShell asoslari darsida tanishgan PowerShell'da [xml] degan tayyor imkoniyat bor. U matnni XML deb o'qishga urinadi. Xato bo'lsa — aniq joyini aytadi.

Matn muharririda kutubxona.xml faylini yarating va ichiga yozing:

xml
<?xml version="1.0" encoding="UTF-8"?>
<kutubxona>
  <kitob id="101" janr="badiiy">
    <nomi>O'tkan kunlar</nomi>
    <muallif>Abdulla Qodiriy</muallif>
    <narx valyuta="UZS">45000</narx>
  </kitob>
</kutubxona>

So'ng shu papkada PowerShell oching va yozing:

powershell
[xml](Get-Content kutubxona.xml -Raw)
  • Get-Content kutubxona.xml -Raw — faylni bitta butun matn qilib o'qiydi.
  • [xml](...) — shu matnni XML deb tahlil qiladi.

Fayl to'g'ri bo'lsa, PowerShell prolog va ildiz elementni ko'rsatadi:

text
xml                            kutubxona
---                            ---------
version="1.0" encoding="UTF-8" kutubxona

Bundan keyin fayl ichidagi qiymatlarni nuqta bilan "ichkariga kirib" olish mumkin:

powershell
$k = [xml](Get-Content kutubxona.xml -Raw)
$k.kutubxona.kitob.nomi
$k.kutubxona.kitob.id
text
O'tkan kunlar
101

$k — PowerShell o'zgaruvchisi, unga o'qilgan XML saqlandi. Elementga ham, atributga ham nomi bilan murojaat qilinadi.

Maslahat: XML faylni brauzerda (Chrome, Edge, Firefox) ochsangiz ham, u daraxt ko'rinishida chiqadi. Xato bo'lsa, brauzer sahifa tepasida qaysi qatorda xato borligini yozadi.


4. XML va HTML farqi

HTML — veb-sahifalar yoziladigan til. Brauzer HTML faylni o'qib, ekranda sarlavha, matn va tugmalarni chizadi. Uni 04-qismda to'liq o'rganamiz — hozir bitta misol yetarli:

html
<h1>Choyxona menyusi</h1>
<p>Palov — 25 000 so'm<br>
Somsa — 8 000 so'm</p>

Ko'ryapsizmi, HTML ham teglardan iborat. Lekin <br> (yangi qatorga o'tish) yopilmagan. HTML'da bu to'g'ri, XML'da esa xato bo'lardi.

Ikkala til bir xil g'oyadan — teglar bilan belgilashdan — kelib chiqqan. Lekin maqsadi boshqa:

Xususiyat HTML XML
Vazifasi Ma'lumotni ekranda ko'rsatish Ma'lumotni saqlash va uzatish
Teglar Tayyor ro'yxat: <h1>, <p> Istalgan nom, o'zingiz tuzasiz
Xatoga munosabat Kechiradi, baribir chizadi Qat'iy: o'qishni to'xtatadi
Katta-kichik harf <P> va <p> bir xil <P> va <p> boshqa-boshqa

Nega HTML kechirimli? Chunki internetda xato yozilgan millionlab sahifa bor. Brauzer har bir kichik xatoda sahifani ko'rsatmay qo'ysa, internetdan foydalanib bo'lmasdi. XML esa dasturlar uchun: bank yoki soliq tizimi "taxminan to'g'ri" ma'lumot bilan ishlamasligi kerak.

Tekshirib ko'ring: HTML'da <br> yopilmasa ham ishlaydi. XML'da xuddi shunday bo'sh elementni qanday yozasiz?

Javob

O'zini o'zi yopadigan qilib: <br/>. Oxiridagi / "bu element shu yerda tugadi" degani. Qisqa yozuv <br></br> bilan bir xil.


5. Nomlar fazosi (namespace)

5.1 Muammo: bir xil nomli teglar

Maktab o'quvchilarga daftar sotib oldi. Maktab tizimi va do'kon tizimi o'z XML ma'lumotini bitta faylga birlashtirdi. Ikkalasida ham <kod> degan teg bor:

  • Maktab tizimida <kod> — o'quvchining shaxsiy raqami.
  • Do'kon tizimida <kod> — mahsulotning shtrix-kodi.

Faylni o'qigan dastur <kod> ni ko'rib, qaysi biri ekanini bilmaydi. Bu — nomlar to'qnashuvi.

5.2 Yechim: prefiks va xmlns

Nomlar fazosi (namespace) — teg nomi oldiga "qaysi tizimdan" degan belgi qo'yish usuli. Xuddi maktabda ikki Ali bo'lsa, "7-A sinfdagi Ali" va "9-B sinfdagi Ali" deganingiz kabi.

xml
<xarid xmlns:maktab="https://example.com/maktab"
       xmlns:dokon="https://example.com/dokon">
  <maktab:kod>OQ-1024</maktab:kod>
  <dokon:kod>4780000123456</dokon:kod>
</xarid>

Qatorma-qator:

  • xmlns:maktab="..." — "maktab: prefiksi mana shu nomlar fazosiga tegishli" degan e'lon. xmlns — "XML namespace" qisqartmasi.
  • <maktab:kod> — o'quvchining raqami.
  • <dokon:kod> — daftarning shtrix-kodi.

Manzil (https://example.com/maktab) — faqat noyob nom. Parser u sahifani ochmaydi, internetga ham ulanmaydi. Manzil ko'rinishida yozilishining sababi — domen egasi bitta bo'lgani uchun nom boshqa hech kimnikiga o'xshamaydi.

5.3 Prefikssiz namespace

Ba'zan xmlns prefikssiz yoziladi: xmlns="...". Bu "shu element va uning ichidagi hamma teglar shu nomlar fazosida" degani. Bu ko'rinishni keyingi bo'limda sitemap va SVG fayllarida ko'rasiz.

Tekshirib ko'ring: Parser xmlns:maktab="https://example.com/maktab" ni ko'rganda o'sha sahifani internetdan yuklab oladimi?

Javob

Yo'q. Bu manzil faqat noyob nom vazifasini bajaradi. Internet bo'lmasa ham fayl muammosiz o'qiladi.


6. XML bugun qayerda yashaydi?

6.1 sitemap.xml — qidiruv tizimlari uchun xarita

Google, Bing va Yandex saytdagi sahifalarni topish uchun qidiruv botlari yuboradi — saytni avtomatik aylanib chiqadigan dasturlar. Sayt egasi ularga yordam berish uchun sitemap.xml faylini qo'yadi: "Mening saytimda mana shu sahifalar bor".

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-09-27</lastmod>
  </url>
  <url>
    <loc>https://example.com/menyu</loc>
    <lastmod>2026-09-20</lastmod>
  </url>
</urlset>
  • <urlset> — ildiz element. xmlns — sitemap standartining nomlar fazosi.
  • <url> — bitta sahifa.
  • <loc> — sahifaning to'liq manzili (majburiy).
  • <lastmod> — sahifa oxirgi marta qachon o'zgargani (ixtiyoriy).

Eski maqolalarda <changefreq> (qanchalik tez-tez o'zgaradi) va <priority> (muhimlik darajasi) teglarini ham ko'rasiz. Google ularni e'tiborsiz qoldiradi. <lastmod> ni esa faqat sana haqiqiy bo'lsa hisobga oladi.

Bitta sitemap faylida ko'pi bilan 50 000 ta manzil bo'ladi va hajmi siqilmagan holda 50 MB dan oshmasligi kerak. Katta saytlar bir nechta sitemap yozadi va ularni bitta "sitemap indeksi" fayliga jamlaydi.

Odatda fayl saytning ildizida turadi: https://example.com/sitemap.xml. Uning manzili robots.txt faylida ham yoziladi:

text
Sitemap: https://example.com/sitemap.xml

robots.txt — botlarga "qaysi sahifaga kirish mumkin" deb aytadigan oddiy matnli fayl. Saytni qidiruvda yuqoriga chiqarish ishi SEO deyiladi. Uni SEO uchun HTML amaliyoti darsida batafsil ko'ramiz.

6.2 RSS va Atom — yangiliklar lentasi

Sizga yoqqan 10 ta sayt bor, deylik. Har birini kuniga kirib, "yangi maqola chiqdimi?" deb tekshirish charchatadi. Buning o'rniga sayt lenta (feed) chiqaradi — oxirgi maqolalar ro'yxati yozilgan XML fayl. Maxsus ilova yoki Telegram bot shu faylni vaqti-vaqti bilan o'qib, yangisi chiqsa sizga xabar beradi.

Lentaning ikki asosiy formati bor. RSS 2.0 ko'rinishi:

xml
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Choyxona yangiliklari</title>
    <link>https://example.com/</link>
    <description>Yangi taomlar va aksiyalar</description>
    <item>
      <title>Yangi taom: qozon kabob</title>
      <link>https://example.com/yangilik/1</link>
      <pubDate>Sun, 27 Sep 2026 09:00:00 +0500</pubDate>
    </item>
  </channel>
</rss>
  • <channel> — lentaning o'zi: nomi, sayt manzili va tavsifi.
  • <item> — bitta yangilik. Har yangi maqola uchun yangi <item> qo'shiladi.
  • <pubDate> — e'lon qilingan vaqt (+0500 — Toshkent vaqti).

Atom — keyinroq (2005-yilda) chiqqan, qoidalari aniqroq format. Unda teglar boshqacha nomlanadi: <feed>, <entry>, <updated>. Ma'nosi esa o'sha.

RSS 2.0 Atom 1.0
Ildiz <rss> → <channel> <feed>
Bitta yozuv <item> <entry>
Ko'p uchraydi Bloglar, podkastlar YouTube, GitHub lentalari

2026-yilda ham ikkalasi ishlatiladi. Podkastlar (audio ko'rsatuvlar) deyarli hammasi RSS 2.0 da tarqaladi. YouTube kanallari va GitHub loyihalarining lentalari esa Atom formatida.

6.3 SVG — XML bilan chizilgan rasm

SVG (Scalable Vector Graphics) — rasmni nuqtalar bilan emas, shakllar ro'yxati bilan saqlaydigan format. "Markazi shu yerda, radiusi shuncha bo'lgan yashil doira" — shunday. Va bu ro'yxat XML'da yoziladi:

xml
<svg width="100" height="100"
     xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="40" fill="green"/>
</svg>
  • <svg> — ildiz element: 100 × 100 o'lchamli "kanvas" (chizish maydoni).
  • xmlns — "bu SVG" degan nomlar fazosi. Alohida .svg faylda u majburiy.
  • <circle> — doira. cx va cy — markaz koordinatasi, r — radius, fill — rang.

Shakllar ro'yxat bo'lgani uchun SVG rasmni istalgancha kattalashtirsangiz ham xiralashmaydi. Shuning uchun saytlardagi ikonka va logotiplarning ko'pi SVG'da. Rasm formatlarini, SVG'ning qachon qulayligini keyingi darslardan birida solishtiramiz.

6.4 Yana qayerda?

Bu nomlarni eslab qolish shart emas — faqat XML qanchalik keng tarqalganini ko'ring:

  • .docx va .xlsx — aslida ichida XML fayllar turgan ZIP arxiv. Arxivlar haqida alohida darsda gaplashamiz.
  • Android ilovalari — ekran tuzilishi ko'pincha XML'da yoziladi.
  • Java va C# loyihalari — sozlama fayllari (pom.xml, .csproj) XML'da.
  • Xarita va GPS — .gpx, .kml fayllari (yugurish marshruti, xaritadagi belgilar).

Tekshirib ko'ring: Sitemap'dagi qaysi teg Google uchun eng foydali: <priority>, <changefreq> yoki <lastmod>?

Javob

<lastmod> — lekin faqat sana haqiqiy bo'lsa. Google <priority> va <changefreq> ni e'tiborsiz qoldiradi. Hamma sahifaga "bugun o'zgardi" deb yozsangiz, Google <lastmod> ga ham ishonmay qo'yadi.


7. Ko'p uchraydigan xatolar

Quyidagi xato matnlari PowerShell'dagi [xml] tekshiruvidan olingan. PowerShell avval Cannot convert value "..." deb faylingiz matnini qaytaradi. Eng muhim qismi Error: so'zidan keyin keladi — o'shani o'qing.

7.1 Tegni yopmaslik

xml
<mahsulot>
  <narx valyuta="USD">200
</mahsulot>
text
The 'narx' start tag on line 2 position 4 does not match the end tag of 'mahsulot'. Line 3, position 3.

Tarjimasi: "2-qatordagi narx ochuvchi tegi mahsulot yopuvchi tegiga mos kelmadi". Parser </narx> ni kutayotgan edi, lekin </mahsulot> ni uchratdi. Xabarda ikkinchi joy ko'rsatilgan bo'lsa ham, xato birinchi tilga olingan tegda: 200 dan keyin </narx> qo'shing.

7.2 Katta-kichik harf farqi

xml
<Kitob>Alpomish</kitob>
text
The 'Kitob' start tag on line 1 position 2 does not match the end tag of 'kitob'. Line 1, position 18.

Xato matni avvalgisi bilan bir xil. Chunki XML uchun Kitob va kitob — ikki boshqa teg. Demak, Kitob yopilmagan. Tuzatish: ikkalasini bir xil yozing.

7.3 Atribut tirnoqsiz

xml
<narx valyuta=USD>200</narx>
text
'USD' is an unexpected token. The expected token is '"' or '''. Line 1, position 15.

Tarjimasi: "USD — kutilmagan so'z. Kutilgan belgi " yoki ' edi". Parser = dan keyin tirnoq kutgan. Tuzatish: valyuta="USD".

7.4 Ikkita ildiz element

xml
<kitob>Alpomish</kitob>
<kitob>Kuntug'mish</kitob>
text
This document already has a 'DocumentElement' node.

Tarjimasi: "Bu hujjatda ildiz element allaqachon bor". DocumentElement — PowerShell'da ildiz element shunday ataladi. Tuzatish: ikkalasini bitta <kitoblar> ichiga o'rang.

7.5 & ni ochiq yozish

xml
<dokon>Ali & Vali</dokon>
text
An error occurred while parsing EntityName. Line 1, position 13.

Tarjimasi: "Entity nomini o'qishda xato". Parser & ni ko'rib, undan keyin amp; yoki lt; kabi entity nomi kelishini kutdi. Tuzatish: Ali &amp; Vali.

7.6 Prologdan oldin bo'sh qator

text
Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it.

Tarjimasi: "Kutilmagan XML e'loni. U hujjatdagi birinchi narsa bo'lishi kerak, undan oldin bo'sh joy bo'lmasin". Tuzatish: fayl boshidagi bo'sh qatorlarni o'chiring. Bu xato ko'pincha matnni boshqa joydan nusxalaganda chiqadi.


8. Mashqlar

1-mashq (oson): Xatoni toping

Quyidagi XML parchasida 2 ta xato bor. Ularni toping va tuzating. Ishora: well-formed'ning oltita qoidasini birma-bir tekshiring.

xml
<mahsulot>
  <nomi>Monitor</nomi>
  <narx valyuta=USD>200
</mahsulot>
Yechim
  1. valyuta=USD — qiymat tirnoqsiz (5-qoida). To'g'risi: valyuta="USD".
  2. <narx> yopilmagan (2-qoida). 200 dan keyin </narx> kerak.
xml
<mahsulot>
  <nomi>Monitor</nomi>
  <narx valyuta="USD">200</narx>
</mahsulot>

PowerShell'da [xml](Get-Content mahsulot.xml -Raw) bilan tekshirsangiz, endi xato chiqmaydi.

2-mashq (o'rta): SVG svetofor

Matn muharririda (Notepad yoki VS Code) svetofor.svg faylini yarating. Uni ikki marta bosib brauzerda oching. Fayl 3 ta doiradan iborat svetofor chizsin: yuqorida qizil (red), o'rtada sariq (yellow), pastda yashil (green).

Ishora: kanvas width="100" height="300" bo'lsin. Har doira uchun cx="50" va r="40" qoladi, faqat cy o'zgaradi: 50, 150, 250. Doira qanday yozilishini SVG bo'limidagi misoldan oling. Qora fon xohlasangiz, doiralardan oldin to'rtburchak qo'shing: <rect width="100" height="300" fill="black"/>.

Yechim
xml
<svg width="100" height="300"
     xmlns="http://www.w3.org/2000/svg">
  <rect width="100" height="300" fill="black"/>
  <circle cx="50" cy="50" r="40" fill="red"/>
  <circle cx="50" cy="150" r="40" fill="yellow"/>
  <circle cx="50" cy="250" r="40" fill="green"/>
</svg>

<rect> — to'rtburchak, u qora fon bo'lib turibdi (ixtiyoriy). Keyingi uchta <circle> bir-biridan 100 birlik pastda. SVG'da cy pastga qarab o'sadi: 0 — eng tepa.

Rasm chiqmasa, fayl nomi svetofor.svg.txt bo'lib qolmaganini tekshiring. Fayl tizimi darsida kengaytmalarni ko'rsatishni yoqqan edingiz.

3-mashq (qiyin): Sitemap va & tuzog'i

example.com sayti uchun sitemap.xml yozing. Unda 3 ta sahifa bo'lsin:

  • https://example.com/ — 2026-09-27 da o'zgargan.
  • https://example.com/menyu — 2026-09-20 da o'zgargan.
  • https://example.com/izla?shahar=toshkent&tur=taksi — sana yo'q.

Faylni PowerShell'da [xml] bilan tekshiring. Ishora: uchinchi manzilda & bor — "Maxsus belgilar" bo'limini eslang.

Yechim
xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-09-27</lastmod>
  </url>
  <url>
    <loc>https://example.com/menyu</loc>
    <lastmod>2026-09-20</lastmod>
  </url>
  <url>
    <loc>https://example.com/izla?shahar=toshkent&amp;tur=taksi</loc>
  </url>
</urlset>

Asosiy tuzoq — uchinchi manzildagi &. Uni ochiq yozsangiz, An error occurred while parsing EntityName xatosi chiqadi. &amp; yozilsa, parser uni baribir & deb o'qiydi — Google ham to'g'ri manzilni oladi. Uchinchi sahifada <lastmod> yo'q — bu to'g'ri, chunki u ixtiyoriy.


9. Real ishda

  • Sayt yasaganda: sayt yasash vositalari (masalan, Next.js — kursda unga alohida qism bor) sitemap.xml ni o'zi yaratadi. Lekin Google Search Console (Google'ning sayt egalari uchun paneli) xato ko'rsatsa, faylni ochib o'qiy olishingiz kerak. Siz o'qiyotgan IlmHamroh saytining ham sitemap.xml fayli bor.
  • Telegram kanallar: ko'p yangilik kanallari RSS lentani o'qiydigan bot orqali avtomatik post joylaydi.
  • Frontend: ikonkalar SVG'da keladi. Dasturchi ko'pincha SVG kodini to'g'ridan-to'g'ri ochib, rangini yoki o'lchamini o'zgartiradi.
  • Integratsiyalar: ba'zi banklar, soliq va logistika tizimlari hamon XML bilan ma'lumot almashadi. Eski katta tizimga ulanadigan dasturchi XML'ni o'qishi shart.
  • Intervyuda: "JSON va XML farqi nima?" — ko'p beriladigan savol. Qisqa javob: JSON ixchamroq va JavaScript'ga yaqin; XML'da atribut, namespace va sxema bor, lekin u uzunroq.

Xulosa

  • XML ma'lumotni teglar orasiga yozadi: <narx valyuta="UZS">45000</narx>. Teg nomlarini o'zingiz tanlaysiz.
  • Elementlar daraxt bo'lib joylashadi, eng tashqisi — bitta ildiz element.
  • Prolog <?xml ...?> ixtiyoriy, lekin yozilsa — faylning eng boshida.
  • Well-formed: bitta ildiz, har teg yopiladi, teglar kesishmaydi, harf farqlanadi, atribut tirnoqda, < va & — &lt; va &amp;.
  • Namespace bir xil nomli teglarni prefiks bilan ajratadi; manzil — faqat noyob nom.
  • Bugun XML sitemap.xml, RSS/Atom lentalari, SVG va Office hujjatlarida yashaydi.

Keyingi dars: Markdown: dasturchi yozuv tili — teglarsiz, oddiy belgilar bilan chiroyli hujjat yozishni va README fayllarini tuzishni o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
XML va uning vorislari: teglar, sitemap.xml, RSS va SVG — IlmHamroh