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։

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

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

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


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


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


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

U+0009, U+000A, U+000D
U+0020–U+D7FF, U+E000–U+FFFD
U+10000–U+10FFFFXML 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։ 
&#0;-ը չի թույլատրվում, քանի որ զրոն կառավարող սիմվոլներից է, որոնք ներառված չեն XML-ում, նույնիսկ երբ օգտագործվում են` որպես թվային սիմվոլի տեղեկանք։ Ինչ-որ այլ կոդավորման մեխանիզմ է պահանջվում, օրինակ՝ Base64-ը, այսպիսի սիմվոլները ներկայացնելու համար։


=== Մեկնաբանություններ ===
Մեկնաբանությունները կարող են հայտնվել ամեն տեղ փաստաթղթում՝ նշումից դուրս։ Մեկնաբանությունները չեն կարող հայտնվել XML հայտարարւթյունից առաջ։ Մեկնաբանությունները սկսվում են ։ -- շարքը չի թույլատրվում մեկնաբանությունների ներսում։ Ամպերսանդը չունի ինչ-որ հատուկ նշանակություն մեկնաբանությունների համար։ Վավերական մեկնաբանության օրինակ՝


=== Համաշխարհային օգտագործում ===
XML 1.0 (հինգերորդ հրատարակությունը) և XML 1.1 թույլ են տալիս գրեթե բոլոր Յունիկոդի սիմվոլի օգտագործումը տարրերի անուններում, բնորոշիչներում, մեկնաբանություններում և սիմվոլների տվյալներում։ Հետևյալը լավ կազմված XML փաստաթուղթ է, որը ներառում է և՛ չինական և՛ կիրիլյան սիմվոլներ։