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:

  1. XML mora biti izravno primjenjiv preko interneta.
  2. XML mora podržavati širok spektar primjena.
  3. XML mora biti kompatibilan s SGML-om.
  4. Mora biti lako pisati programe koji procesiraju (parsiraju) XML dokumente.
  5. Broj opcionalnih "feature-a" u XML-u mora biti apsolutno minimalan, u idealnom slučaju jednak nuli.
  6. XML dokumenti moraju biti čitljivi ljudima, te u razumnoj mjeri jednostavni
  7. Standard mora biti specificiran što prije
  8. Dizajn XML-a mora biti formalan i precizan
  9. Kreiranje XML dokumenata mora biti jednostavno
  10. 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"?>
<poruka>
	<za>Pero</za>
	<od>Kate</od>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

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.

<poruka>
	<za>Pero</za>
	<od>Kate</od>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

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".

<poruka>
	
	...
	
</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

<naslov>Podsjetnik</naslov>

Ovaj element kaže da je sadržaj unutar njega naslov naše poruke.

Početna oznaka je

<naslov>

Oznaka ima svoj naziv omeđen znakovima "trokutastih zagrada" (< >).

Završna oznaka je

</naslov>

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.

<poruka>
 ...
 <naslov>Podsjetnik</naslov>
 ...
</poruka>

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>
 ...
 <naslov>Podsjetnik</poruka>
 ...
</naslov>

Ovo je ispravno

<poruka>
 ...
 <naslov>Podsjetnik</naslov>
 ...
</poruka>

Kod sestrinskog odnosa elementi se nalaze na istoj razini.

<naslov>Podsjetnik</naslov>
<tijelo>Otiđi kupiti kruh</tijelo>

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.

<poruka>
	<za font_face="Arial" font_size="10">Pero</za>
	<od font_face="Arial" font_size="10">Kate</od>
	<naslov font_face="Arial" font_size="14">Podsjetnik</naslov>
	<tijelo font_face="Arial" font_size="10">Otiđi kupiti kruh</tijelo>
</poruka>

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

<poruka za="Pero" od="Kate">
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

Sintaksna pravila

<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>

<naslov>Podsjetnik</naslov>

podsjetnik <> PODsjetnik

Ovo je neispravno

<poruka>
 ...
 <naslov>Podsjetnik</poruka>
 ...
</naslov>

Ovo je ispravno

<poruka>
 ...
 <naslov>Podsjetnik</naslov>
 ...
</poruka>

<poruka>
	<za>Pero</zaKoga>
	<od>Kate</odKoga>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

Ovo je neispravno

<za font_face=Arial font_size=10>Pero</zaKoga>

Ovo je ispravno

<za font_face="Arial" font_size="10">Pero</zaKoga>
Ovo je neispravno Ovo je ispravno
<23naziv>  </23naziv>
<XML-NAZIV>  </XML-NAZIV>
<naziv 23> </naziv 23>
<naziv.xml> </naziv.xml> 
<naziv>  </naziv>
<NAZIV>  </NAZIV>
<naziv_23> </naziv_23>
<naziv_xml> </naziv_xml> 
<tekst>Ovo je "stvarno 'dobar' dan"</tekst>
<!-- ovo je komentar --> 
<![CDATA[ Ovaj tekst se treba shvatiti kao običan <tekst>, a ne kao početak elementa <tekst> ]]>
Zabranjeni posebni znakovi Za prikaz koristiti znakovni kod
<
>
&
'
"
&lt;
&gt;
&amp;
&apos;
&quot;

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.

Povezivanje XML dokumenta s DTD shemom

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poruka SYSTEM "PorukaPodsjetnik.dtd">
<poruka>
	<za>Pero</za>
	<od>Kate</od>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

Povezivanje XML dokumenta s XML schemom

<?xml version="1.0" encoding="UTF-8"?>
<poruka xmlns="http://hr.wikipedia.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="poruka.xsd">
<poruka>
	<za>Pero</za>
	<od>Kate</od>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

XML i HTML

XML i HTML sintaksno su slični, iako su razvijeni s različitim namjenama. XML je prvenstveno razvijen za opisivanje podataka. XML ne radi ništa osim što opisuje podatke. Oznake kod XML-a su slobodne i korisnici ih moraju sami smisliti i kreirati. U HTMLu postoji predefinirani skup oznaka koje uglavnom služe za prikazivanje sadržaja u internet pregledniku na odgovarajući način. Sintaksna pravila XML-a vrlo su stroga i ako dokument nije formatiran u skladu s njima, računalni program neće moći pročitati XML dokument. S druge strane HTML dokument koji je sintaksno neispravan većina internet preglednika će uredno pročitati i pokušati protumačiti na najbolji mogući način iz ispravnih informacija. EXtensible HyperText Markup Language (XHTML) je novi standard razvoja HTML jezika u skladu sa strožim pravilima XML-a. Namjena tog jezika je da s vremenom u potpunosti zamjeni stari HTML standard.

Prikaz XML-a na web-stranicama

XML je jezik namijenjen opisu podataka i u sebi ne nosi informacije o tome na koji način se određeni podatci trebaju prikazati. To se može napraviti pomoću odgovarajućih atributa, ali u tom slučaju potreban je poseban računalni program koji će na odgovarajući način protumačiti te atribute. Kada se XML dokument gleda u internet pregledniku prikazuje se kao običan tekstualni dokument. Neki internet preglednici prikazuju stablo na kojem se klikom na odgovarajući čvor njemu podređene grane mogu prikazati ili sakriti od prikazivanja. Želimo li prikazati sadržaj u odgovarajućem formatu, to možemo napraviti na nekoliko načina:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="poruka.css"?>
<poruka>
	<za>Pero</zaKoga>
	<od>Kate</odKoga>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="poruka.xslt"?>
<poruka>
	<za>Pero</zaKoga>
	<od>Kate</odKoga>
	<naslov>Podsjetnik</naslov>
	<tijelo>Otiđi kupiti kruh</tijelo>
</poruka>

Korištenja XML-a

Odvajanje podataka od prezentacije

Unutar HTML dokumenta sadržaj se može odvojiti od prezentacije. Na takav način web dizajneri imaju veću slobodu u formatiranju i promjenama izgleda web stranica. Kada se promjeni izgled web stranice, ne mora se mijenjati njezin sadržaj. Sadržaj bi se čuvao unutar XML dokumenta, a HTML dokument služio bi za prezentaciju toga sadržaja.

Razmjena podataka

XML dokument je obična tekstualna datoteka. Njezin sadržaj je vidljiv i pristupačan čovjeku, bez ikakvog posebnog programa kao i svakom računalnom programu koji može čitati tekstualne datoteke. Razmjena između sustava na različitim platformama najčešće ide na način da jedan sustav ispiše svoje podatke u dogovorenom formatu u tekstualnu datoteku, a drugi sustav ih pročita. Format tih datoteka obično je bio pozicijski (svi podatci u jednom retku, a svaki podatak ima određenu duljinu) ili delimiterski (podatci razdvojeni posebnim znakom – delimiterom npr. zarez ili točka-zarez). Problem kod toga je što je za svaku posebnu razmjenu potrebno raditi novi format prema dogovoru strana u razmjeni. osim toga ti formati su neintuitivni. Kada pogledate tekstualnu datoteku u pozicijskom formatu bez dokumentacije toga formata nećete moći niti naslutiti kakvi podatci se u njoj nalaze. XML omogućuje svakoj strani opisati podatke koje ima, odnosno one koje im trebaju odgovarajućim oznakama koje su čitljive i čovjeku i koje dosta dobro opisuju podatak koji se unutar određene oznake nalazi.

Pohrana podataka

XML dokument opisuje sadržaj i kao takav može se koristiti za njegovu pohranu. Najjednostavniji način je izravna pohrana u tekstualne datoteke koje se spremaju na disk. Podatci iz datoteka mogu se čitati izravno, korištenjem običnog programa za uređivanje teksta ili korištenjem nekog od posebnih programa za rad s XML podatcima. Nešto napredniji način pohrane je da se XML elementi pohranjuju u relacijsku bazu podataka. Nedostatak tog pristupa je da relacijska struktura baze ne odgovara hijerarhijskom pristupu XML dokumenata. Zbog toga su se počele kreirati posebne XML baze podataka koje su svojim načinom rada posebno prilagođene pohrani i radu s XML podatcima.

Povećavanje dostupnosti podataka

XML podatke pohranjuje u običnu tekstualnu datoteku koja je čitljiva gotovo na svakoj platformi. Format je jasno vidljiv i jednostavno je napraviti računalni program koji će na odgovarajući način interpretirati podatke. Postoji nekoliko inicijativa s idejom da se za pohranu podataka umjesto zatvorenih binarnih formata (npr. doc, xls,...) za pohranu podataka koristi XML format. Danas sve više računalnih programa koristi taj format za pohranu podataka.

Izradu novih specijaliziranih jezika za označavanje

XML je jezik ali i platforma koja služi za stvaranje novih, specijaliziranih jezika za označavanje. Neki od jezika koji su kreirani iz XML-a

XML proširenja i tehnologije

Prednosti i nedostaci XML-a

Prednosti

Nedostaci

Verzije XML-a

Postoje 2 verzije XML-a. Prva XML 1.0 inicijalno je kreirana 1998. godine. Do danas je imala nekoliko manjih revizija. Širom je prihvaćena i još i danas se preporučuje za korištenje. Verzija XML 1.0 bazira se na filozofiji da je zabranjeno sve što nije dozvoljeno. S razvojem drugih standarda na koje se oslanja (prvenstveno Unicode koji je u međuvremenu s verzije 2.0 došao do verzije 4.0 dolazilo je prvenstveno na velikim sustavima (IBM mainframe) do određenih problema jer se nisu mogli koristiti oni znakovi koju u vrijeme definiranja standarda nisu postojali. Druga verzija XML 1.1 inicijalno je objavljena 2004. godine i ima određena svojstva koja olakšavaju rad programima na velikim računalima. Njezin pristup je da je dozvoljeno sve što nije zabranjeno. Na takav način omogućuje se korištenje svih budućih Unicode znakova koji će se bilo kada u budućnosti definirati. Zbog svoje raširenosti uglavnom se još uvijek koristi verzija XML 1.0 jer je zadovoljavajuća za većinu korisnika. Korisnici na velikim računalnim serverima koji imaju problema s ograničenjima verzije XML 1.0 uglavnom su prešli na korištenje verzije XML 1.1

Vanjske poveznice