thumb|Ilustracija jedne XML datoteke XML je kratica za EXtensible Markup Language, odnosno jezik za označavanje podataka. Ideja je bila stvoriti jedan jezik koji će biti jednostavno čitljiv i ljudima i računalnim programima. Princip realizacije je vrlo jednostavan: odgovarajući sadržaj treba se uokviriti odgovarajućim oznakama koje ga opisuju i imaju poznato, ili lako shvatljivo značenje. Format oznaka u XMLu vrlo je sličan formatu oznaka u npr. HTML jeziku. Danas je XML jezik vrlo raširen i koristi se za različite namjene: odvajanje podataka od prezentacije, razmjenu podataka, pohranu podataka, povećavanje dostupnosti podataka i izradu novih specijaliziranih jezika za označavanje. XML je standardizirani jezik i za njegovu standardizaciju brine se World Wide Web Consortium.
Povijest Ideja jezika za označavanje podataka je da se korisni sadržaj uokviri odgovarajućim oznakama. Oznake bi trebale biti jednostavno čitljive i razumljive i čovjeku koji ih gleda u bilo kojem programu za uređivanje teksta, a i računalni programi koji parsiraju taj sadržaj trebali bi moći na jednostavan način izvaditi određene podatke.
Generalized Markup Language (GML) 60-ih godina 20. stoljeća IBM je imao velik problem s ogromnom količinom različite tehničke dokumentacije koja se za svaku posebnu namjenu morala prepisivati i nanovo uređivati za što su trošili ogromnu količinu ljudskih resursa. Ideja do koje su došli bila je prvi šire korišteni jezik za označavanje podataka. Korisni sadržaj uokvirio bi se određenim oznakama koje ce ga opisivati. Nakon što se to učini, za određene namjene jednostavno će se povlačiti sadržaji određenog tipa. GML oznake opisivale su određene dijelove dokumenta kao n.pr. poglavlja, važna poglavlja, manje važna poglavlja, liste, tablice itd. Korištenjem GMLa iz istog sadržaja mogla se dobiti ispisana različita dokumentacija, tehnička, ali i korisnička.
Standard Generalized Markup Language (SGML) GML se pokazao kao uspješan proizvod tako da je razvoj u tom smjeru nastavljen. 80-ih godina 20. stoljeća American National Standards Institute (ANSI) radio je na razvoju standarda jezika za označavanje podataka. Zahtjevi kojima su autori pokušali zadovoljiti bili su da nastali proizvod bude dovoljno formaliziran da može jamčiti vjernost dokumenta izvorniku, dovoljno strukturiran da se može nositi s kompleksnim dokumentima i dovoljno otvoren da može podržati rukovanje velikim količinama podataka. Nastali jezik nazvan je Standard Generalized Markup Language (SGML) i 1986. objavljen je kao međunarodna norma ISO 8879. Problem SGMLa, kao i mnogih sličnih proizvoda koji su razvijani na takav način, od strane organizacija za standardizaciju je što je bio golem. Autori su pokušali pokriti svaku moguću primjenu jezika i nastali proizvod je bio opširan, složen za korištenje te zbog toga skup u upotrebi. Zbog tih osobina SGML nije bio jako raširen u praksi i korisnici SGMLa bile su uglavnom velike kompanije, državne službe i znanstvene institucije.
HyperText Markup Language (HTML) HTML je nastao kada je Tim Berners Lee izabrao jedan mali skup oznaka iz SGML skupa koji je korišten na CERNu i primijenio ih na formatiranje dokumenata. HTML je imao mali skup oznaka koje su opisivale osnovne dijelove dokumenta. Programi koji su tumačili strukturu takvih dokumenata bili su HTML preglednici.
Extensible Markup Language (XML) Problem HTMLa je što ima mali skup zadanih oznaka. Kada se želi proširiti s novim oznakama mora se mijenjati standard što ga čini nepraktičnim. Osim toga, iako je HTML izvorno zamišljen kao jezik za opisivanje sadržaja, zbog potreba i želja tržišta te razvoja pregledničkih tehnologija (naročito za vremena "pregledničkog rata" između Microsofta i Netscapea proširivan je nestandardnim oznakama koje su prvenstveno služile za formatiranje sadržaja u smislu njegovog prikaza u internet pregledniku. Za opisivanje sadržaja SGML je bolji izbor od HTMLa, ali ima veliki nedostatak što je preglomazan za korištenje i izvršavanje unutar internet preglednika. Zbog toga je trebalo kreirati jezik koji će s jedne strane biti dovoljno malen i jednostavan da se može izvršavati unutar internet preglednika, a s druge strane dovoljno prilagodljiv da se može proširivati korisničkim oznakama. Posla izrade specifikacije takvog jezika prihvatio se početkom 90ih godina 20. stoljeća World Wide Web Consortium. Željeli su razviti jezik koji će objediniti jednostavnost HTMLa i izražajnu snagu SGMLa. Na početku su odredili 10 ciljeva kojih su se u razvoju trudili pridržavati: XML mora biti izravno primjenjiv preko interneta. XML mora podržavati širok spektar primjena. XML mora biti kompatibilan s SGML-om. Mora biti lako pisati programe koji procesiraju (parsiraju) XML dokumente. Broj opcionalnih "feature-a" u XML-u mora biti apsolutno minimalan, u idealnom slučaju jednak nuli. XML dokumenti moraju biti čitljivi ljudima, te u razumnoj mjeri jednostavni Standard mora biti specificiran što prije Dizajn XML-a mora biti formalan i precizan Kreiranje XML dokumenata mora biti jednostavno Sažetost kod označavanja dokumenta XML-om je od minimalnog značaja World Wide Web Consortium je 10. veljače 1998. objavio prvu verziju XML preporuke.
XML dokument Primjer XML dokumenta <?xml version="1.0" encoding="UTF-8"?> Pero Kate Podsjetnik Otiđi kupiti kruh
XML dokument se sastoji od 2 dijela. Prvi dio je prolog ili zaglavlje. <?xml version="1.0" encoding="UTF-8"?> U njemu se navode podatci koji opisuju XML dokument kao što su verzija XML preporuke prema čijim pravilima je dokument napravljen i kodna stranica. Ako se ne navede ispravna kodna stranica programi koji barataju s XML dokumentom kada naiđu na nestandardni znak (npr. naše slovo č) javit će grešku.
Drugi dio je sadržaj dokumenta u kojem se nalazi korisni sadržaj omeđen XML oznakama. Pero Kate Podsjetnik Otiđi kupiti kruh
Svaki XML dokument mora imati jedan korijenski ili root element koji uokviruje kompletan sadržaj. Taj element opisuje XML dokument i npr. kaže "ovaj XML dokument je jedna poruka".
...
Unutar korijenskog elementa ugniježđeni su svi ostali.
XML elementi XML elementi opisuju određeni dio XML dokumenta. Sastoje se od korisnog sadržaja omeđenog XML oznakama. Sadržaj mora biti omeđen s lijeve i s desne strane početnom i završnom oznakom. Primjer XML elementa Podsjetnik
Ovaj element kaže da je sadržaj unutar njega naslov naše poruke.
Početna oznaka je Oznaka ima svoj naziv omeđen znakovima "trokutastih zagrada" (< >).
Završna oznaka je
Završna oznaka identična je početnoj osim što s lijeve strane prije naziva ima kosu crtu.
Sadržaj ovog elementa je Podsjetnik
Međusobni odnos XML elemenata XML elementi međusobno mogu biti u odnosu roditelj-dijete (engleski: parent-child) ili sestrinskom (engleski: siblings).
Kod odnosa roditelj-dijete jedan element hijerarhijski je nadređen drugome. ... Podsjetnik ...
U ovom primjeru element poruka je roditelj elementu naslov (nadređen je elementu naslov). Kaže se da je element naslov ugniježđeni unutar elementa poruka. U XMLu elementi moraju biti pravilno ugniježđeni što znači da ne smije doći do preklapanja oznaka.
Ovo je neispravno <poruka> ... Podsjetnik</poruka> ...
Ovo je ispravno ... Podsjetnik ...
Kod sestrinskog odnosa elementi se nalaze na istoj razini. Podsjetnik Otiđi kupiti kruh
U ovom primjeru element i naslov i tijelo hijerarhijski se nalaze na istoj razini.
XML atributi XML atributi nude podatke koji dodatno opisuju XML elemente. Podatci koji se navode kao atributi mogu biti zanimljivi čovjeku koji gleda sadržaj XML dokumenta (npr. ime osobe koja je kreirala poruku) ili računalnom programu koji parsira XML dokument (npr. vrsta i veličina fonta kojim se treba prikazati sadržaj poruke na ekranu). Atributi imaju svoj naziv i vrijednost koja se navodi pod navodnicima.
Pero Kate Podsjetnik Otiđi kupiti kruh
Mišljenja oko korištenje atributa unutar XML dokumenta Oko korištenja atributa unutar XML dokumenta postoje 2 struje mišljenja. Jedna struja zastupa "čistoću elemenata" i smatra da se atributi ne bi smjeli koristiti za obogaćivanje smisla sadržaja. To u praksi znači da se npr. kao atribut našeg XML dokumenta poruke ne bi smjelo navoditi ime osobe koja je autor poruke već bi se to trebalo navesti kao poseban element u dokumentu. Atributi su dozvoljeni samo za dodavanje dodatnih informacija koje služe programima za parsiranje XML dokumenata da na željeni način prikažu sadržaje. Prema njihovom mišljenu npr. dozvoljen je atribut koji opisuje vrstu i veličinu fonta jer on ništa ne dodaje u osnovnu informaciju naše poruke. On samo pomaže da se poruka na odgovarajući način prikaže na određenom mediju. Druga struja smatra da se atributi mogu slobodno koristiti za dodavanje korisnih informacija u XML dokument jer se time smanjuje inflacija elemenata. Prema njihovom mišljenju sasvim je u redu da se u XML dokument dodaju atributi koji nose korisni sadržaj. Naš XML dokument iz primjera mogao bi prema njima izgledati i ovako
Podsjetnik Otiđi kupiti kruh
Sintaksna pravila na početku dokumenta mora se navesti prolog u kojem se navodi verzija XML preporuke prema čijim pravilima je dokument napravljen <?xml version="1.0"?>
ako se u sadržaju XML dokumenta koriste nestandardna slova neengleske abecede potrebno je navesti i kôdnu stranicu koja se koristi jer će bez nje javiti grešku. <?xml version="1.0" encoding="UTF-8"?>
svaki XML element mora imati početnu i završnu oznaku Podsjetnik
XML oznake su "case sensitive" odnosno razlikuju mala i velika slova podsjetnik <> PODsjetnik
svi elementi moraju biti pravilno ugniježđeni Ovo je neispravno <poruka> ... Podsjetnik</poruka> ... ''
Ovo je ispravno ... Podsjetnik ...
Svaki XML dokument mora imati jedan korijenski ili root element koji uokviruje kompletan sadržaj. Taj element opisuje XML dokument i npr. kaže "ovaj XML dokument je jedna poruka". <za>Pero</zaKoga> <od>Kate</odKoga> Podsjetnik Otiđi kupiti kruh
vrijednosti atributa moraju se navoditi pod navodnicima Ovo je neispravno <za font_face=Arial font_size=10>Pero</zaKoga> Ovo je ispravno <za font_face="Arial" font_size="10">Pero</zaKoga>
nazivi elemenata mogu sadržavati slova, brojeve i posebne znakove moraju počinjati slovom ne smiju počinjati tekstom xml niti XML ne smiju sadržavati praznine trebalo bi izbjegavati korištenje znakova - i .
<table> Ovo je neispravno Ovo je ispravno <tr> <td>
<XML-NAZIV> </XML-NAZIV> <naziv 23> </naziv 23>
</td>
</tr> </table>
u tekstu se mogu koristiti i jednostruki i dvostruki navodnici, bitno je samo da se ne preklapaju Ovo je "stvarno 'dobar' dan"
komentari se prikazuju pomoću posebne oznake <!-- ovo je komentar -->
kada je potrebno navesti sadržaj u kojem se nalaze kontrolni znakovi a želimo ih protumačiti kao običan tekst koristi se posebna naredba CDATA (character data) sekcija. Čitav tekst unutar CDATA dijela dokumenta interpretira se kao običan tekst. Sintaksa CDATA naredbe naslijeđe je SGMLa <![CDATA[ Ovaj tekst se treba shvatiti kao običan <tekst>, a ne kao početak elementa <tekst> ]]>
znakovi koji u XML-u imaju posebno značenje u tekstu se moraju prikazivati na poseban način, znakovnim ili numeričkim kodovima koji na početku imaju znak & (ampersand), a na kraju točku-zarez Zabranjeni posebni znakovi Za prikaz koristiti znakovni kod < > & ' " < > & ' "
Provjera ispravnosti XML dokumenta XML dokument koji je kreiran u skladu sa sintaksnim pravilima je formalno ispravno kreiran (Well Formed). Osim te formalne ispravnosti, ispravnost XML dokument se može kontrolirati u odnosu na propisanu shemu. Shema određuje koje elemente smije sadržavati XML dokument te redoslijed i broj tih elemenata. Ispravnost provjerava se u odnosu na određenu Document Type Definition (DTD) ili XML schemu. Dokument sheme navodi se u zaglavlju XML dokumenta.