XML նշման լեզուն
**Ընդարձակ նշման լեզու (XML)**, նշման լեզու, որը մի շարք կանոններ է սահմանում՝ փաստաթղթերը մարդու ու համակարգչի համար ընթեռնելի լեզվով կոդավորելու համար։ Այս կանոնները սահմանված են XML 1.0-ում։

XML-ի նախագծման հիմնական նպատականերն են պարզությունը, ընդհանրությունը ու համացանցում օգտագործման հեշտությունը։ XML֊ը տեքստային ինֆորմացիայի ձևաչափ է՝ Յունիկոդի ուժեղ աջակցությամբ։ Չնայած, որ XML-ի դիզայնը հիմնականում կենտրոնանում է փաստաթղթերի վրա, այն շատ է օգտագործվում կամայական տվյալների կառույցների ներայացման համար, օրինակ՝ համացանցում։

Բազմաթիվ ծրագրերի ծրագրավորման ինտերֆեյսը զարգացվել է ստեղծողներին XML տեղեկատվության մշակումն օգնելու համար։ 2009-ից սկսած փաստաթղթերի հարյուրավոր ձևաչափեր են ստեղծվել, ներառած RSS, Atom, SOAP և XHTML։ XML-ի վրա հիմնվածները դարձան հիմնականը բազմաթիվ գրասենյակա-արտադրողականային գործիքների համար, ներառելով Microsoft Officeը (Office Open XML), 
OpenOffice-ը, ԼիբրեՕֆիսը (OpenDocument) և Apple-ի iWork-ը. XML-ը նաև հիմնական լեզու է կոմունիկացիոն պրոտոկոլների համար, ինչպիսին է, օրինակ, XMPP-ն։

Հրամանները
----------

Այս պարբերությունում ներկայացված նյութը չի ներկայացնում բոլոր կառույցների ցանկը XML-ում. այն ներկայացնում է միայն հիմնական կառույցները, որոնք շատ են հանդիպում առօրյաում։

#### Յունիկոդ

XML փաստաթուղթը, ըստ սահմանման, նշանների շարք է։ Գրեթե բոլոր օրինական Յունիկոդի նշաններ կարող են XML դոկումենտի մեջ հանդիպել։

#### Պրոցեսոր և ծրագիրր

Պրոցեսորը վերլուծում է նշումը և տալիս է համակարգված տեղեկատվություն ծրագրին։ Բնորոշիչը պահանջներ է ներկայացնում՝ թե XML պրոցեսորը ինչ պետք է կատարի, և ինչը՝ ոչ, սակայն ծրագրին ոչ մի բան չի կարող անել։

#### Նշում և բովանդակություն

Նիշերը, որոնք պարունակում է XML փաստաթուղթը, լինում են նշման և բովանդակային և կարող են տարբերակվել սովորական սինտակտային կանոններով ծրագրով։ Հիմնականում, շարքերը, որոնք ստեղծում են նշումը, սկսվում են < նիշով և վերջանում > նիշով, կամ սկսվում & նիշով և վերջանում ; նիշով։ Նիշերի այն շարքերը, որոնք նշման չեն՝ բովանդակային են։ Չնայած դրան, CDATA բաժնում <![CDATA[ և ]]> բաժանիչները դասակարգվում են նշման դասին, իսկ նրանց միջև գտնվող տեքստը՝ բովանդակային։

#### Հայտանիշ

Նշման կառույցները, որոնք սկսվում են < և վերջանում են > կոչվում են հայտանիշեր (անգլ.՝ tag)։ Հայտանիշները լինում են 3 տեսակ՝

* Սկսման հայտանիշեր։ Օրինակ՝ <section>
* Վերջացնելու հայտանիշեր։ Օրինակ՝ </section>
* Դատարկ-տարրային հայտանիշեր։ Օրինակ՝ <line-break />

#### Տարր

Տրամաբանական փաստաթղթի մասը, որը կա'մ սկսվում է սկսման հայտանիշով և վերջանում է վերջացնելու հայտանիշով, կա'մ էլ պարունակում է միայն դատարկ-տարրային հայտանիշեր, կոչվում է տարր։ Սկսման և վերջացնելու հայտանիշերի միջև գտնվող նիշերը, եթե առկա են, կոչվում են տարրերի բովանդակություն, և կարող են պարունակել նշում, ներառյալ այլ տարրեր, որոնք կոչվում են երեխա տարրեր։ Տարրի օրինակ է՝ <Greeting>Hello, world.</Greeting>, կամ՝ <line-break />։

#### Բնորոշիչ

Նշման կառույցները, որոնք պարունակում են անուն/արժեք զույգ, որը ունի սկսման և դատարկ-տարրային հայտանիշ, կոչվում են բնորոշիչներ։ Ստորև ներկայացված օրինակում img տարրը ունի երկու բնորոշիչ՝ src և alt։

```
<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>

```

Այլ օրինակ, որտեղ բնարոշիչի անունը number է, իսկ արժեքը 3 է։

```
<step number="3">Connect A to B.</step>

```

XML-ի բնորոշիչը կարող է ունենալ մեկ արժեք և ամեն բնորոշիչը կրող է հայտնվել ամենաշատը մեկ անգամ ամեն տարրում։ Այն դեպքում, երբ մի քանի արժեք է պետք՝ դա պետք է արվի ցանկը լավ կազմված XML բնորոշչի մեջ կոդավորելով։ XML բնորոշիչը՝ այս դեպքում, պետք է ունենա որոշ ձևաչափ։ Սովորաբար դա կամ։ կամ ; նիշերով սահմանվոց ցանկ է, կամ էլ , եթե անհատական արժեքները չեն պարունակում բացատներ, կարող է օգտագործվել բացատներով սահմանված ցանկ։ 

```
<div class="inner greeting-box" >Hello!</div>

```

Այստեղ class բնորոշիչը ունի երկու արժեք՝ inner greeting-box, որը նշում է inner և greeting-box class-անունները։

#### XML-ի հայտարարումը

XML փաստաթղթերը կարող են սկսվել իրենց մասին որոշ տեղեկատվությամբ, ինչպես հետևյալ օրինակում՝ 

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

```

Սիմվոլներ ու խուսափումը
-----------------------

XML փաստաթուղթը բաղկացած է Յունիկոդի սիմվոլների բազմությունից։ Բացի մի քանի հատուկ հանված կառավարող սիմվոլներից, մնացած բոլոր սիմվոլները, որոնք կան Յունիկոդում, կարող են հայտնվել նաև XML փաստաթղում։

### Վավերական սիմվոլներ

Յունիկոդի կոդի միավորները հետևյալ միջակայքերում վավերական են XML 1.0 փաստաթղթի համար։ 

* U+0009, U+000A, U+000D
* U+0020–U+D7FF, U+E000–U+FFFD
* U+10000–U+10FFFF

XML 1.1-ը ընդլայնում է թույլատրվող սիմվոլների շարքը՝ ներառելով բոլոր վերևինները, ինչպես նաև մնացած սիմվոլները U+0001–U+001F միջակայքում։ Նույն ժամանակ, չնայած դրան, այն սահմանում է C0 և C1 կառավարող սիմվոլների շարքը, թույլ տալով միայն U+0009, U+000A, U+000D, U+0085 և պահանջում է, որպեսզի նրանք գրվեն այլ ձևով(Օրինակ՝ U+0001 պետք է գրվի &#x01)։ 
U+0000 կոդի միավորը միակն է, որ չի թույլատրվում ո'չ XML 1.0-ում, ո'չ էլ XML 1.1-ում։

### Կոդավորման հայտնաբերում

Յունիկոդի սիմվոլների շարքը կարող է կոդավորվել բայտերի՝ պահպանման համար կամ մի քանի ձևերով փոխանցման համար, որոնք կոչվում են <<կոդավորումներ>>։ Յունիկոդը ինքն իրենով սահմանում է կոդավորումները, որոնք ընդգրկում են ամբողջ շարքը. ամենատարածվածները ընդգրկում են UTF-8 և UTF-16։ Կան շատ ուրիշ տեքստային կոդավորումներ, որոնք նախորդել են Յունիկոդին, ինչպիսին է ASCII և ISO/IEC 8859։
XML թույլ է տալիս Յունիկոդով սահմանված այլ կոդավորումնեի օգտագործումը և այլ կոդավորումները, որոնց սիմվոլները նույնպես հայտնվում են Յունիկոդում։ XML-ը նաև մեխանիզմ է տրամադրում, որի միջոցով XML պրոցեսորը կարող է հուսալիորեն, առանց որևէ նախնական գիտելիքի, որոշել որ կոդավորումն է օգտագործվում։

### Խուսափումներ

XML ընձեռնում է խուսափելու հարմարանքներ՝ ներառելու համար սիմվոլներ, որոնք ուղիղ ներառելուց խնդիրներ են առաջանում։ Օրինակ՝ 

* < և & սիմվոլները հիմնական սինտակտային մարկերներն են և երբեք չեն հանդիպում CDATA բաժնից դուրս։
* Որոշ սիմվոլների կոդավորումներ աջակցում են միայն Յունիկոդի ենթաբազմություն։ Օրինակ՝ XML փաստաթուղթը ASCII-ում կոդավորելը օրինական է, բայց ASCII-ում բացակայում են Յունիկոդի սիմվոլների համար կոդի միավորներ, ինչպիսին է, օրինակ, é-ն։
* Կարող է անհնար լինել օգտագործել սիմվոլը հեղինակի մեքենայում։
* Որոշ սիմվոլներ ունեն գլիֆեր, որոնք դժվար է տարվերակել այլ սիմվոլներից։ Օրինակներ են՝
	+ Չդադարող բացատ ( ) "" և բացատ ( ) ""
	+ Կիրիլյան մեծտառ А (А) "А" և լատինական մեծատառ A (A) "A"

Կա հինգ նախապես սահմանված սուբյեկտներ՝

* < ներկայացնում է <
* > ներկայացնում է >
* & ներկայացնում է &
* ' ներկայացնում է '
* "ներկայացնում է "

Բոլոր թույլատրելի Յունիկոդի սիմվոլները կարող են ներկայացվել թվային սիմվոլների տեղեկանքով։ Դիտարկենք չինական 中 սիմվոլը, որի թվային կոդը Յունիկոդում տասնվեցական 4E2D, կամ տասական 20,013։