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[ և ]]> բաժանիչները դասակարգվում են նշման դասին, իսկ նրանց միջև գտնվող տեքստը՝ բովանդակային։

 Հայտանիշ 
Նշման կառույցները, որոնք սկսվում են < և վերջանում են > կոչվում են հայտանիշեր ()։ Հայտանիշները լինում են 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"

Կա հինգ նախապես սահմանված սուբյեկտներ՝
 < ներկայացնում է <
 > ներկայացնում է >
 & ներկայացնում է &
 &apos; ներկայացնում է '
 " ներկայացնում է "

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