Bosh sahifa Wiki XML

XML

XML — ma’lumotni ierarxik, o‘qiladigan va platformadan mustaqil markup shaklida ifodalash uchun yaratilgan text format. To‘liq nomi Extensible Markup Language. XML foydalanuvchi yoki standart tomonidan belgilangan element va atributlardan foydalanadi.

XML document, configuration, web service, office format, metadata va boshqa tizimlarda qo‘llanadi.

Element

XML ma’lumot elementlar orqali ifodalanadi:

<user>
  <name>Farrukh</name>
</user>

user parent element, name child element.

Element start tag va end tagga ega.

Bo‘sh element qisqa shaklda yozilishi mumkin:

<active />

Root element

XML documentda bitta root element bo‘lishi kerak.

Masalan:

<users>
  <user />
  <user />
</users>

Root tashqarisida ikkinchi top-level element bo‘lsa document well-formed hisoblanmaydi.

Atribut

Element start tagida atribut bo‘lishi mumkin:

<user id="15" active="true">

Atribut nomi unique bo‘lishi kerak.

Element va atribut orasidagi model tanlovi schema hamda semantikaga bog‘liq.

Text

Element ichida text content bo‘lishi mumkin.

Reserved characterlar escape qilinadi:

  • <&lt;;
  • > ayrim contextda;
  • &&amp;;
  • quote atribut ichida mos entity bilan.

Noto‘g‘ri escape documentni buzadi.

Well-formed XML

XML parser documentni qabul qilishi uchun asosiy sintaksis qoidalari bajariladi:

  • bitta root;
  • taglar to‘g‘ri yopilgan;
  • nesting tartibli;
  • atribut quote ichida;
  • nomlar valid;
  • character encoding to‘g‘ri.

Bu well-formed tushunchasi.

Schema’ga moslik bundan alohida.

Case sensitivity

XML element va atribut nomlari case-sensitive.

<User>

va:

<user>

ikki xil nom.

Naming convention contractda bir xil saqlanadi.

XML declaration

Document boshida declaration bo‘lishi mumkin:

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

U XML versiyasi va encodingni ko‘rsatadi.

Actual byte encoding declaration bilan mos bo‘lishi kerak.

Namespace

Namespace turli vocabulary elementlarini ajratadi.

Masalan:

<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

soap prefix local qisqartma.

Element identity prefix emas, namespace URI va local name kombinatsiyasiga bog‘liq.

Default namespace

Prefixsiz elementlar default namespace’ga tegishli bo‘lishi mumkin.

Atributlar uchun namespace qoidasi elementlardan farq qilishi ehtimoli bor.

Parser va XPath query namespace’ni aniq hisobga oladi.

Comment

Comment:

<!-- izoh -->

ko‘rinishida yoziladi.

Comment ichida ayrim character ketma-ketliklariga ruxsat yo‘q.

Sensitive ma’lumot commentga joylashtirilmaydi, chunki document bilan birga tarqaladi.

CDATA

CDATA section ichidagi text markup sifatida parse qilinmaydi:

<![CDATA[
  <example>text</example>
]]>

CDATA contentni shifrlamaydi yoki xavfsiz qilmaydi.

U faqat escape ehtiyojini kamaytiradi.

Processing instruction

XML processing instruction parser yoki applicationga qo‘shimcha instruction berishi mumkin.

Uning semantikasi applicationga bog‘liq.

Har parser noma’lum instructionni bir xil qayta ishlamasligi mumkin.

DTD

Document Type Definition element va entitylarni belgilashi mumkin.

DTD internal yoki external bo‘lishi mumkin.

External entity resolution XXE xavfini yaratgani sabab ko‘p applicationlarda DTD o‘chiriladi.

XML Schema

XSD XML documentning:

qoidalarini belgilaydi.

Valid document well-formed bo‘lishi va schema talablariga mos kelishi kerak.

XPath

XPath XML daraxtidagi node’larni tanlash tili.

Masalan, ma’lum element yoki atributga yo‘l orqali murojaat qilinadi.

User input XPath expressionga concatenation qilinsa XPath Injection xavfi yuzaga kelishi mumkin.

XSLT

XSLT XML documentni boshqa XML, HTML yoki text formatga transform qiladi.

Template va XPath expressionlardan foydalanadi.

Untrusted stylesheet yoki external resource access security xavfini yaratishi mumkin.

Parser turlari

DOM parser butun documentni memory’da daraxt sifatida yaratadi.

Streaming parser elementlarni ketma-ket o‘qiydi.

Katta document uchun streaming memoryni kamaytiradi.

Schema, entity va depth limit ikkala modelda ham muhim.

XML va JSON

XML:

  • namespace;
  • attribute;
  • mixed content;
  • schema va document ecosystem;
  • comment;
  • markup

imkoniyatlariga ega.

JSON object va array modeli bilan web API’da sodda.

Tanlov data va interoperability talabiga bog‘liq.

Security

XML parser quyidagi xavflarni hisobga oladi:

Xavfsiz parser konfiguratsiyasi va size limit ishlatiladi.

Mixed content

XML element text va child elementlarni aralash saqlashi mumkin:

<p>Salom <strong>dunyo</strong>.</p>

Bu document formatlar uchun qulay, lekin oddiy object mappingni murakkablashtiradi. Text node’lar tartibi saqlanishi kerak.

Canonicalization

Digital signature uchun semantik jihatdan bir xil XMLning aniq byte representationi kerak. Namespace, atribut tartibi va bo‘sh joy canonicalization qoidalari bilan normallashtiriladi. Signaturani tekshiruvchi application aynan imzolangan node’ni ishlatadi.

Encoding

UTF-8 keng tarqalgan, ammo XML boshqa encodingni ham e’lon qilishi mumkin. Parser declaration va actual byte’ni mos tekshiradi. Noto‘g‘ri decoding security filter va application talqinini farqlashi mumkin.

Whitespace

XML elementlar orasidagi bo‘sh joy ayrim documentlarda semantik text node bo‘lishi mumkin. Pretty-print qilish mixed contentni o‘zgartirib yubormasligi kerak. Schema va application whitespace’ni qanday talqin qilishi farq qiladi.

Line ending

Turli platformadagi line ending parser uchun odatda normallashtiriladi. Digital signature va byte-level comparisonda canonical representation ishlatiladi.

Bog‘liq tushunchalar

Extensible Markup Language, Element, Attribute, Namespace, XML Schema, DTD, XPath, XSLT, XXE, SOAP, Markup language