XML

eta|grafika ilustraĵo de simpla XML-dokumento
**XML**, mallongigo de la angla *eXtensible Markup Language* (etendebla marklingvo) estas komputila lingvo por sendi kaj ricevi strukturitan informon inter komputiloj kaj homoj, ofte tra la TTT. Se informo estas sendebla kiel tekstaranĝo, ĝi estas sendebla kiel XML. XML fariĝas *la lingvo universala de teksta datumo*.

Kiel HTML, XML estas lingvo de *koderoj* (vortoj interkrampitaj de &lt; kaj &gt;) kaj *atribuoj*. Sed en XML mem ne ekzistas koderoj kun fiksitaj signifoj. Por konkreta uzo oni devas difini apartan XML-an "dialekton" kun markoj kaj atribuoj por certa uzo (aŭ reuzi jam elpensitan dialekton).

Pro tio, XML eble ŝajnas malpli utila ol HTML, sed la inverso pravas. Pro la disigo de kodo kaj signifo:

* XML *ne havas fiksitan aron de koderoj*, kiel HTML, sed estas senfine etendebla.
* XML *ebligas la disigon de informoj kaj ĝia aspektigo*. HTML miksas informon kun instrukcioj pri la montrado. Por montri la informon en formo nova, parte aŭ malsame, oni devas verki novan paĝon. Sed la sama informo, aranĝite kiel XML, estas flekseble montrebla en diversaj formoj. Aldone, la XML estas procezebla por tute aliaj celoj.

Ĉar XML estas regulema kaj teksta, XML-a dokumento estas facile riparebla por homo, kaj procesoroj por XML estas facile verkeblaj.

Ĉar XML estas teksta, ĝi ja ne estas kompakta, sed pro la kunpremiloj gzip kaj zip, kaj la aŭtomata kunpremado de HTTP, tio ne gravas.

*XML estas limigita formo de SGML*. SGML mem, kutime uzita por teknikaj dokumentoj, estas multe pli ĝenerala ol XML, sed tro kompleksa por multaj. XML estas la trafa subaro.

*XML estas pli ĝenerala ol HTML*. HTML ankaŭ estas "dialekto" formo de SGML, sed HTML kiel lingvo por transdoni informon tra la reto -- al homoj, al komputiloj -- estas fariĝinta tro malfleksebla kaj limigita kaj nun bezonas TTT-legilon tro grandan kaj "dinosaŭran" (precipe por interpreti la multan malbonkvalitan HTML-on). XML estas pli ĝenerala, malgranda, regulema, traktebla kaj fleksebla ol HTML *aŭ iu ajn malnova metodo de tekstaranĝo*'.

*XHTML* estas HTML refarita laŭ la reguloj de XML. La transira formo XHTML 1.0 estas uzebla kaj kiel malnova HTML, kaj kiel efektiva XML. Versio 1.1 estas tamen pure XML-a. XHTML 1.0 estas treege kongrua kun HTML 4. HTML ne plu evoluos: ne estos HTML 5, sed anstataŭe versioj de XHTML, kiu prenos la rolon de HTML.

Per *XSLT* oni povas transformi ajnan XML-an dokumenton de unu XML-a dialekto en alian, en HTML-on, aŭ eĉ en tute aliajn dokumentospecojn kiel PDF, PostScript, plata teksto, ktp. XSLT mem estas XML-a dialekto, aparte aranĝita por difini tiajn transformadojn.

La plej novaj TTT-legiloj komprenas XML-on, sed por montri TTT-paĝon, la XML ne sufiĉas, ĉar XML nur priskribas la informon, ne la interpreton aŭ aperigon de la informo sur la paĝo. Por tio, oni devas uzi ilon de XSLT aŭ stilfolion (CSS). Iuj TTT-legiloj povas tamen rekte montri ankaŭ "nudan" XML-on en kruda maniero (arba formo).

## Reguloj de sintakso por XML-dosiero 
Rimarkendas, ke XML-dosieroj mem estas simplaj tekstodosieroj. La signokodo estas specifigita en la unua instrukcio. La defaŭlta signokodo estas UTF-8 (kiu ne malsamas de Askio, se nur Aski-signoj estas uzataj) aŭ UTF-16.

XML-dosiero povas enhavi:

* instrukciojn por procezilo, ekzemple la deklaro komence de la dokumento: 
* elementojn: ...
* komentojn: `&lt;!-- komento --&gt;`
* ne-strukturitajn datumojn, t.n. CDATA: 

Malkiel ekz. HTML, XML tre dependas de strukturo, enhavo, kaj kohereco por esti efika. Unuavice XML-dosiero devas esti bone formita, t.e. ĝi devas sekvi kelkajn tre bazajn konstruregulojn:

* Valida XML dokumento devas havi unu (kaj nur unu) radikan elementon.
* Elementoj kun enhavo devas posedi kaj malferman kaj ferman markojn (antaŭ kaj post la enhavo). Malplenaj elementoj (sen enhavo) povas aspekti jene , aŭ jene . En la lasta formo la sola marko estas komprenita tiel ke ĝi malfermas kaj fermas la elementon.
* Ĉiuj atribuitaj valoroj **devas** estis encitiligitaj.
* Markoj povas esti ingitaj sed ne povas konflikte kuŝi.

Endas rimarki, ke la nomoj de elementoj kaj atribuoj en XML distingas inter minuskloj kaj majuskloj. Tial ekz.  kaj  estas bone formita kongrua paro, sed  kaj  ne estas.

Krome, denove malkiel HTML, XML-markoj klarigas kion signifas la datumo kaj ne kiel aspektigi ĝin.

## Document Type Definition ("dokumento-speco-difino") 
Antaŭ la apero de ĝeneraligitaj datumpriskribaj komputillingvoj kiel SGML kaj XML, programistoj devis krei specialajn dosierformatojn aŭ malgrandajn komputillingvoj por transkomuniki datumojn inter programoj. Por tio necesis verki detalajn normojn kaj specialajn sintaksajn analizilojn kaj verkilojn. Sed por lingvo bazita sur XML, la programisto povas specifigi la bazan sintakson per verkado de DTD, aŭ de pli detala priskribo uzante XML-skemon. Ekzistas facile akireblaj (kaj en iuj okazoj senkostaj) iloj, kiuj komprenas tiajn priskribojn. Tio povas signife malpliigi la kostojn.

Kiam XML-dosiero kaj estas kongrua kun la reguloj por bonformiteco, *kaj* estas ankaŭ kongrua kun la indikita DTD aŭ skemo, tiam la XML-dosiero estas konsiderata *valida dokumento*.

## Nomospacoj 
Nomospacoj ebligas al dokumento enhavi XML-elementojn kaj XML-atribuojn prenitajn el malsamaj XML-lingvoj, sen nomkonfliktoj. Uzado de nomospacoj ne estas kongrua kun DTD-oj (necesas uzi skemojn).

## Versioj de XML 
La unua versio de XML estis XML 1.0.

La ĝisdate oficiala versio de XML estas 1.1. XML 1.1 (ankaŭ konata kiel *Blueberry*) etendas XML-on 1.0 per aldona subteno por novaj signoj en Unikodo 3.0 ankaŭ en nomoj de elementoj (en ordinara teksto eblas ilin uzi ankaŭ en XML 1.0), kaj per aldona subteno de linio-finoj en la signokodo EBCDIC.

Estas ankaŭ diskutoj pri XML 2.0, kvankam ne estas klare, ĉu tia afero iam aperos. XML-SW, verkita de unu el la originala prilaborantoj de XML, enhavas kelkajn proponojn por ebla XML 2.0: forigo de DTD-oj de sintakso, kunmetado de nomospacoj, *XML Base* kaj *XML Information Set* en la baza normo.

Ekzemplo de retejo en Esperanto verkita per XML estas la Reta Vortaro ĉe Lepsiko. Tie la bazaj datumoj estas en XML-dosieroj (en XML-a dialekto aparte farita por tia vortara laboro). Tiuj dokumentoj estas aŭtomate transformataj en HTML-on por ordinara legado.

Ankaŭ la revuo *Monato* estas komplete verkita en XML, kaj el la XML-versio estas aŭtomate kreitaj la diversaj revuoformoj, kiel la reta (.php), la magazino en la dosierformo ePub, la retpoŝta (.html) ktp.

## Montrado de XML-dosieroj en TTT 
Alia helpilo de XML estas la stilfolia komputillingvo XSL, kiu ebligas al uzantoj priskribi vidajn propraĵojn kaj transformaĵojn de XML-datumoj, sen profundigi tiujn instrukciojn en la datumon mem. La rezulta dosiero povas esti ekz. HTML-dosiero, kiu uzas CSS-on por aperigo.

XML-dosiero ankaŭ povas esti rekte aperigita en iuj retumiloj, ekz. Internet Explorer 5 kaj Mozilo, pere de la stilfolia lingvo CSS. En januaro de 2003, ĉi tiu afero jam ne estis stabila. La XML-dosieroj devas ĉi-okaze enhavi referencon al stilfolio, ekz. jene:

  

Dum retumilobazita XML-aperigo ankoraŭ evoluas, la alternativo estas konvertado al HTML, PDF, aŭ aliaj dosierformoj *ĉe la servilo*. Programoj kiel Cocoon analizas XML-dosieron per stilfolio (kaj povas fari ankaŭ alispecajn analizojn) kaj sendas la rezulton reen al la retumilo de la uzanto sen la neceso, ke la uzanto sciu, kio okazas en la fono.

SOAP estas norma metodo por komunikado inter objektoj per XML tra la TTT.

## Vidu ankaŭ 
* SGML
* HTML
* XHTML
* CSS
* XSLT
* DTD
* XML-skemo
* MusicXML
* SOAP
* TTT

## Referencoj 
Kategorio:Liberaj dosierformoj
Kategorio:W3C-normoj
Kategorio:Datenaranĝoj