Mundarija (35)
- Bu darsda
- 1. Nega bu kerak?
- 2. Teg, element va atribut
- 2.1 Teg nima?
- 2.2 Elementlar ichma-ich: daraxt
- 2.3 Atribut — tegga qo'shimcha ma'lumot
- 2.4 Prolog va izoh
- 3. Well-formed: XML'ning qat'iy qoidalari
- 3.1 Oltita qoida
- 3.2 Maxsus belgilar
- 3.3 Well-formed va valid — farqi
- 3.4 O'zingiz sinab ko'ring: PowerShell bilan tekshirish
- 4. XML va HTML farqi
- 5. Nomlar fazosi (namespace)
- 5.1 Muammo: bir xil nomli teglar
- 5.2 Yechim: prefiks va xmlns
- 5.3 Prefikssiz namespace
- 6. XML bugun qayerda yashaydi?
- 6.1 sitemap.xml — qidiruv tizimlari uchun xarita
- 6.2 RSS va Atom — yangiliklar lentasi
- 6.3 SVG — XML bilan chizilgan rasm
- 6.4 Yana qayerda?
- 7. Ko'p uchraydigan xatolar
- 7.1 Tegni yopmaslik
- 7.2 Katta-kichik harf farqi
- 7.3 Atribut tirnoqsiz
- 7.4 Ikkita ildiz element
- 7.5 & ni ochiq yozish
- 7.6 Prologdan oldin bo'sh qator
- 8. Mashqlar
- 1-mashq (oson): Xatoni toping
- 2-mashq (o'rta): SVG svetofor
- 3-mashq (qiyin): Sitemap va & tuzog'i
- 9. Real ishda
- Xulosa
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 XMLsitemap.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:
{ "nomi": "O'tkan kunlar", "narx": 45000 }<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:
<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:
<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:
<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 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 doim1.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:
<!-- 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
- Faqat bitta ildiz element. Butun hujjat bitta tashqi element ichida bo'ladi.
- 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. - 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. - Katta-kichik harf farqlanadi.
<Kitob>va<kitob>— ikki xil teg.<Kitob>...</kitob>— xato. - Atribut qiymati tirnoqda.
id="101"yokiid='101'— ikkalasi to'g'ri.id=101— xato. <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 |
|---|---|---|
< |
< |
Matnda doim |
& |
& |
Matnda doim |
> |
> |
Ixtiyoriy, lekin xavfsiz |
" |
" |
"..." atribut ichida |
' |
' |
'...' atribut ichida |
<dokon>Ali & Vali</dokon>
<shart>narx < 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 < 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: < — < 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 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:
[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:
xml kutubxona
--- ---------
version="1.0" encoding="UTF-8" kutubxonaBundan keyin fayl ichidagi qiymatlarni nuqta bilan "ichkariga kirib" olish mumkin:
$k = [xml](Get-Content kutubxona.xml -Raw)
$k.kutubxona.kitob.nomi
$k.kutubxona.kitob.idO'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:
<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.
<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 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:
Sitemap: https://example.com/sitemap.xmlrobots.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 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:
<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.svgfaylda u majburiy.<circle>— doira.cxvacy— 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:
.docxva.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,.kmlfayllari (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
<mahsulot>
<narx valyuta="USD">200
</mahsulot>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
<Kitob>Alpomish</kitob>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
<narx valyuta=USD>200</narx>'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
<kitob>Alpomish</kitob>
<kitob>Kuntug'mish</kitob>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
<dokon>Ali & Vali</dokon>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 & Vali.
7.6 Prologdan oldin bo'sh qator
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.
<mahsulot>
<nomi>Monitor</nomi>
<narx valyuta=USD>200
</mahsulot>Yechim
valyuta=USD— qiymat tirnoqsiz (5-qoida). To'g'risi:valyuta="USD".<narx>yopilmagan (2-qoida).200dan keyin</narx>kerak.
<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
<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 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&tur=taksi</loc>
</url>
</urlset>Asosiy tuzoq — uchinchi manzildagi &. Uni ochiq yozsangiz, An error occurred while parsing EntityName xatosi chiqadi. & 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.xmlni 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 hamsitemap.xmlfayli 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&—<va&. - 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.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!