(angl. „eXtensible Markup Language“) yra „žymėjimo“ kalba dokumentams, kuriuose saugoma struktūrizuota tekstinė informacija.
W3C patvirtino standartą 1998 metais. Iš esmės tai — seniai pramonėje vartojamos kalbos poaibis, specialiai pritaikytas naudojimui internete. Todėl kiekvienas dokumentas yra ir dokumentas.

Duomenų modelis
Svarbu suvokti, kad duomenų modelis yra medis, sudarytas iš elementų, atributų ir kitokio tipo mazgų. Tekstinė sintaksė - viso labo tik duomenų modelio serializacija.

Elementai ir žymės
Norima struktūra išgaunama naudojantis elementais, kurie tekstine sintakse atvaizduojami kaip žymės (angl. „tags“). standartas nustato bendras jų sudarymo taisykles, bet neapibrėžia konkretaus elementų rinkinio ar jų reikšmės. Tai apibrėžia kiti šeimos standartai (žr. XHTML, XSLT ir t.t.). galima pavadinti „kalba kitoms kalboms aprašyti“.
Kiekviena žymė prasideda simboliu < ir baigiasi simboliu >. Jų viduje užrašomas elemento vardas ir (galbūt) papildoma informacija, pavyzdžiui, atributai ar vardų sritys. Elementų vardai yra „case-sensitive“. Yra pradžios bei pabaigos žymės. Pabaigos žymėje prieš jos vardą rašomas simbolis /. Elemento viduje taip pat gali būti kiti elementai. Pavyzdys:

<elementas>
  tekstas 1
  <vidinis_elementas>
	tekstas 2
  </vidinis_elementas>
</elementas>

Tuščias elementas gali būti sutrumpintai užrašomas nenaudojant jo pabaigos žymės: . Tai ekvivalentu tokiam užrašui: <tuščias_elementas></tuščias_elementas>
Kaip galbūt jau supratote, elementų žymės negali persidengti, t. y. negali būti tokio pavidalo struktūrų: <1_elementas> … <2_elementas> … </1_elementas> … </2_elementas>. Jos dažnai pasitaikydavo HTML formato failuose.
Aukščiausio lygio (šakninis) elementas dokumente gali būti tik vienas.

Atributai
elementas gali turėti atributus (angl. „attributes“). Jie užrašomi forma atributo_vardas=”atributo_reikšmė” arba atributo_vardas=’atributo_reikšmė’. Atributų vardai yra „case-sensitive“. Jo reikšmė gali būti tik tekstinė. Atributai talpinami elemento pradžios žymėje, po jo vardo, pavyzdžiui, <studentas pažymėjimo_nr=”12345678″> … </studentas>. Elementas negali turėti dviejų atributų vienodais vardais.
atributai neturi sutrumpintos formos, kokia buvo leidžiama HTML standarte. Pavyzdžiui, vietoje <option selected> .. </option> reikia rašyti <option selected=”selected”> … </option>.
Kai kurie atributai (pvz., :lang, nurodantis elemento kalbą) yra rezervuoti paties standarto. T. y. jie turi tą pačią reikšmę visuose dokumentuose ir negali būti autorių naudojami saviems tikslams.
Atributuose paprastai saugoma papildoma informacija apie elementą, tačiau kartais atributo reikšmė gali pakeisti paties elemento reikšmę (jei ji tėra tekstinė). Palyginimui:

<studentas>
  <vardas>Petras</vardas>
  <pavardė>Petraitis</pavardė>
  <adresas>
	<namo_nr>13</namo_nr>
	...
  </adresas>
  ...
</studentas>

ir

<studentas vardas="Petras" pavardė="Petraitis">
  <adresas>
	<namas nr="13"/>
	...
  </adresas>
  ...
</studentas>

Elementas ar atributas?
Ką pasirinkti saugoti tekstinei reikšmei — elementą ar atributą? Vienareikšmio atsakymo tikriausiai nėra. Atributai tėra papildoma priemonė, tačiau kartais patogi ir net būtina.
Galima taikyti tokį metodą — įsivaizduoti, kad elementas yra dėžė. Tada visi jos viduje esantys daiktai turėtų būti vidiniai elementai, o užrašai ant dėžės — atributai.
Jei turime elementą <automobilis>, jo vidiniai elementai galėtų būti <kėbulas>, <variklis>, o atributai — pagaminimo_data, spalva ir t. t.
Tačiau, jei kuriame elementą <automobilio_registracija>, galėtume naudoti vidinius elementus <pagaminimo_data> ir <spalva>. Tokiu atveju registracijos_data turėtų būti atributas, nes jame saugoma informacija apie automobilio registraciją, o ne apie patį automobilį.

Vardų sritys
Vardų sritys („namespaces“) naudojamos pažymėti, kokiam rinkiniui priklauso elementas ar atributas.
Savo dokumente (formate) galime naudoti kokius tik nori elementų ir atributų pavadinimus. Taigi pvz. elemento <p> panaudojimas tokiame dokumente būtų leistinas. Tačiau bandant tokį dokumentą įterpti į XHTML dokumentą, kiltų problemų. Naršyklė, „manydama“, kad elementas <p> priklauso XHTML, interpretuotų ją kaip „paragrafą“, kas autoriui gali būti nepriimtina. Tokioje situacijoje naudojamos vardų sritys.
Elementai, kuriuos norima priskirti kuriai nors vardų sričiai, turi turėti specialų prefiksą. Toks elementas užrašoma taip: <prefiksas:žymės_vardas>.
Prefiksas turi būti prieš tai apibrėžtas dokumente (bet kuriame aukštesnio lygio elemente) tokiu atributu: prefiksas:xmlns=”URI”. Čia URI — interneto resurso identifikatorius (dažniausiai URL), pagal kurį galima identifikuoti vardų sritį.
Atributas xmlns=”URI” gali būti panaudotas ir be prefikso. Tokiu atveju vardų sritis, kurią identifikuoja nurodytas URI, bus pagrindinė. T. y., jai priklausys visi po šio atributo dokumente esantys elementai, neturintys prefikso.
Taigi aukščiau minėtas pavyzdys galėtų atrodyti taip:

<html xmlns="http://www.w3.org/1999/xhtml" petro:xmlns="http://www.petras.lt/xml">
  ...
  <body>
	<h1>Antraštė ... </h1>
	<p>Paragrafas ... </p>
	...
	<petro:p petro:atributas"reikšmė">Petro elementas</petro:p>
	...
	<p>Paragrafas ... </p>
  </body>
</html>

Tai pačiai vardų sričiai galima naudoti kelis skirtingus prefiksus.

Intarpai
Intarpai (angl. „entities“) naudojami įterpiant į dokumentą specialų simbolį, tekstą ar failą. Jie aprašomi intarpų apibrėžime. Dokumente užrašomi tokia forma: &vardas; arba &#kodas;. Čia kodas — tai simbolio kodas, o vardas — tai sinoniminis intarpo vardas, kuris gali būti nurodomas intarpų apibrėžime.
Pvz., intarpai &bdquo; ir &ldquo; įterpia į dokumentą lietuviškas kabutes „ ir “; &amp; — ampersandą & (kuris naudojamas ir pačių intarpų užrašymui); &copy; — simbolį ©.

Specialios žymės
formatas apibrėžia keletą specialių žymių, kurios yra bendros visiems dokumentams.
antraštė
<? version=”versija” encoding=”koduotė”?>. Čia versija — versija (šiuo metu paskutinė 1.1), koduotė — kodų lentelės pavadinimas (rekomenduoju UTF-8 — tarptautinis standartas).
vykdymo instrukcijos (angl. „processing instructions“)
Pvz.: <?-stylesheet type=”text/xsl” href=”stilius.xsl”?> (nurodo dokumento stiliaus failą)
komentarai
<!– komentaras –>
CDATA
<![CDATA[ turinys ]]>. Tarp šių žymių turi būti rašoma viskas, ko nereikia interpretuoti kaip — skriptų kodas, CSS stiliai ir t. t. Pvz.:

<style type="text/css">
  <![CDATA[
	html { font-family: "Tahoma", "Verdana", sans-serif; }
	body > p { line-height: 1cm; } /* galioja visiems <p>, kurie yra <body> „child'ai“ */
  ]]>
</style>

dokumento tipo apibrėžimas (angl. „document type definition“)
Jis nurodo, kokią struktūrą dokumentas turi atitikti, t. y. kokie elementai ir atributai jame leistini, kaip jie turi būti sukomponuoti ir t. t. Gali būti ir išoriniame faile. Pastaruoju metu pereinama prie Schema dokumentų tipo apibrėžimo.
intarpų apibrėžimas (angl. „entity declaration“)

dokumentas
dokumentas gali prasidėti antrašte. Po jos gali eiti vykdymo instrukcijos, dokumento tipo ir intarpų apibrėžimai.
Po šio pradžios bloko seka esminis dokumento turinys — elementai.
dokumentas gali būti gerai suformuotas („well–formed“) ir teisingas („valid“).
Gerai suformuotas dokumentas — tai sintaksę atitinkantis dokumentas. T. y., jis turi turėti vieną (ir tik vieną) aukščiausio lygio (šakninį) elementą, jo elementai turi būti teisingai sukomponuoti ir t. t.
Teisingas dokumentas — tai savo tipo apibrėžimą atitinkantis dokumentas (žinoma, jis turi būti ir gerai suformuotas).
Komentarai gali būti bet kur dokumente, o CDATA blokai — ten, kur gali būti elementai.
Visi specialūs simboliai, esantys tekste, o ne žymėjime (ne žymėse, atributuose, CDATA blokuose ir t. t.), turi būti pakeisti intarpais.
Radusi klaidą, dokumentą apdorojanti programa turi pranešti apie klaidą ir nutraukti apdorojimą — skirtingai nuo HTML, kur klaidas buvo leidžiama ignoruoti.
dokumento struktūra kartais skirstoma į „orientuotą į duomenis“ ir „orientuotą į dokumentą“.

panaudojimas
Kaip jau minėta, leidžia patogiai modeliuoti struktūrizuotą tekstinę informaciją. Šis dokumentas taip pat gali būti interpretuojamas kaip .
privalumai: tai paprastas, išplečiamas, nuo konkrečios OS ar programavimo kalbos nepriklausomas, tarptautiniam naudojimui pritaikytas, atviras ir nemokamas standartas.
(ir tam tikru dokumento tipo apibrėžimu) daugeliu atveju galima patogiai pakeisti atgyvenusius tekstinius ar binarinius formatus (protokolus). duomenimis galima lengvai manipuliuoti programose, naudoti juos duomenų bazėje ar net vietoj jos.
Vienas didžiausių privalumų — jį galima transformuoti. Tiems patiems duomenims pritaikius skirtingas transformacijas, galima gauti keleto (galbūt visiškai skirtingų) pavidalų rezultatus. Pvz., tam tikros apibrėžtos struktūros failuose saugomi WWW serverio „logai“ gali būti viena XSLT transformacija pervesti į visai kitokios struktūros XHTML dokumentą internetui, kita — į SVG grafiką, trečia — į WML dokumentą, skirtą mobiliesiems telefonams. Beje, XSLT transformacijos taip pat yra dokumentai.

Autorius: XML.lt
Failai: Trumpas XML pradžiamokslis

Panašūs straipsniai


“Trumpas XML pradžiamokslis” komentarų: 5

  1. kran

    liuks straipsnelis :)
    tik vienas pastebejimas: turėtų būti taip:
    “Tuščias elementas gali būti sutrumpintai užrašomas nenaudojant jo pabaigos žymės: . Tai ekvivalentu tokiam užrašui: ”
    (praleistas užrašas ”) , o ne “Tuščias elementas gali būti sutrumpintai užrašomas nenaudojant jo pabaigos žymės: . Tai ekvivalentu tokiam užrašui: “


  2. Tam tikri programiniai sprendimai XML pagalba perduoda ne tik tekstine informacija, bet ir vaizdus, garsus, kita.

  3. kraujas

    Straipsnis tikrai atitinka pavadinima. Daugiau tokiu reiktu.
    Tik stai maziau ismanantiems tikrai sunku suprasti kas tas XSLT. Tekste jis atsirado is niekur ir atrodo tarsi jis butu savaime suprantamas dalykas.

  4. care

    entity == esybė
    ačiū už straipsnelį!
    \m/

  5. pumba

    Ten prie tuščių elementų kažkas blogai su kodo pavyzdžiu. O šiaip rašyta 2003 metais, tai ko norėt :D

Rašyti komentarą

Jūs privalote prisijungti jeigu norite rašyti komentarą.