XML (Markaketa-lengoaia hedagarria,Extensible Markup Language) xede orokorrekomarkaketa-lengoaia da.Lengoaia hedagarri moduan sailkatuta dago --berez, metalengoaia bat da--, erabiltzaileak bere elementuak sortzeko aukera baitu. Egituratutako datuakinformazio-sistema ezberdinen artean partekatzea da bere helburu nagusia, batez ereInterneten bitartez. Erabiltzen da bai dokumentuak kodetzeko, bai datuak serializatzeko. Azken kasu honetan, testuan oinarritzen diren beste serializatze-lengoaia batzuekin parekatu daiteke, hala nolaJSON etaYAMLrekin.
Hedagarria denez gero, XMLn oinarritutako ehunka formatu aplikazio (lengoaia, formatu) garatu dira helburu desberdinekin; adibidez,RSS,Atom,SOAP,SVG etaXHTML. XML aplikazioak bulegotikarako ere erabiltzen dira (Microsoft OfficekoOffice Open XML,OpenOffice etaLibreOfficekoOpenDocument); baita beste arlo batzuetan ere, komunikazio-protokoloak definitzeko, esaterako (XMPP). Bezero/zerbitzari ereduan erabiltzen diren SOA(Service-oriented architecture) protokoloan ere XML mezuak trukatzen dituzte makinek.
Bestelako industrietan ere XMLn oinarritutako lengoaiak erabiltzen dira informazio-trukerako, hala nola osasungintzan, turismoan, itzulpengintzan..., eta modu berezian komunikabideetan eta editorialetan.
XML markaketa-lengoaia sortu baino askoz lehenago bazeuden beste markaketa-sistema batzuk,testu egituratua kasu. Testu hutsa idatziz sor daitezke webgunerako dokumentuak, HTML zer den jakin beharrik gabe. Testu arrunta idatzi, eta makinak HTML kode bihurtzen du. Testu egituratua erabiltzen den kasu ezagun batwikiena da. Honetan, testuari "marka" edo "etiketa" ezberdinak gehitzen zaizkio burutu nahi den aldaketaren arabera, eta honen ondorioz hainbeste markaketa-lengoaia sortzen dira.
ANSI erakundeak, 1978. urtean, testu-prozesamenduan zebiltzan hainbat talde jarri zituen harremanetan, edozein motatako testuak kodetzeko, egituratzeko eta elkarren artean trukatzeko balioko zukeen lengoaia estandar eta orokor bat definitzeko helburuarekin.
Lengoaia horren lehenengo txostenak 1980. urtean argitaratu baziren ere, 1985. urtean argitaratu zen elkarlanaren emaitzaren azken bertsioa,ISO erakundeak estandartzat onartu zuena: ISO 8879 edoSGML (Standard Generalized Markup Language) lengoaia. Testuak osagaien bidez (paragrafoak, zerrendak, izenak, atalak, lerroak etab.) zatitu, eta zati horiek habiaratu daitezkeela da SGMLren oinarrizko hipotesia. SGMLk printzipio deskriptiboa bereganatu zuen hasieratik. Horrela, testuaren kodetze-lanetan dabilenak testu-objektua zer den markatuko du. Honen ondorioz, testu bera hamaika kodekera desberdinen arabera markatu daiteke, aplikazio ezberdinen beharrei aurre eginez.
Hala ere, SGML lengoaia aberatsegia eta zabalegia suertatu zen konputagailuekin tratatu behar zenean, eta, horrela, aplikazio gutxik inplementatu zuten SGMLk eskaintzen zituen aukera guztiak. Beraz, SGML lengoaiatik azpilengoaia bat sortu zen, XML deitutakoa, nolabait SGMLk eskaintzen zituen aukera zabalak mugatu nahian. XMLren 1.0 bertsioa 1998. urtean sortu zen, W3C-ren aholku moduan. SGML eta XML lengoaiak helburu ezberdinak betetzeko jaio ziren: lehenak edozein dokumentu markatzeko euskarria eskaintzen zuen bitartean, bigarrenaren xedea Interneten informazioa kudeatzea zen nagusiki. Horrela, bada, XML lengoaia weberako estandarra zen -eta oraindik den- HTMLren gabeziak gainditzeko asmoarekin jaio zen. HTMLk bere definizioak izan arren, nabigatzaileen tolerantziak gaizki egituratutako dokumentuek funtzionatzea ahalbidetu du. Hori dela eta, XML eta HTML batzeko ahaleginaren ondoriozXHTML sortu zen, "Extensible HyperText Markup Language" delakoa. Hau HTML erreproduzitu, zehaztu eta hedatzen duen modulu eta dokumentu familia da. XMLn oinarritutako lengoaia zorrotz berria da XHTML, eta nabigatzaileak askoz zorrotzagoak diraweb-orrien kodearen sintaxia balioztatzeko orduan.
XML, SGML bezala, metalengoaia bat da, eta hainbat lengoaia definitzeko aukera ematen du.
XML fitxategia
HTML, aldiz, SGML bidez definitutako lengoaia soil bat da, esan bezala aplikazio konkretu bat, elementu (etiketak) eta atributu jakin batzuk definitzen dituena. HTML lengoaia bat da, eta Interneten argitaratzen diren dokumentuei itxura emateko erabiltzen da, informazioaren diseinu bisuala lantzeko sortu zen eta. Etiketetan oinarrituta dago, eta erabaki daiteke, esate baterako, zer letra-mota eramango duen testuak, edo atal jakin bat letra lodiz edo etzanez idatzi behar den, esate baterako. XMLk osatu egiten du HTML Interneten, egitura eransten dielako datu horiei, eta semantika eman. Horri esker, sistema ezberdinekulertuko dute zer esan nahi duen dokumentu batek. HTMLk ez bezala, bestalde, XMLk etiketa kopuru mugagabea erabil dezake informazioa kodetzeko.
Terminologia osoa definitzeko asmorik gabe, hona hemen termino nagusiak:
Karakterea (character)
XML dokumentu bat testua da, karaktere-segida bat. Bertan edozeinUnicode karaktere ager daiteke.
Prozesadorea (processor) eta aplikazioa (application)
Prozesadoreak markak analizatzen ditu eta dagokion informazioa pasatzen dio aplikazioari. ProzesadoreariXML parser edoXML analizatzaile esan ohi zaio.
Marka (markup) eta edukia (content)
Karaktereak bi multzotan banatzen dira: markak eta edukia. Haien artean bereizteko erregela sintaktiko bat aplikatzen da: markak< karakterearekin hasten dira eta> karakterearekin amaitu, edo& karakterearekin hasi eta; karakterearekin amaitu (azken horieiXML entitate esaten zaie).
Etiketa (tag)
Etiketa marka bat da,< karaktereaz hasi eta> karaktereaz amaitzen dena. Hiru motatakoak izan daitezke:
hasierako etiketa:<atala>, adib.;
amaierako etiketa:</atala>, adib.;
etiketa hutsa:<atalHutsa/>, adib.
Elementua (element)
Elementu bat osagai logiko bat da, hasierako etiketa batez hasi eta amaierako etiketa batez amaitua (edo etiketa huts batez osatua, besterik gabe). Bi etiketen arteko edukian beste elementu batzuk egon daitezke, habiaraturik. Barruko elementuei elementu ume esaten zaie. Adibidez,<agurra>Kaixo, mundua!</agurra>.
Atributua (attribute)
Atributu bat elementu baten atala da (hautazkoa), izen–balio bikote bat. Adibidez<img src="madonna.jpg" alt="Madonna"/> kodean,img elementuaren atributu dirasrc etaalt, eta dagozkien balioak "madonna.jpg" eta "Madonna", hurrenez hurren.
XML deklarazioa (XML declaration)
XML dokumentuen hasieran XML deklarazio bat agertu ohi da (ez nahitaez, baina gehienetan agertzen da), edukiaren deskribapenarekin. Adibidez,<?xml version="1.0" encoding="UTF-8"?>.
XML dokumentu bat XML espezifikazioarekin bat datorrenean ongi eratutako dokumentua dela esaten da, hau da, sintaktikoki zuzena dela formatuari dagokionez.Edozein kasutan, dokumentu guztiek bete beharreko arau batzuk hauek dira:
Dokumentuan Unicode karaktere zuzenak baino ezin dira egon.
Sintaxiaren oinarri diren karaktereak,< eta& esaterako, marketarako baino ezin dira erabili (bestela erabili behar izanez gero, entitateez baliatuz egin behar da:< eta&, kasu horietan).
Hasierako etiketak, amaierakoak eta elementu hutsek ondo habiaratuak egon behar dute, gainjartzerik egon gabe.
Etiketen izenetan letra larriak eta xeheak bereizten dira, eta berdin-berdin agertu behar dute hasierako etiketan zein amaierakoan.
Etiketen izenetan ezin dira agertu ondoko karaktere hauek: !"#$%&'()*+,/;<=>?@[\]^`{|}~. Ezta zuriunea ere, eta lehen karakterea ezin da "-", "." edo zifra bat izan.
Arau hauek betetzen ez dituzten dokumentuak ez dira XML dokumentutzat hartzen ez baitaude ongi eratuta, eta prozesadoreak errorea emango du prozesatzen saiatuz gero.
Ondo eratuta dagoen ala ez egiaztatzeaz gain, XML dokumentu baten baliozkotasuna ere egiazta daiteke. Horretarako, egituraren gramatika deskribatzen duen dokumentua behar da.
Egitura edo gramatika deskribatzen duen dokumentu hori, historikoki,DTD (Document Type Definition) formalismoaren bidez idatzi izan da (SGMLrako diseinatutako formalismoa, berez). DTD batean, dokumentuan agertzekoak diren elementuak eta atributuak zehazten dira, baita haien arteko erlazioak ere. Eskema zehaztuz gero, prozesadorea dokumentuaren baliozkotasuna egiaztatzen saiatuko da, eta lortuko ez balu errorea adieraziko luke. DTDa eskema adierazteko modu bat da, baina badaude beste aukera batzuk (XML Schema,Relax NG...).
XML dokumentuen eskema deskribatzeko lengoaia berriago bat da,W3C erakundeak bultzatua. Deskribapenak XSD (XML Schema Definition) izenarekin ezagutzen dira, eta DTDak baino ahaltsuagoak dira dokumentuak deskribatzean. Datu-moten sistema aberatsa du, eta horrela dokumentuen murriztapenak askoz modu zehatzagoan defini daitezke. Gainera, XSDak XML dokumentuak dira, eta, beraz, beren baliozkotasuna ere egiaztatzen ahal da.
Eskema bat (XML dokumentu familia baten egitura edo gramatika, finean) definitzeko,xs:schema elementuaren barruan egiten da: