You are on page 1of 32

Chapter 1

Predgovor

U nekoliko posledih godina, XML je poeo da se upotrebava u najrazliitijim oblastima, meu kojima su: pravo, aeronautika, finansije, osigurae, robotika, multimedija, ugostitestvo, turizam, likovne umetnosti, graditestvo, telekomunikacije, softver, pooprivreda, fizika, novinarstvo, teologija, maloprodaja i stripovi. XML je postao najpoenija sintaksa za nove formate dokumenata u gotovo svim raunarskim aplikacijama. Upotrebava se na Linuxu, Windowsu, Macintoshu i mnogim drugim raunarskim platformama. Veliki centralni raunari u ujorkom Volstritu meusobno trguju deonicama tako to razmeuju odgovarajue XML dokumente. Deca koja igraju igrice na kunim raunarima snimaju svoje dokumente u XML-u. Navijai na ekranima svojih mobilnih telefona u realnom vremenu primaju rezultate utakmica, opet u formatu XML. XML je jednostavno najrobusnija, najpouzdanija i najfleksibilnija dosad izumena sintaksa za dokumente. XML za programere je sveobuhvatan vodi kroz brzo rastui svet XML-a. Obrauje sve vidove XML-a od osnovnih pravila sintakse, preko pojedinosti pravea DTD-ova i ema, do interfejsa za programirae aplikacija (API-ja) pomou kojih moete itati i pisati XML dokumente na raznim programskim jezicima.

ta obuhvata ova kiga


Postoje hiade XML aplikacija koje su formalno ustanovili konzorcijum W3C i druga tela za standardizaciju, kao sto su OASIS i Object Management Group. Jos je vie nestandardizovanih aplikacija, poput Microsoftove Channel Definition Format i Mind Reading Markup Language Johna Guajarda. Sve ih nije mogue opisati u jednoj kizi, kao to se u jednoj kizi ne mogu opisati ni svi programi koji se mogu napisati ili su ve napisani na Javi. Ova kiga se usredsreuje na sam XML. Obuhvaena su osnovna pravila kojih se moraju pridravati svi XML dokumenti i ihovi autori od Web dizajnera koji upotrebavaju SMIL za dodavae animacija na Web stranice, do C++ programera koji za razmenu serijalizovanih objekata sa udaenom bazom podataka koriste SOAP.

xiii This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

U kizi su opisane i sledee opte tehnologije za podrku XML-a, koje se koriste u raznim XML aplikacijama: XLink Atributska sintaksa za hiperveze izmeu XML i neXML dokumenata. One mogu biti: proste jednosmerne veze poznate iz HTML-a, viesmerne veze izmeu vie dokumenata i veze izmeu dokumenata u koje ne moete upisivati. XSLT XML aplikacija koja opisuje transformacije jednog dokumenta u drugi, pri emu se koriste isti ili razliiti XML renici. XPointer Sintaksa za URI identifikatore odlomaka, kojima se biraju odreeni delovi XML dokumenta na koji upuuje URI identifikator; esto se koristi zajedno sa XLinkom. XPath Ne-XML sintaksa koju XPointer i XSLT upotrebavaju za identifikovae odreenih delova XML dokumenata. Primera radi, pomou XPatha moe se izdvojiti trei element adrese dokumenta ili svi elementi sa atributom email ija je vrednost elharo@metalab.unc.edu. XInclude Sredstvo za pravee velikih XML dokumenata kombinovaem drugih gotovih dokumenata i ihovih odlomaka. Prostori imena Sredstvo za uoavae razlika izmeu elemenata i atributa iz razliitih, ali istoimenih XML renika; na primer, za razlikovae naslova kige od naslova Web stranice koja je sastavni deo Web lokacije o kigama. eme XML renik za opisivae dozvoenog sadraja XML dokumenata napravenih pomou drugih XML renika. SAX Akronim od Simple API for XML, to je naziv interfejsa za programirae aplikacija zasnovanih na dogaajima; implementiraju ga mnogi analizatori (ralaivai) XML teksta. DOM Akronim od Document Object Model (objektni model dokumenta), to je ime jeziki nezavisnog interfejsa za programirae aplikacija, koji XML dokument tretira kao stablo ugneenih objekata razliitih svojstava. XHTML XML-izovana verzija HTML-a, koja se moe proiriti drugim XML aplikacijama, kao to su MathML i SVG. RDDL Akronim od Resource Directory Description Language (jezik za opisivae kataloga resursa), to je naziv XML aplikacije zasnovane na jeziku XHTML, koja je nameena dokumentima smetenim na kraj URL adrese prostora imena.

xiv | Predgovor This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Navedene tehnologije se koriste u vie razliitih XML aplikacija, bez obzira na to da li su definisane u XML-u (kao XLinks, XSLT, XInclude, prostori imena, eme, XHTML i RDDL) ili u nekoj drugoj sintaksi (kao XPointers, XPath, SAX i DOM). U ovoj kizi nisu detano objaene XML aplikacije koje su vane samo maem delu korisnika XML-a. Meu takvim aplikacijama su: SVG Scalable Vector Graphics standard za XML kodirae vektorskih crtea, koji je usvojio W3C. MathML Mathematical Markup Language XML aplikacija za ugradu jednaina u Web stranice i druge dokumente, koju je W3C usvojio kao standard. RDF Resource Description Framework XML aplikacija za opisivae resursa, naroito metapodataka koji se mogu nai u kartinom katalogu biblioteka. Prihvaena u W3C kao standard. Ponekad emo neku od tih aplikacija upotrebiti u primerima, ali neemo detano objaavati sve aspekte odgovarajueg renika. Te aplikacije su zanimive i vane, ali su (kao i hiade drugih) prvenstveno nameene upotrebi u specijalnom softveru koji poznaje sve pojedinosti ihovih formata. Na primer, veina grafikih dizajnera ne radi neposredno sa SVG-om, nego SVG dokumente pravi pomou svojih uobiajenih alatki, kao to je Adobe Illustrator. Oni ne moraju ni znati da koriste XML. Ova kiga se usredsreuje na standarde koji su vani gotovo svim programerima to rade u XML-u. Istraiemo XML tehnologije zajednike velikom broju primena XML-a, a ne one koje su vane u samo nekoliko ogranienih domena.

ta je novo u treem izdau


XML nije stajao u mestu tokom dve godine protekle od drugog izdaa kige XML in a Nutshell. Najvidivija promena u ovom izdau jeste to to ono opisuje XML 1. 1. Meutim, izmene u verziji 1.1 nisu toliko velike kao to bi novi broj verzije (.1) implicirao. Zapravo, ako ne govorite mongolski, burmanski, amharski, kambodanski ili jo nekoliko maih jezika, u XML-u 1.1 ima veoma malo novog materijala zanimvog za vas. XML 1.0 i 1.1 isti su u gotovo svakom praktinom pogledu. Razlika izmeu ih je sigurno mnogo maa od razlike izmeu Jave 1.0 i 1.1. Zato emo u ovoj kizi razmatrati XML kao jedan entitet, a na XML 1.1 eksplicitno upuivati samo u retkim prilikama kada se te verzije zaista razlikuju. Verovatno se otprilike 98% kige jednako dobro odnosi i na XML 1.0 i na XML 1.1. Dodali smo i poglave posveeno XIncludeu, novijem pronalasku konzorcijuma W3C; koristi se za pravee velikih XML dokumenata kombinovaem maih dokumenata i ihovih delova. Elliotte je napisao gotovo polovinu prvih realizacija XIncludea, a i prvu kigu napravenu pomou XIncludea, pa nam je ova tema posebno znaajna. Ostala poglava kige preraena su koliko je zahtevao uticaj verzije 1.1 XML-a na obraene teme, kao i uticaj promena datih tehnologija u pomenute dve godine. Mnoge teme su aurirane tako da odgovaraju posledoj verziji odgovarajue specifikacije, i to:

Predgovor This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

xv

SAX 2.0.1 Prostori imena 1.1 DOM Level 3 XPointer 1.0 Unicode 4.0.1

I najzad, u kizi su ispravene mnoge male greke i propusti.

Organizacija kige
Deo I, Koncepti XML-a, uvodi osnovne standarde koji ine jezgro XML-a i kojih se moraju pridravati sve XML aplikacije i softver. U emu ete ukratko saznati ta je dobro oblikovan XML dokument, i ta su definicija tipa dokumenta (DTD), prostor imena i Unicode. Deo II, Narativni dokumenti, istrauje tehnologije koje se uglavnom upotrebavaju za XML dokumente narativnog tipa, kao to su Web stranice, kige, lanci, dnevnici i drame. Saznaete ta su i kako rade XSLT, CSS, XSL-FO, XLinks, XPointers, XPath, XInclude i RDDL. Meu najneoekivanijim dogaajima u istoriji XML-a bilo je to to je iroko prihvaen za izradu strukturiranih dokumenata punih podataka, kao to su proraunske tabele (engl. spreadsheets), finansijski statistiki podaci, matematike tabele i formati datoteka. Deo III, Dokumenti slini zapisima baze podataka, istrauje upotrebu XML-a u takvim primenama. U emu emo se usredsrediti na alatke i interfejse za programirae aplikacija koji su potrebni za pisae softvera za obradu XML-a a to su SAX, DOM i eme. Najzad, deo IV, Referentni pregled osnovnih XML tehnologija, predstava niz referentnih poglava koja ine jezgro svake kige iz ove edicije. U ima su data detana sintaktika pravila za osnovne XML tehnologije, meu kojima su XML, DTD-ovi, eme, XPath, XSLT, SAX i DOM. Preite u taj deo kige kada hoete da brzo pronaete preciznu sintaksu neega to znate da moete da uradite, ali ne znate kako.

Konvencije koriene u kizi


Tekst konstantne irine koristi se za:

Sve to se moe pojaviti u XML dokumentu, kao to su imena elemenata, oznake (engl. tags), vrednosti atributa, reference entiteta i instrukcije za obradu. Sve to se moe pojaviti u programu, kao to su rezervisane rei, operatori, imena metoda, imena klasa i literali.
Polucrni tekst konstantne irine koristi se za:

Ono to unosi korisnik. Naglaavae u primerima i odlomcima koda.


Kurziv konstantne irine upotreben

je za:

Zamenive elemente u programskom kodu.

xvi |

Predgovor This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Kurziv se upotrebava za: Nove termine na mestu definicije i termine na engleskom. Naglaavae u telu teksta. Putae, imena datoteka i programa. (Meutim, ako je ime programa ujedno i ime Javine klase, napisano je fontom konstantne irine, kao i ostala imena klasa.) Imena domena i mrenih raunara (cafeconleche.org).
Ova sliica ukazuje na savet, predlog ili optu napomenu.

Ova sliica ukazuje na upozoree ili opomenu.

Znaajni delovi koda, celi programi i dokumenti obino su ovako smeteni u zaseban pasus:
<?xml version="1.0"?> <?xml-stylesheet href="person.css" type="text/css" ?> <osoba> Alen Tjuring </osoba>

XML uzima u obzir razliku izmeu velikih i malih slova. Element OSOBA nije jednak elementu osoba, niti elementu Osoba. Pisci na jezicima koji uzimaju u obzir razliku izmeu velikih i malih slova ne mogu uvek da se dre gramatikih pravila standardnog engleskog jezika. Obino se reenica moe preformulisati tako da se potuju pravila i XML-a i engleskog, i mi smo se potrudili da tako uradimo kad god je bilo mogue. Meutim, u retkim sluajevima problem nije bilo mogue zaobii, i tada je engleski loije prolazio. Premda je veina primera upotrebenih u kizi pojednostavena da bi se mogla jo negde upotrebiti, nekoliko ih ima stvarnu vrednost. Slobodno ih upotrebite u svom kodu cele ili samo delove. Za to vam nije potrebna specijalna dozvola. to se nas tie, oni su javno vlasnitvo (to svakako ne vai za tekst objaea).

Komentari italaca
Bie nam drago da ujemo opte komentare italaca o tome kako bi se kiga mogla poboati konkretnim ispravkama ili temama koje bi trebalo obuhvatiti. Adrese elektronske pote autora kige jesu elharo@metalab.unc.edu i smeans@ewm.biz. Molimo vas, uzmite u obzir da nas dvojica svakodnevno primamo vie stotina elektronskih poruka i da ne moemo odgovoriti na svaku. Najvee anse da dobiju odgovor imaju oni koji se predstave kao itaoci ove kige. Takoe vas molimo da svoje poruke aete s naloga e-pote na koji treba poslati odgovor i u kome je adresa za odgovor tano zadata. Nita nas toliko ne obeshrabruje kao kada nam se, nakon to utroimo sat i vie vremena na prouavae i pisae detanog odgovora na zanimivo pitae, odgovor vrati zato to je sagovornik svoju poruku poslao s javnog

Predgovor This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

xvii

terminala, a prethodno se nije potrudio da upie svoju pravu adresu e-pote meu parametre itaa Weba. Proverili smo i testirali informacije koje navodimo u kizi, ali se ipak moe desiti da se mogunosti opisanih tehnologija promene (ili ete pronai greku u naem opisu). Pristalice smo stare izreke Ako vam se kiga svidi, recite to svojim prijateima. Ako vam se ne svidi, recite to nama Naroito bismo hteli da nam skrenete . pau na eventualne greke. Koliko god da su se pisci i redakcija potrudili oko ove kige, mora biti da nam je ipak promaklo nekoliko greaka. Ako pronaete neku, molimo vas da nas obavestite kako bismo mogli da je ispravimo u sledeem izdau. Sve podatke o grekama molimo da poaete neposredno autorima ove kige na prethodno navedene adrese e-pote.* Otvorena je i Web lokacija originala ove kige, na kojoj su navedene pronaene greke, primeri i dodatne informacije. Adresa te lokacije je: http://www.cafeconleche.org/books/xian3/ Pre nego to utroite vreme na prijavu greke, molimo vas da posetite ovu lokaciju i pogledate da li je tamo ve objavena ispravka. Tehnika pitaa i komentare aite e-potom neposredno autorima kige ili izdavaima, na adresu: bookquestions@oreilly.com, odnosno, redakcija@mikrokiga.co.yu Vie informacija o drugim izdaima, softveru i ostalim resursima koje OReilly stava na raspolagae javnosti, potraite na adresama: http://www.oreilly.com http://xml.oreilly.com http://www.xml.com Vie informacija o drugim izdaima i aktivnostima Mikro kige potraite na adresi: www.mikrokiga.co.yu

* Veina primera je prevedena, pa je mogue da su se i tu potkrale greke. Ako primetite greku u prevedenom izdau, molimo vas da poaete poruku na adresu redakcija@mikrokiga.co.yu.

xviii |

Predgovor This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

I
Koncepti XML-a

This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Poglavlje 1Uvod u XML

1
Uvod u XML
XML je akronim od eXtensible Markup Language, a konzorcijum W3C prihvatio ga je kao standard za oznaavae (engl. markup) dokumenata. On definie optu sintaksu za oznaavae podataka jednostavnim, svima razumivim oznakama (engl. tags). XML obezbeuje standardan format za raunarske dokumente, dovono fleksibilan da se moe prilagoditi za najrazliitije oblasti kao to su Web lokacije, elektronska razmena podataka, vektorska grafika, genealogija, ponuda nekretnina, serijalizacija objekata, pozivae udaenih procedura, sistemi glasovne pote itd. Moete pisati sopstvene programe za rad s podacima u XML dokumentima i ihovu obradu. Ako to uradite, postae vam dostupan veliki broj besplatnih biblioteka na raznim jezicima na kojima se moe itati i pisati XML, pa ete moi da se usredsredite ba na ono to je potrebno vaem programu. Za rad sa XML dokumentima moete upotrebiti i gotov softver, kao to su itai Weba (engl. Web browsers) ili programi za obradu teksta. Jedan deo alatki moe da radi sa svim XML dokumentima. Druge su prilagoene za podrku odreenoj XML aplikaciji u nekoj oblasti poput vektorske grafike i izvan e su najee neupotrebive. No, u svim sluajevima koristi se ista sintaksa, ak i ako je namerno sakrivena u alatkama koje se lake koriste ili ograniena na jednu aplikaciju.

Prednosti XML-a
XML je metajezik za oznaavae tekstualnih dokumenata. Podaci se smetaju u XML dokumente u obliku znakovnih nizova (engl. strings), izmeu tekstualnih oznaka koje ih opisuju. Osnovne jedinice podataka i oznaka u XML-u nazivaju se elementi. XML specifikacija precizno definie sintaksu koje se morate pridravati pri pisau oznaka: kako su elementi razgranieni oznakama, kako oznaka izgleda, kakva imena elementi mogu imati, gde se stavaju atributi itd. Povrno gledano, oznake XML dokumenta mnogo lie na oznake HTML dokumenta, ali meu ima postoje bitne razlike.

3 This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Najvanije je da je XML jezik za metaoznaavae. To znai da on nema fiksan skup oznaka i elemenata koji bi trebalo da zadovoe svaije potrebe u svim oblastima i zauvek. Svaki pokuaj da se napravi konaan skup takvih oznaka, osuen je na neuspeh. Umesto toga, XML omoguava programerima i piscima da izmiaju potrebne elemente onda kad im zatrebaju. Hemiari mogu upotrebavati elemente koji opisuju molekule, atome, veze, reakcije i ostale entitete koji se sreu u hemiji. Agenti za prodaju nekretnina mogu upotrebavati elemente koji opisuju stanove, stanarine, provizije, lokacije i druge entitete potrebne za nekretnine. Muziari mogu upotrebavati elemente koji opisuju etvrtine nota, polovine nota, violinske kueve, tekstove pesama i ostale objekte uobiajene u muzici. Slovo X u imenu XML potie od rei Extensible (proiriv), to znai da se jezik moe proirivati i prilagoavati da bi zadovoio razliite potrebe. Iako je XML veoma fleksibilan kad je re o elementima koji se mogu koristiti, veoma je strog u mnogim drugim aspektima. Specifikacija XML-a definie gramatiku XML dokumenata, koja kazuje gde se oznake moraju staviti, kako one moraju izgledati, kakva su imena elemenata dozvoena, kako se elementima pridruuju atributi itd. Ta gramatika je dovono specifina da omoguava pravee ralaivaa i analizatora sintakse XML-a, u daem tekstu analizatora (engl. parser), koji mogu proitati svaki XML dokument. Za dokumente koji zadovoavaju pravila te gramatike kaemo da su dobro oblikovani (engl. well-formed). Dokumenti koji nisu dobro oblikovani bivaju odbijeni, kao to biva odbijen svaki C program koji sadri sintaksnu greku. Programi za obradu XML-a (engl. XML processors) odbijaju dokumente koji nisu dobro oblikovani. Radi interoperabilnosti, pojedinci i organizacije mogu se dogovoriti da upotrebavaju samo odreene oznake. Takve skupove XML oznaka nazivamo primene XML-a (engl. XML applications) ili XML aplikacije. XML aplikacija nije softverska aplikacija koja upotrebava XML, kao to su Mozilla ili Microsoftov Word. To su primene XML-a u odreenoj oblasti na primer u vektorskoj grafici ili u kulinarstvu. Oznake u XML dokumentu opisuju egovu strukturu. Pomou ih moete videti koji elementi su pridrueni kojim drugim elementima. U dobro projektovanom XML dokumentu, oznake opisuju i semantiku dokumenta. Primera radi, oznaka moe ukazati na to da je element datum ili ime osobe ili bar-kod. U dobro projektovanim XML aplikacijama, oznake nita ne kazuju o tome kako dokument treba prikazati. Drugim reima, ne kazuju da li je odreeni element ispisan polucrno ili kurzivom ili je stavka nabrajaa u listi. XML je jezik za oznaavae strukture i semantike, a ne za oznaavae naina prikazivaa.
Postoji nekoliko XML aplikacija za opisivae naina predstavaa teksta; jedna takva je XSL Formatting Objects (XSL-FO). Meutim, to su izuzeci koji potvruju pravilo. Iako XSL-FO opisuje prezentaciju, XSL-FO dokument se nikada ne pie direktno. Umesto ega napisali biste semantiki boe strukturiran XML dokument, a potom biste upotrebili opis stilova XSL Transformations da biste strukturno orijentisani XML izmenili u prezentacijski orijentisan XML.

Oznake dozvoene u odreenoj primeni XML-a mogu se dokumentovati u emi (engl. schema). Sa emom se mogu porediti pojedini primerci dokumenta. Za dokumente koji zadovoavaju emu kaemo da su validni (engl. valid). Za one koji ne
4 | Poglavlje 1: Uvod u XML This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

zadovoavaju tu emu kaemo da su, u odnosu na u, nevalidni (engl. invalid). Dakle, validnost dokumenta zavisi od eme s kojom se dokument poredi. Ne moraju svi dokumenti biti validni. Za mnoge primene dovono je da dokument bude dobro oblikovan. Postoji mnogo raznih jezika za XML eme i ihovi nivoi izraajnosti su razliiti. Najraireniji jezik za XML eme i jedini definisan u samoj specifikaciji XML-a jeste definicija tipa dokumenta (engl. document type definition, DTD). Svaki DTD navodi sve dozvoene oznake i odreuje gde se i na koji nain one mogu pojaviti u dokumentu. U XML-u DTD-ovi nisu obavezni, nego opcioni. S druge strane, DTD-ovi nisu uvek dovoni. Sintaksa DTD-ova je veoma ograniena i ne omoguava pravee raznih korisnih iskaza poput Ovaj element sadri broj ili Ovaj znakovni niz je datum koji pada izmeu 1974. i 2032 Takva ograniea moete izraziti jezi. kom XML Schema Language, koji je prihvatio W3C. (Taj jezik se ponekad pogreno naziva optim imenom schemas, tj. eme.) Pored DTD-a i XML Schema Languagea, postoji jo mnogo jezika za opisivae ema, meu kojima su RELAX NG, Schematron, Hook, Examplotron itd. Trenutno su svi jezici za eme isto deklarativni. Meutim, uvek ima ograniea koja se ne mogu izraziti ukoliko programski jezik nije potpun u Tjuringovom smislu. Na primer, ako je dati XML dokument narudbenica, jezik mora biti potpun u Tjuringovom smislu da bi se cena svake stavke_narudbenice pomnoila enom koliinom, sve to sabralo, i proverilo da li je zbir jednak elementu meuzbir. Danai jezici za eme ne mogu proveriti ni ograniea koja su spona u odnosu na dokument, kao to je Svaki SKU element odgovara SKU pou zapisa u tabeli proizvoda unutar baze podataka inventara Ako piete program za itae XML . dokumenata, moete mu dodati kd za proveru takvih iskaza, kao to biste uradili da piete kd za itae tekstualne datoteke kojoj kao graninik slui znak tabulator. Razlika je u tome to XML analizatori predstavaju podatke u mnogo podesnijem formatu i obavaju vei deo posla umesto vas, pa sami morate da dopiete mae koda.

Uvod u XML

ta XML nije
XML je jezik za oznaavae i nita vie od toga. To treba zapamtiti. Pria o XML-u se toliko naduvala da ima udi koji od XML-a oekuju da radi sve i svata, ako treba i kola da opere. Pre svega, XML nije programski jezik. Ne postoji kompajler XML-a koji ita XML datoteke i daje izvrni kd. Eventualno biste mogli definisati skript jezik koji koristi format XML-a kao matini, a interpretira ga neki binarni program, ali bi ak i ta primena bila neobina. XML se moe upotrebiti kao format naredaba u programima koji neto rade, kao to i tradicionalni programi mogu itati tekstualne konfiguracijske datoteke i preduzimati razne akcije na osnovu proitanog. Zaista nema razloga da konfiguracijska datoteka ne bude u formatu XML, umesto u formatu nestrukturiranog teksta. Neki noviji programi upotrebavaju XML konfiguracijske datoteke; ali je uvek program taj koji preduzima akciju, a ne sam XML dokument. XML dokument ne radi nita, on samo postoji.

ta XML nije This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Barem jedna XML aplikacija XSL Transformations (XSLT) dokazano je potpuna u Tjuringovom smislu. (Dokaz je izveden konstrukcijom, tj. praveem maine koja je potpuna.) Na lokaciji http:// www.unidex.com/turing/utm.htm moete videti univerzalnu Tjuringovu mainu napisanu u XSLT-u.

Drugo, XML nije protokol za mreni prenos. XML ne ae podatke preko mree, kao ni HTML. Podaci poslati preko mree HTTP-om, FTP-om, NFS-om ili nekim drugim protokolom, mogu biti kodirani u XML-u; ali opet mora postojati neki softver izvan XML dokumenta koji e poslati dokument. Najzad, da pomenemo primer gde prie najee sakrivaju istinu, XML nije baza podataka. XML-om ne moete zameniti Oracle ili MySQL server. Baza podataka moe sadrati XML podatke, bilo kao VARCHAR ili BLOB ili neki namenski XML tip podataka, ali sama baza podataka nije XML dokument. XML podatke moete smestiti u bazu podataka na serveru i preuzeti ih iz e u formatu XML, ali vam za to treba softver napisan na pravom programskom jeziku kao to su C ili Java. Da bi smestio XML podatke u bazu podataka, softver na klijentskoj strani ae ih serveru pomou ustanovenog mrenog protokola kao to je TCP/IP. Softver na serverskoj strani prima XML podatke, ralauje ih i smeta u bazu. Da biste preuzeli XML dokument iz baze podataka, po pravilu ete morati da upotrebite neki posredniki program (engl. middleware product) kao to je Enhydra, koja e napraviti i poslati SQL upite bazi podataka, a skup rezultata formatirati kao XML pre nego to ih vrati klijentu. ienica je da neke baze podataka integriu taj softver u svoje servere ili za obavae te funkcije obezbeuju softverske dodatke, kao to je Oracleov servlet XSQL. U tim scenarijima, XML slui veoma dobro kao sveprisutan prenosni format, nezavisan od platforme. Meutim, on nije baza podataka, niti ga tako treba upotrebavati.

Prenosivi podaci
XML prua primamivu mogunost pravea dugotrajnih formata podataka nezavisnih od platforme. Ve dugo dokumenti pisani na jednoj platformi nisu uvek itivi na drugim platformama, niti su itivi u razliitim programima na istoj platformi, pa ak ni u prethodnim ili buduim verzijama istog programa na istoj platformi. A kada je dokument itiv, to jo ne znai da e se ba svi podaci uspeno proitati. Veliki deo podataka prikupenih tokom prvih iskrcavaa na Mesec, krajem ezdesetih i poetkom sedamdesetih godina, danas je izguben. ak i ako pronaete ureaj s trakama koji moe da ita podatke s traka kakve se ve odavno ne koriste, niko vie ne zna u kom formatu su ti podaci bili zapisani! XML je neverovatno jednostavan i dobro dokumentovan format podataka. XML dokumenti su tekstualni, pa ih moe itati svaka alatka koja ume da ita tekstualne datoteke. Tekstualni su ne samo podaci, nego i oznake, a smetene su u samoj XML datoteci. Ne morate brinuti o tome da li je svaki osmi bajt nasumina popuna (engl. padding), pogaati da li je etvorobajtna vrednost ceo broj zapisan kao komplement broja dva ili broj u formatu pokretnog zareza zapisan po standardu IEEE 754, niti pokuavati da deifrujete koji se celobrojni kd odnosi na koje svojstvo formatiraa. Nazive oznaka moete itati neposredno i iz ih ete tano saznati ta je u dokumentu. Slino tome, poto oznake definiu granice elemenata, mali su izgledi

| Poglavlje 1: Uvod u XML This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

da vas prevari neoekivana konvencija o zavretku reda ili broj uzastopnih razmaka koji se pretvara u tabulator. U XML-u su sve vane pojedinosti strukture dokumenta eksplicitne. Ne morate da rekonstruiete format unazad, niti da se oslaate na nepotpunu i esto nedostupnu dokumentaciju. Moda e neki proizvoai softvera pokuati da zarobe svoje kupce nedokumentovanim i nestandardnim binarnim formatom podataka. Meutim, dugorono e svima biti boe ako budemo mogli da koristimo jasno dokumentovane, dobro poznate tekstualne formate koji se lako ralauju, kakve prua XML. On omoguava da se podaci i dokumenti prenose s jednog sistema na drugi, uz razumno oekivae da e prijemni sistem moi da ih shvati. Nadae, proverom validnosti prijemna strana moe ustanoviti da li je dobila ono to je oekivala. Java je obeala prenosiv programski kd; XML daje prenosive podatke. Na mnogo naina, XML je najprenosiviji i najfleksibilniji format dokumenata od pojave tekstualne ASCII datoteke.

Uvod u XML

Kako XML radi


U primeru 1-1 prikazan je jednostavan XML dokument, kakav se sree u sistemu za upravae inventarom ili u bazi podataka skladita. Njegovi podaci su obeleeni oznakama (engl. tags) i atributima koji opisuju boju, veliinu, broj bar-koda, ime proizvoaa, ime proizvoda itd.
Primer 1-1. XML dokument
<?xml version="1.0"?> <product barcode="2394287410"> <manufacturer>Verbatim</manufacturer> <name>Datalife MF 2HD</name> <quantity>10</quantity> <size>3.5" </size> <color>crna</color> <description>diskete</description> </product>

Ovaj dokument je tekst, pa se moe smestiti u tekstualnu datoteku koju moete ureivati u svakom standardnom programu za obradu teksta, kao to su BBEdit, jEdit, UltraEdit, Emacs ili vi. Za XML vam nije potreban specijalan program za obradu teksta. tavie, smatramo da veina XML editora opte namene vie kota nego to vredi i da ih je mnogo tee koristiti od klasinih programa za obradu teksta. Programi koji zaista hoe da shvate sadraj XML dokumenta dakle, koji s im imaju vee ambicije nego da ga tretiraju kao bilo koju drugu datoteku za itae dokumenta upotrebavaju XML analizator. Analizator ralauje dokument na elemente, atribute i ostale komponente. On aplikaciji prosleuje sadraj XML dokumenta pare po pare. Ako analizator u bilo kom trenutku otkrije da dokument kri XML-ova pravila o dobrom oblikovau, aplikaciji e prijaviti greku i prestae da analizira dokument. U nekim sluajevima, analizator i posle prve pronaene greke nastava da ita dokument, da bi mogao da otkrije i prijavi i ostale greke. Meutim, nakon otkrivaa prve greke u dobrom oblikovau, analizator uvek prestaje da prosleuje sadraj elemenata i atributa koje prepoznaje.

Kako XML radi This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Aplikacije najee imaju preciznija pravila o tome koji su elementi i atributi dozvoeni na kom mestu u dokumentu. Na primer, u dokumentu o biologiji nema mesta za element violinski_ku. Neka od tih pravila mogu biti precizno definisana pomou eme napisane na jeziku kao to je W3C XML Schema Language, RELAX NG i DTD-ovi. Dokument moe sadrati URL adresu eme. Neki XML analizatori uoavaju taj podatak, pa tokom itaa porede dokument s egovom emom i proveravaju da li dokument zadovoava ograniea navedena u oj. Takav analizator nazivamo analizator validnosti (engl. validation parser). Kree tih ograniea nazivamo greka validnosti, a postupak provere sadraja dokumenta u odnosu na emu je validacija. Ako analizator validnosti nae greku validnosti, prijavie je aplikaciji u ije ime analizira dokument. Potom ta aplikacija odluuje eli li da nastavi analizirae dokumenta. Meutim, greke validnosti ne moraju biti fatalne (za razliku od greaka u dobrom oblikovau), pa aplikacija moe odluiti da ih zanemari. Nisu svi analizatori ujedno i analizatori validnosti neki proveravaju samo dobru oblikovanost. Aplikacija koja od analizatora prima podatke, moe biti: ita Weba poput Netscape Navigatora ili Internet Explorera, koji korisniku prikazuje dokument program za obradu teksta poput StarOffice Writera, koji XML dokument uitava radi obrade baza podataka kao to je Microsoftov SQL Server, koji XML podatke smeta u nov zapis program za crtae kao to je Adobe Illustrator, koji XML interpretira kao dvodimenzionalne koordinate sadraja crtea program za tabelarne proraune poput Gnumerica, koji analizira XML da bi pronaao brojeve i funkcije koje se upotrebavaju u odreenom proraunu program za line finansije kao to je Microsoftov Money, koji XML vidi kao bankovni izvetaj program koji ita XML dokument i iz ega izdvaja naslove za dnevne vesti program koji ste sami napisali na Javi, C-u, Pythonu ili nekom drugom jeziku, i koji radi ono to vi hoete da radi gotovo bilo ta drugo. XML je izuzetno fleksibilan format podataka. Upotrebava se za sve navedeno i u jo mnogo situacija. To su samo primeri iz prakse. Teorijski se svi podaci koji se uopte mogu smestiti u raunar, mogu snimiti u formatu XML. Praktino je XML podesan za skladitee i razmenu onih podataka koji se mogu lako pretvoriti u tekst. Nepodesan je jedino za digitalizovane podatke kao to su fotografije, snimci zvuka, video i druge veoma velike sekvence bitova.

Evolucija XML-a
XML je potomak jezika SGML (Standardized Generalized Markup Language). Jezik od kog je nastao SGML sedamdesetih godina izumili su Charles F. Goldfarb, Ed Mosher i Ray Lorie iz IBM-a, a razvijalo ga je vie stotina udi irom sveta, sve

| Poglavlje 1: Uvod u XML This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

dok ga 1986. ISO nije prihvatio kao standard 8879. SGML je reavao mnoge probleme koje reava XML, i to na isti nain na koji ih reava XML. To je semantiki i strukturiran jezik za oznaavae tekstualnih dokumenata. SGML je izuzetno moan, pa je bio prihvaen u amerikoj vojsci, dravnim slubama, avionskoj, kosmikoj industriji i drugim oblastima kojima je trebao efikasan nain rukovaa tehnikim dokumentima dugakim desetine hiada stranica. Najvei uspeh SGML-a je HTML, koji je primeeni SGML. Meutim, HTML je samo jedna od primena SGML-a. HTML ni izdaleka ne omoguava sve to SGML. Poto autore dokumenata ograniava konanim skupom oznaka za opisivae Web stranica a pri tom ih opisuje prvenstveno za potrebe prikazivaa HTML je zapravo malo vie od klasinog jezika za oznaavae, koji je prihvaen u itaima Weba. Nije podesan za upotrebu izvan oblasti izrade Web stranica. Na primer, HTML se ne moe upotrebiti za razmenu podataka izmeu nekompatibilnih baza podataka, niti za slae auriranih kataloga proizvoda maloprodajnim objektima. HTML je nameen za Web stranice i to radi veoma dobro, ali to je sve to on moe. SGML je bio oigledan izbor za druge aplikacije koje koriste Internet, a nisu proste Web stranice nameene obinim posetiocima. Nedostatak SGML-a je egova komplikovanost on je izuzetno komplikovan. Slubena specifikacija SGML-a sadri preko 150 teko razumivih stranica. Ona obuhvata vie specijalnih sluajeva i malo verovatnih scenarija. Toliko je sloen da gotovo nikada nije napraven softver koji bi ga u potpunosti realizovao. Programi koji su realizovali ili koristili razliite podskupove SGML-a esto su bili nekompatibilni. Specijalna funkcionalnost jednog programa, koju su egovi autori smatrali sutinskom, u drugom programu bila je smatrana suvinom i izostavena je. Godine 1996, Jon Bosak, Tim Bray, C.M. Sperberg-McQueen, James Clark i nekolicina drugih poeli su rad na laganoj verziji SGML-a, koja je zadrala najvei deo egovih funkcionalnosti, ali izostavila one koje su se u prethodnih 20 godina iskustva pokazale redundantnim, teko ostvarivim, zbuujuim za kraje korisnike ili prosto nekorisnim. Rezultat je bio XML 1.0 objaven februara 1998.; on je odmah postigao uspeh. Punim srcem su ga prihvatili mnogi programeri kojima je trebao strukturirani jezik za oznaavae, ali se nisu mogli naterati da savladaju SGML-ovu sloenost. XML je poeo da se upotrebava u najrazliitijim oblastima od sudskih dokumenata do uzgajalita svia. Meutim, XML 1.0 predstavao je tek poetak. Sledei standard bio je Namespaces in XML (Prostori imena u XML-u), to je bio pokuaj da se oznake razliitih XML aplikacija upotrebavaju u istom dokumentu i to bez sukoba. Tako je Web stranica o kigama mogla imati jedan element title koji se odnosio na naslov stranice i drugi element title koji se odnosio na naslov kige, a da se ta dva elementa ne sukobe. Sledei je bio Extensible Stylesheet Language (XSL), to je XML aplikacija za primenu stilova na XML dokumente, da bi se dobio oblik koji mogu prikazati itai Weba. XSL se uskoro podelio na XSL Transformations (XSLT) i XSL Formatting Objects (XSL-FO). XSLT je postao jezik opte namene za pretvarae jednog XML dokumenta u drugi, bez obzira na to da li se radi o prikazivau dokumenta u obliku Web stranice ili nekoj drugoj nameni. XSL-FO je XML aplikacija za opisivae strukture stranica koje e biti odtampane na podlozi ili prikazane na Webu. Po mogunostima i izraajnosti, ona se pribliila PostScriptu.

Uvod u XML

Evolucija XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Meutim, XSL nije jedina mogunost za predstavae XML dokumenata. Kada je bio izumen XML, u HTML-u su se ve upotrebavali kaskadni opisi stilova (engl. cascading style sheets, CSS), i pokazalo se da oni prilino dobro odgovaraju i XML-u. Kada je nastao CSS Level 2, W3C je CSS izriito namenio za opis predstavaa XML dokumenata. Za tu ulogu je, bez obzira na to da li se radi o tampi ili Webu, u svetu SGML-a od svog nastanka bio prihvaen DSSSL (Document Style Sheet and Semantics Language). XLink (Extensible Linking Language) poeo je definisaem monih struktura za povezivae XML dokumenata u hipertekstualnu mreu; u poreeu s im, . HTML-ova oznaka A (koja slui istoj svrsi) podsea nas na re anemina I XLink se podelio na dva zasebna standarda: XLink za opisivae veza izmeu dokumenata i XPointer za adresirae pojedinanih delova XML dokumenta. Tada je primeeno da XPointer i XSLT razvijaju prefiene, ali nekompatibilne sintakse za isti posao: identifikovae odreenih elemenata XML dokumenata. Zato su adresni delovi obe specifikacije odvojeni i objedieni u treoj specifikaciji nazvanoj XPath. Malo kasnije izdvojio se jo jedan deo XLinka, XInclude, kao sintaksa za pravee sloenih dokumenata objediavaem pojedinanih dokumenata i ihovih odlomaka. Sledei deo slagalice bio je jednoobrazni interfejs za pristupae sadraju XML dokumenta iz Java, JavaScript ili C++ programa. Najjednostavniji interfejs za programirae aplikacija (API) samo je tretirao dokument kao objekat koji sadri druge objekte. tavie, ve se, i u W3C i izvan ega, radilo na definisau takvog objektnog modela dokumenta (Document Object Model, DOM) za HTML. Nije bilo teko proiriti ga tako da obuhvati i XML. Izvan W3C, David Megginson, Peter Murray-Rust i drugi lanovi liste slaa xml-dev, uoili su da razni XML analizatori, iako kompatibilni u pogledu dokumenata koje mogu analizirati, nisu kompatibilni unutar ihovih API-ja. To je dovelo do razvoja interfejsa za programirae Simple API for XML (SAX-a). Godine 2000. objaven je SAX2, koji je doneo istiji API, vee mogunosti konfigurisaa i podrku za prostore imena. Jedno od iznenaea tokom evolucije XML-a bilo je to da su ga programeri vie upotrebavali za strukture sline zapisima, kao to su serijalizovani objekti i tabele baza podataka, nego za narativne strukture za koje se tradicionalno upotrebavao SGML. DTD-ovi su veoma lepo radili za narativne strukture, ali su imali neka ograniea u pogledu dokumenata slinih zapisima, a upravo su ih programeri pravili. Konkretno, glavni problemi su bili nepostojae tipova podataka i ienica da sm DTD nije XML dokument. Vie kompanija i pojedinaca poelo je da radi na jezicima za opisivae ema koji bi otklonili te nedostatke. Mnogi od tih predloga bili su podneseni konzorcijumu W3C; on je oformio radnu grupu koja je trebalo da objedini najboe delove tih predloga i napravi neto jo boe. Grupa je 2001. objavila verziju 1.0 jezika W3C XML Schema Language. Naalost, pokazalo se da je jezik previe sloen i teak. Stoga se nekoliko proizvoaa softvera vratilo poslu i napravilo istije i elegantnije jezike za eme, kao to su RELAX NG i Schematron. Posle svih tih dogaaja postalo je jasno da XML 1.0, XPath, SAX, DOM i W3C XML Schema Language imaju sline, ali ipak pomalo razliite konceptualne modele strukture XML dokumenta. Primera radi, XPath i SAX smatraju CDATA odeke obinom sintaksom, dok ih DOM tretira razliito od vorova (engl. nodes)

10 | Poglavlje 1: Uvod u XML This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

obinog teksta. Zato je W3C oformio radnu grupu XML Core Working Group, koja priprema Skup informacija o XML-u (XML Information Set) koji e biti zajedniki za sve navedene standarde. Kako se sve vie XML dokumenata sve vee vrednosti prenosi preko Interneta, uoena je potreba da se te transakcije obezbede i da se proverava identitet ihovih uesnika. Pored upotrebe postojeih mehanizama kao to su SSL i HTTP, koji identitet proveravaju pomou softvera ugraenog u upotrebene prenosne protokole, razvijeni su formati za obezbeee samih XML dokumenata tokom celog ihovog ivotnog veka, umesto samo tokom prenosa. Tako je nastao XML Encryption standardna XML sintaksa za ifrovae digitalnog sadraja, ukuujui tu i delove poverivih XML dokumenata. Za proveru identiteta nameen je XML Signature (XML potpis), zajedniki IETF i W3C standard za digitalno potpisivae sadraja i ugradu tih potpisa u XML dokumente. Poto digitalno potpisivae i algoritmi za ifrovae rade s nizovima bajtova, a ne s modelima XML podataka, i XML Signature i XML Encryption zasnovani su na standardnom formatu za serijalizaciju, Canonical XML, koji uklaa sve nebitne razlike izmeu dokumenata kao to su razmaci (beline) unutar oznaka i upotreba navodnika ili polunavodnika za razdvajae vrednosti atributa. Tokom svih ovih dogaaja, osnovna specifikacija XML 1.0 ostala je nepromeena. Dodata nova funkcionalnost nije meala tu osnovu nego ju je nadogradila. To je dokaz solidnog dizajna i snage XML-a. Meutim, sam XML 1.0 zasnovan je na standardu Unicode 2.0. Kako je Unicode nastavio da se razvija i da obuhvata nova pisma kao to su mongolsko, kambodansko i burmansko, XML je poeo da zaostaje. Prvenstveno zato je poetkom 2004. objaven XML 1.1. Treba napomenuti da XML 1.1 nudi malo toga novog programerima koji koriste engleski, panski, japanski, kineski, arapski, ruski, francuski, nemaki, holandski ili bilo koji drugi jezik koji je ve Unicode 2.0 podravao. Nema sume da emo morati da izumimo jo mnogo proirea za XML. ak se i ova bogata kolekcija specifikacija bavi samo tehnologijama koje lee u osnovi XML-a. Mnogo je ve napraveno i jo bre se radi na XML aplikacijama, meu kojima su SOAP, SVG, XHTML, MathML, Atom, XForms, WordprocessingML i hiade drugih. XML se pokazao kao vrst teme za mnogo razliitih tehnologija.

Uvod u XML

Evolucija XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

11

Poglavlje 2Osnove XML-a

2
Osnove XML-a
U ovom poglavu nauiete kako se piu jednostavni XML dokumenti. Saznaete da se XML dokument sastoji od tekstualnog sadraja obeleenog tekstualnim oznakama kao to su <SKU>, <identifikator_zapisa> i <autor>, koje pomalo lie na HTML oznake. Meutim, HTML sadri oko stotinu unapred definisanih oznaka koje opisuju formatirae Web stranice. U XML-u pravite proizvoan broj oznaka prema svom nahoeu. tavie, te oznake uglavnom opisuju tip sadraja dokumenta, a ne egove formate i strukturu. U XML-u se ne kae da je neto ispisano kurzivom ili reefno ili polucrno, nego da je to kiga ili biografija ili kalendar. Premda je XML oputeniji od HTML-a kada se radi o oznakama koje doputa, mnogo je stroi to se tie ihovog poloaja i naina na koji su napisane. Konkretno, svi XML dokumenti moraju biti dobro oblikovani. Pravila dobrog oblikovaa postavaju ograniea kao to su Svaka poetna oznaka mora imati odgovarajuu zavrnu oznaku i Vrednosti atributa moraju biti napisane u navodnicima Ta pra. vila se ne smeju kriti, pa je XML dokumente neto tee napisati, ali ih je zato lake analizirati; oni ipak omoguavaju gotovo neogranienu fleksibilnost izraavaa.

XML dokumenti i XML datoteke


XML dokument sadri tekst. Poto on nikada ne sadri binarne podatke, moe se otvoriti u svakom programu koji ume da ita tekstualne datoteke. Primer 2-1 sadri otprilike najjednostavniji XML dokument koji se moe zamisliti. Bez obzira na to, re je o dobro oblikovanom XML dokumentu, pa ga XML analizatori mogu itati i shvatiti (ukoliko se za raunarski program moe rei da neto shvata).
Primer 2-1. Kraje jednostavan, ali potpun XML dokument
<osoba> Alen Tjuring </osoba>

12 This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

U najeem scenariju, ovaj dokument bi predstavao celokupan sadraj datoteke nazvane osoba.xml ili moda 2-1.xml. Meutim, XML nije sitniav u pogledu imena datoteka. to se tie analizatora, ova datoteka bi se mogla zvati osoba.txt, osoba ili Ej ti, u ovoj datoteci je XML! Moda se vaem operativnom sistemu takva imena ne bi svidela, ali se XML analizator nee buniti. Dokument uopte ne mora biti smeten u datoteku moe i u zapis ili u poe baze podataka. Mogao ga je u letu generisati odreeni CGI program kao odgovor na upit nekog itaa. S druge strane, mogao bi biti smeten u vie datoteka, premda je to malo verovatno za tako jednostavan dokument. Ako se nalazi na Web serveru, verovatno e mu dodeliti MIME tip medija application/xml ili text/xml. Meutim, XML aplikacije bi mu mogle dodeliti odreeniji MIME tip medija, kao to su application/mathml+xml, application/xslt+xml, image/svg+xml, text/vnd.wap.wml, pa ak i text/html (u veoma specijalnim sluajevima).
U generikim XML dokumentima, prednost treba dati MIME tipu application/xml umesto text/xml, premda su mnogi Web serveri fabriki podeeni da koriste text/xml. Tip text/xml podrazumevano upotrebava ASCII skup znakova, to je u veini XML dokumenata netano.

Osnove XML-a

Elementi, oznake i znakovni podaci


Dokument u primeru 2-1 sadri samo jedan element nazvan osoba. Taj element je razgranien poetnom oznakom (engl. start-tag) <osoba> i zavrnom oznakom (engl. end-tag) </osoba>. Sve to se nalazi izmeu poetne i zavrne oznake elementa (iskuujui ih) naziva se sadraj (engl. content) elementa. Sadraj pomenutog elementa je tekst:
Alen Tjuring

Razmaci (beline) predstavaju deo sadraja, mada ih mnoge aplikacije zanemaruju. Markirae (engl. markup) dokumenta ine oznake <osoba> i </osoba>. Znakovni niz Alen Tjuring i razmaci koji ga okruuju jesu znakovni podaci (engl. character data). Oznaka je najei oblik markiraa XML dokumenta, mada postoje i druge vrste koje emo razmotriti kasnije.

Sintaksa oznaka
XML oznake povrno podseaju na HTML oznake. Poetna oznaka poie znakom < a zavrava se znakom >; zavrna oznaka poie znakom </ a zavrava se sa >; izmeu oznaka stoji ime elementa. Meutim, za razliku od HTML oznaka, nove XML oznake moete praviti tokom pisaa dokumenta. Da biste opisali osobu, upotrebite oznake <osoba> i </osoba>. Da biste opisali kalendar, upotrebite oznake <kalendar> i </kalendar>. Imena oznaka po pravilu odraavaju tip sadraja unutar elementa, a ne nain formatiraa tog sadraja.

Prazni elementi
Postoji i specijalna sintaksa za prazne elemente, one koji nemaju sadraja. Takav element moe biti predstaven jednom oznakom praznog elementa (engl. empty-element tag), koja poie znakom <, a zavrava se znakovima />. Na primer, u jeziku XHTML, to je XML-izovana verzija standardnog HTML-a, elementi prekid reda
Elementi, oznake i znakovni podaci This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved. | 13

(engl. line break) i horizontalna linija (engl. horizontal rule) opisuju se oznakama <br /> i <hr />. Te oznake su ekvivalentne parovima oznaka <br></br> odnosno <hr></hr>. Sami odluite koji oblik oznaka ete upotrebavati za prazne elemente. U XML-u i XHTML-u (za razliku od HTML-a) ne moete upotrebiti samo poetnu oznaku na primer, <br> ili <hr> a da ne upotrebite i odgovarajuu zavrnu oznaku. To bi bila greka u pogledu dobrog oblikovaa.

Uzimae u obzir razlike izmeu malih i velikih slova


Za razliku od HTML-a, XML uzima u obzir razliku izmeu malih i velikih slova. Element OSOBA nije jednak elementu osoba, niti elementu Osoba. Ako element otvorite oznakom <osoba>, ne moete ga zatvoriti oznakom </OSOBA>. Moete upotrebavati i mala i velika slova po svom izboru, ali svaki element morate dosledno ispisati.

XML stabla
Pogledajmo neto sloeniji XML dokument. U primeru 2-2 imamo element osoba koji sadri vie podesno oznaenih podataka, kako bi se videlo ihovo znaee.
Primer 2-2. Sloeniji XML dokument koji opisuje odreenu osobu
<osoba> <ime_i_prezime> <ime>Alen</ime> <prezime>Tjuring</prezime> </ime_i_prezime> <zanimae>naunik u oblasti raunarstva</zanimae> <zanimae>matematiar</zanimae> <zanimae>kriptograf</zanimae> </osoba>

Roditei i potomci
XML dokument u primeru 2-2 jo uvek sadri samo jedan element osoba. Meutim, sada taj element ne sadri samo nediferencirane znakovne podatke. On ima etiri elementa potomka (engl. child elements): jedan element ime_i_prezime i tri elementa zanimae. Element ime_i_prezime ima dva sopstvena elementa potomka, element ime i element prezime. Za element osoba kaemo da je rodite (roditeski element) elementa ime_i_prezime i triju elemenata zanimae. Element ime_i_prezime je rodite elementa ime i elementa prezime. Katkada se kae da su element ime_i_prezime i elementi zanimae braa (engl. siblings) ili bratski elementi. Meusobno bratski su i elementi ime i prezime. Kao i u udskom drutvu, roditei mogu imati vie potomaka. Za razliku od udskog drutva, XML svakom potomku daje tano jednog, a ne dva ili vie roditea. Svakom elementu (uz jedan izuzetak koji emo uskoro objasniti) rodite je tano jedan element. Drugim reima, svaki element se nalazi unutar odreenog drugog elementa. Ako je poetna oznaka elementa unutar odreenog elementa, onda i egova zavrna oznaka mora biti unutar istog elementa. U XML-u su zabraene oznake koje se preklapaju, kao u <strong><em>ovo je uobiajeno u HTML-u</strong></em>. Poto element em poie unutar elementa strong, on se mora i zavriti unutar istog elementa.

14 | Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Korenski element
Svaki XML dokument ima jedan element koji nema roditea. To je prvi element u dokumentu i element koji sadri sve druge elemente. U primerima 2-1 i 2-2, tu ulogu je imao element osoba. Njega nazivamo korenski element (engl. root element) dokumenta. Katkada ga nazivaju i element (celog) dokumenta (engl. document element). Svaki dobro oblikovan XML dokument ima jedan korenski element. Poto se elementi ne smeju preklapati, i poto svi elementi osim korenskog imaju jednog roditea, XML dokumenti tvore strukturu podataka koju programeri nazivaju stablo (engl. tree). Na slici 2-1 prikazan je taj odnos za primer 2-2. Svaki sivi pravougaonik predstava jedan element. Svaki crni pravougaonik predstava znakovne podatke. Svaka strelica predstava odnos sadravaa.
osoba

Osnove XML-a

ime_i_ prezime

zanimae

zanimae

zanimae

ime

prezime

naunik u oblasti raunarstva

matematiar

kriptograf

Alen

Tjuring

Slika 2-1. Dijagram stabla za primer 2-2.

Meovit sadraj
U primeru 2-2, sadraj elemenata ime, prezime i zanimae bili su znakovni podaci; dakle, tekst bez ikakvih oznaka. Sadraj elemenata osoba i ime_i_prezime bili su elementi potomci i razmaci (beline), koje veina aplikacija zanemaruje. Takva razlika izmeu elemenata koji sadre samo znakovne podatke i elemenata koji sadre samo elemente potomke (i eventualno nekoliko razmaka belina) uobiajena je u dokumentima slinim zapisima. Meutim, XML se moe upotrebiti i za narativne dokumente slobodnijeg oblika, kao to su poslovni izvetaji, lanci za asopise, studentski eseji, kratke prie, Web stranice itd.; ilustraciju daje primer 2-3.
Primer 2-3. Narativno organizovan XML dokument
<biografija> <pasus> <ime_i_prezime><ime>Alen</ime> <prezime>Tjuring</prezime> </ime_i_prezime> bio je jedan od prvih udi koji su zaista zasluili titulu <istaknuto>naunika u oblasti raunarstva</istaknuto>. Njegovi doprinosi toj oblasti previe su brojni da bismo ih ovde sve naveli, ali najpoznatiji su epohalni: <istaknuto>Tjuringov test</istaknuto>

Elementi, oznake i znakovni podaci This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

15

Primer 2-3. Narativno organizovan XML dokument (nastavak)


i <istaknuto>Tjuringova maina</istaknuto>. </pasus> </definicija><termin>Tjuringova maina</termin> je do dana danaeg standardan test za utvrivae da li je neki raunar zaista inteligentan. Jo ga nijedan raunar nije poloio. </definicija> <definicija><termin>Tjuringova maina</termin> je apstraktan automat koji se moe nalaziti u konano mnogo staa, ima beskonanu memoriju, i za ega se moe dokazati da je ekvivalentan svakom drugom automatu s proizvono velikom memorijom, koji se moe nalaziti u konano mnogo staa. Dakle, ono to vai za jednu Tjuringovu mainu, vai za sve ih, bez obzira na to kako su napravene. </definicija> <pasus> <ime_i_prezime><prezime>Tjuring</prezime></ime_i_prezime> je bio i perfektan <zanimae>matematiar</zanimae> i <zanimae>kriptograf</zanimae>. U saveznikom razbijau nemakog ifratora Enigma, egov doprinos je bio odluujui. Tjuring se ubio <datum><dan>7</dan>. <mesec>juna</mesec> <godina>1954</godina></datum>, nakon to je bio osuen kao homoseksualac i prisien da prima iekcije enskih hormona. </pasus> </biografija>

Korenski element ovog dokumenta jeste biografija. Ta biografija ima elemente potomke pasus i definicija, kao i razmake (beline). I elementi pasus i definicija sadre druge elemente: termin, istaknuto, ime_i_prezime i zanimae, a i neke neoznaene znakovne podatke. Za elemente kao to su pasus i definicija, koji sadre elemente potomke i znakovne podatke koji nisu samo razmaci (beline), kaemo da imaju meovit sadraj (engl. mixed content). Meovit sadraj je uobiajen u XML dokumentima u kojima su lanci, eseji, prie, kige, romani, izvetaji, Web stranice i sve drugo to je organizovano kao pisano pripovedae. Meovit sadraj je rei (a s im je i tee raditi) u raunarski generisanim i obraenim XML dokumentima, koji se upotrebavaju za razmenu baza podataka, serijalizaciju objekata, trajne formate datoteka itd. Jedna od prednosti XML-a je to da ga lako moete prilagoditi veoma razliitim zahtevima raunarski generisanih dokumenata i dokumenata koje su napisali udi.

Atributi
XML elementi mogu imati atribute. Atribut je par imevrednost pridrueno poetnoj oznaci elementa. Imena atributa su od ihovih vrednosti razdvojena znakom jednakosti i opcionim razmakom. Vrednosti atributa moraju biti zatvorene u navodnike ili polunavodnike. Primera radi, sledei element osoba ima atribut roena ija je vrednost 1912-06-23 i atribut umrla ija je vrednost 1954-06-07:
<osoba roena="1912-06-23" umrla="1954-06-07"> Alen Tjuring </osoba>

16 |

Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

to se tie XML analizatora, prethodni element je identian sledeem. U emu su umesto navodnika upotrebeni polunavodnici, redosled atributa je drugaiji i dodato je nekoliko razmaka oko znaka jednakosti.
<osoba umrla = '1954-06-07' roena = '1912-06-23'> Alen Tjuring </osoba>

Osnove XML-a

Razmake oko znaka jednakosti svako dodaje po svom nahoeu. Polunavodnici su korisni u sluajevima kada vrednost atributa sadri navodnik. Redosled atributa nije vaan. U primeru 2-4 prikazano je kako se atributi mogu upotrebiti za kodirae velikog dela istih podataka navedenih u dokumentu slinom zapisu iz primera 2-2.
Primer 2-4. XML dokument koji osobu opisuje pomou atributa
<osoba> <ime_i_prezime ime="Alen" prezime="Tjuring"/> <zanimae vrednost="naunik u oblasti raunarstva"/> <zanimae vrednost="matematiar"/> <zanimae vrednost="kriptograf"/> </osoba>

Ovime se otvara pitae treba li i kada treba za uvae podataka upotrebavati elemente potomke, a kada atribute. To je predmet estoke rasprave. Neki informatiari tvrde da su atributi podesni za metapodatke oko elementa, dok su elementi za same podatke. Drugi ukazuju na to da nije uvek oigledno ta su podaci, a ta metapodaci. Zaista, odgovor moe zavisiti od toga gde se podaci koriste. Nesporno je da svaki element moe imati samo jedan atribut datog imena. Malo je verovatno da e to postati problem za datum roea ili smrti; moglo bi da bude problem za zanimae, ime, adresu i sve drugo od ega element moe imati vie primeraka. Nadae, struktura atributa je sasvim ograniena. Vrednost atributa je prosto nediferenciran tekst. Podela datuma crticama na godinu, mesec i dan u prethodnim odlomcima koda predstava maksimalnu podstrukturu koja je prikladna za ugradu u atribut. Mnogo je fleksibilnija i proirivija struktura zasnovana na elementima. Uprkos tome, za neke primene atributi su sigurno podesniji. Najzad, ako sami piete svoj XML renik, na vama je da odluite kada ete upotrebiti element, a kada atribut. Atributi su korisni i u narativnim dokumentima, kao to je pokazano u primeru 2-5. U emu je moda neto oiglednije ta pripada elementima, a ta atributima. Sirov narativni tekst predstaven je u obliku znakovnih podataka unutar elemenata. Dodatne informacije koje objaavaju te podatke predstavene su u obliku atributa. Meu tim informacijama su reference izvora, URL adrese slika, hiperveze, i datumi roea i smrti. Meutim, ak i ovo se moglo uraditi drugaije. Na primer, brojevi fusnota mogu biti atributi elementa fusnota, a ne znakovni podaci.

Atributi This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

17

Primer 2-5. Narativni dokument u kome su upotrebeni atributi


<biografija xmlns:xlink="http://www.w3.org/1999/xlink/"> <slika izvor="http://www.turing.org.uk/turing/pi1/busgroup.jpg" irina="152" visina="345"/> <pasus><osoba roena='1912-06-23' umrla='1954-06-07'> <ime>Alen</ime> <prezime>Tjuring</prezime> </osoba> je bio jedan od prvih udi koji su zaista zasluili titulu <istaknuto>naunika u oblasti raunarstva</istaknuto>. Njegovi doprinosi toj oblasti previe su brojni da bismo ih ovde sve naveli, ali najpoznatiji su epohalni: <istaknuto xlink:type="simple" xlink:href="http://cogsci.ucsd.edu/~asaygin/tt/ttest.html">Tjuringov test</istaknuto> i <istaknuto xlink:type="simple" xlink:href="http://mathworld.wolfram.com/TuringMachine.html">Tjuringova maina</istaknuto>.</pasus> <pasus><prezime>Tjuring</prezime> je bio i perfektan <zanimae>matematiar </zanimae> i <zanimae>kriptograf</zanimae>. U saveznikom razbijau nemakog ifratora Enigma, egov doprinos bio je odluujui. <fusnota izvor="The Ultra Secret, F.W. Winterbotham, 1974">1</fusnota></pasus> <pasus> <prezime>Tjuring</prezime>se ubio <datum><dan>7</dan>. <mesec>juna</mesec> <godina>1954</godina>.</datum> nakon to je bio osuen kao homoseksualac i prisien da prima iekcije enskih hormona.<fusnota izvor="Alan Turing: the Enigma, Andrew Hodges, 1983">2</fusnota> </pasus> </biografija>

XML imena
Specifikacija XML-a ume da bude sitniava i izbiriva to se tie imena. Bez obzira na to, ona pokuava da bude efikasna kada je mogue. Jedan od naina da to postigne jeste, po mogustvu, koriee istih pravila za razliite stavke. Na primer, pravila za imena XML elemenata jednaka su pravilima za imena XML atributa, kao i za imena nekih ree upotrebavanih komponenata. Sve ih skupno nazivamo XML imena (engl. XML names). U sutini, XML imena mogu sadrati sve alfanumerike znakove. Meu ima su standardna engleska slova od A do Z i od a do z, kao i cifre od 0 do 9. XML imena mogu sadrati i neengleska slova, brojeve i ideograme, kao to su , , , . U imenima se mogu koristiti i sledea tri znaka interpunkcije: _ . doa crta crtica taka

U XML imenima ne smeju se javati drugi znakovi interpunkcije, kao to su navodnici, polunavodnici, znak za dolar, kapica (^), znak za procenat i taka i zarez (;).

18 |

Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Dvotaka je dozvoena, ali je rezervisana za prostore imena, to je objaeno u poglavu 4. XML imena ne smeju sadrati beline bilo koje vrste, bez obzira na to da li se radi o razmaku, znaku za vraae na poetak reda, znaku za prelazak u novi red, nelomivom razmaku itd. Najzad, sva imena koja poiu znakovnim nizom XML (u svim kombinacijama malih i velikih slova) rezervisana su za standardizaciju u XML specifikacijama organizacije W3C.
Osnove XML-a
Primarni novitet u XML-u 1.1 jeste da XML imena mogu sadrati samo znakove definisane u standardu Unicode 3.0 i egovim novijim verzijama. XML 1.0 je ogranien na znakove definisane u standardu Unicode 2.0. XML 1.1 dozvoava u imenima i znakove iz sledeih dodatnih pisama: burmanskog, mongolskog, Thaana, kambodanskog, Yi i amharskog. (U XML-u 1.0 sva su ta pisma bila dozvoena u tekstualnom sadraju. Tada se nisu smela upotrebavati za imena elemenata, atributa i entiteta.) XML 1.1 ne prua gotovo nita novo programerima koji u svojim oznakama ne upotrebavaju navedena pisma. XML 1.1 dozvoava da imena sadre i neuobiajene simbole, kao to je muziki simbol za estostruno cimbalo, pa ak i priblino milion kodova kojima jo nisu dodeeni znakovi. Meutim, koriee tih simbola u imenima bilo bi veoma nerazumno. Toplo vam preporuujemo da, ak i u XML-u 1.1, imena ograniite na slova, cifre, ideograme i izriito dozvoene ASCII znakove interpunkcije.

XML imena smeju da ponu iskuivo slovom, ideogramom ili znakom doa crta. Ne mogu poeti cifrom, crticom niti takom. Duina XML imena nije ograniena. Zato su sledei elementi dobro oblikovani:
<Drivers_License_Number>98 NY 32</Drivers_License_Number> <month-day-year>7/23/2001</month-day-year> <ime_i_prezime>Alen Tjuring</ime_i_prezime > <_4-lane>I-610</_4-lane> <tlphone>011 33 91 55 27 55 27</tlphone> <epcha>a

nhaNbahob</epcha>

Sledei elementi su neprihvativi:


<Driver's_License_Number>98 NY 32</Driver's_License_Number> <month/day/year>7/23/2001</month/day/year> <ime i prezime>Alen Tjuring</ime i prezime> <4-lane>I-610</4-lane>

Reference
Znakovni podaci unutar elementa ne smeju sadrati znak za mae od (<) koji nema odgovarajuu izlaznu (engl. escape) sekvencu (</). Znak < uvek se tumai kao poetak oznake. Ukoliko vam zatreba u tekstu, pretvorite ga u izlaznu sekvencu pomou reference entiteta (engl. entity reference) &lt;, numerike reference znaka (engl. numeric

Reference This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

19

character reference) &#60; ili heksadecimalne numerike reference znaka (engl. hexadecimal numeric character reference) &#x3C;. Kada analizator bude itao dokument, zamenie sve reference &lt;, &#60 ili &#x3C znakom <, a nee se zbuniti i protumaiti < kao poetak nove oznake. Na primer:
<SCRIPT LANGUAGE="JavaScript"> if (location.host.toLowerCase().indexOf("ibiblio") &lt; 0) location.href="http//&&ibiblio.org/xml/"<; } </SCRIPT> {

Znakovni podaci ne smeju sadrati ni sirov znak ampersend (&) koji nema svoju izlaznu sekvencu. Taj znak se uvek tumai kao poetak reference entiteta. Ovako se ampersend referencom entiteta &amp; pretvara u izlaznu sekvencu:
<company>W.L. Gore &amp; Associates</company>

Poto je znak ampersend u Unicode sistemu definisan kao kd 38, mogli smo upotrebiti i numeriku referencu znaka, &#38;:
<company>W.L. Gore &#38; Associates</company>

Reference entiteta kao to je &amp; i reference znakova kao to je &#60; spadaju u markiraa. Kada aplikacija ralauje i analizira XML dokument, ta markiraa se zameuju znakom ili znakovima na koje referenca upuuje. XML unapred definie pet referenci entiteta. To su:
&lt;

Znak mae od poznat i kao otvorena ugaona zagrada (<) ,


&amp;

Ampersend (&)
&gt;

Znak vee od poznat i kao zatvorena ugaona zagrada (>) ,


&quot;

Ravan navodnik (")


&apos;

Ravan polunavodnik, poznat i kao apostrof (') U sadraju elemenata, samo se &lt; i &amp; moraju upotrebavati umesto doslovno napisanih znakova < i &. Ostale reference su opcione. &quot; i &apos; su korisne unutar vrednosti atributa, gde bi sirov " ili ' mogao biti pogreno protumaen kao zavretak vrednosti atributa. Na primer, u sledeoj XML oznaci slike upotrebena je referenca entiteta &apos; da bi se ubacio polunavodnik u ime OReilly:
<slika izvor='oreilly_koala3.gif' irina='122' visina='66' alt='Powered by O&apos;Reilly Books' />

Iako se znak vee od ne moe pogreno protumaiti kao da zavrava oznaku koju nije trebalo da zatvori, referenca &gt; je dozvoena najvie zbog simetrije s referencom &lt;.

20 |

Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Postoji jedan neobian sluaj kada znak vee od zaista morate pretvoriti u izlaznu sekvencu. U znakovnim podacima ne sme se pojaviti niz ]]>. Umesto ega morate pisati ]]&gt;.

Pored pet unapred definisanih referenci entiteta, moete koristiti i druge koje ste sami naveli u definiciji tipa dokumenta. U poglavu 3 objasniemo kako se to radi. Reference entiteta i znakova moete upotrebavati samo u sadraju elemenata i vrednostima atributa. Ne smete ih koristiti u imenima elemenata, imenima atributa, niti u drugim vrstama markiraa. Tekst kao to je &amp; ili &#60; moe se pojaviti unutar komentara ili instrukcije za obradu. Meutim, na tim mestima reference nee biti razreene. Analizator zameuje samo reference koje pronae u sadraju elemenata i vrednostima atributa. On ne prepoznaje reference na drugim mestima.

Osnove XML-a

Odeci CDATA
Kada XML dokument sadri uzorke XML ili HTML izvornog koda, znakovi < i & u tim uzorcima moraju biti napisani kao &lt; odnosno &amp;. to vie odeaka s doslovno navedenim kodom dokument sadri i to su oni dui, to kodirae postaje zamornije. Umesto da se gavite s tim, svaki uzorak doslovno navedenog koda moete zatvoriti u odeak CDATA (engl. CDATA section). Odeak CDATA razgraniavate znakovima <![CDATA[ i ]]>. Sve to se zatekne izmeu graninika <![CDATA[ i ]]> tretira se kao sirov znakovni podatak. Zato u odeku CDATA znak < ne otvara XML oznaku, znak & ne zapoie referencu entiteta itd. Svi znakovi unutar odeka CDATA tumae se kao obini znakovni podaci, a ne kao delovi markiraa. Primera radi, u udbeniku za Scalable Vector Graphics (SVG), napisanom na XHTML-u, moete naii na ovako neto:
<p>You can use a default <code>xmlns</code> attribute to avoid having to add the svg prefix to all your elements:</p> <pre><![CDATA[ <svg xmlns="http://www.w3.org/2000/svg" width="12cm" height="10cm"> <ellipse rx="110" ry="130"/> <rect x="4cm" y="1cm" width="3cm" height="6cm /> </svg> ]]></pre>

SVG izvorni kd ukuen je neposredno u XHTML datoteku, a da nismo morali paivo da zamenimo svaki znak < referencom &lt;. Tako smo dobili SVG dokument, a ne ugraenu SVG sliku, to bi se u ovom primeru desilo da SVG kd nismo smestili u odeak CDATA. Jedino to se u odeku CDATA ne sme pojaviti jeste zavrni graninik odeka CDATA,
]]> .

Odeci CDATA postoje kao pogodnost za programere, a ne za programe. Analizatori vas ne moraju obavestiti da li je odreen blok teksta potekao iz odeka CDATA, od normalnih znakovnih podataka ili od znakovnih podataka koji sadre reference entiteta kao to su &lt; i &amp;. Kada vam podaci postanu dostupni, te razlike e ve biti izbrisane. Kd koji piete ne sme zavisiti od tih razlika.

Odeci CDATA This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

21

Komentari
XML dokumenti mogu sadrati komentare, tako da koautori mogu ostavati napomene jedni drugima i sebi, dokumentujui zato su uradili to to su uradili i ta je jo ostalo da se uradi. XML komentari su sintaktiki jednaki HTML komentarima. Kao u HTML-u, komentari poiu sa <!-- i zavravaju se prvim primerkom niza -->. Na primer:
<!-- Ove hiperveze treba da proverim i auriram kada stignem. -->

Dve crtice se ne smeju pojaviti unutar komentara pre zavrnog -->. Izriito je zabraen zavretak komentara s tri crtice, --->. Komentare moete stavati bilo gde unutar znakovnih podataka u dokumentu. Moete ih stavati pre i posle korenskog elementa. (Komentari nisu elementi, pa se time ne kri XML pravilo o strukturi stabla niti ono o jedinstvenom korenskom elementu.) Meutim, komentari se ne smeju pojaviti unutar oznake ili drugog komentara. Aplikacije koje itaju i obrauju XML dokumente mogu, ali ne moraju proslediti informacije iz komentara. Svaka aplikacija slobodno moe da ispusti sve komentare, ako se tako svia enom autoru. Ne piite dokumente ili aplikacije koji zavise od dostupnosti komentara. Oni slue iskuivo tome da sirov izvorni kd XML dokumenta uine razumivijim udima. Komentari nisu nameeni raunarskim programima. U te svrhe upotrebite instrukciju za obradu (engl. processing instruction).

Instrukcije za obradu
U HTML-u se komentari ponekad zloupotrebavaju za podrku nestandardnim proireima. Primera radi, sadraj elementa script katkada se zatvara u komentar da bi se zatitio od prikazivaa u itau koji ne ume da radi sa skriptovima. Web server Apache ralauje i analizira komentare u .shtml datotekama da bi prepoznao datoteke za umetae na serverskoj strani. Naalost, ti dokumenti, nakon obrade u raznim HTML editorima, ponekad ne preive s netaknutim komentarima i ima pridruenom semantikom. to je jo gore, bezazlen komentar moe biti pogreno protumaen kao ulaz u aplikaciju. Kao alternativno sredstvo prosleivaa informacija odreenim aplikacijama koje e itati dokument, XML ima instrukciju za obradu. Instrukcija za obradu poie sa <?, a zavrava sa ?>. Neposredno posle <? dolazi XML ime cia, to moe biti ime aplikacije kojoj je ta instrukcija nameena ili identifikator instrukcije. Ostatak instrukcije za obradu sadri tekst u formatu koji odgovara cinim aplikacijama. Na primer, u HTML-u se robotskom oznakom META saoptava pretraivaima i ostalim robotima treba li i kako da indeksiraju stranicu. Za XML dokumente predloena je kao ekvivalentna sledea instrukcija za obradu:
<?robots index="yes" follow="no"?>

Ci ove instrukcije za obradu je robots. Sintaktiki, ova instrukcija sadri dva pseudoatributa, jedan nazvan index, a drugi follow. Njihove vrednosti su yes ili no. Semantika ove instrukcije je sledea: ako atribut index ima vrednost yes, onda bi

22 |

Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

roboti pretraivaa trebalo da indeksiraju stranicu. Slino tome, ako atribut follow ima vrednost yes, onda e roboti pretraivaa posetiti lokacije na koje upuuju hiperveze stranice; ukoliko ima vrednost no, to nee biti uieno. Druge instrukcije za obradu mogu imati potpuno razliite sintakse i semantike. Primera radi, instrukcije za obradu mogu sadrati praktino neogranienu koliinu teksta. PHP smeta velike programe u instrukcije za obradu. Na primer:
<?php mysql_connect("database.unc.edu", "clerk", "password"); $result = mysql("HR", "SELECT LastName, FirstName FROM Employees ORDER BY LastName, Firstname"); $i = 0; while ($i < mysql_numrows ($result)) { $fields = mysql_fetch_row($result); echo "<person>$fields[1] $fields[0] </person>\r\n"; $i++; } mysql_close( ); ?>

Osnove XML-a

Instrukcije za obradu spadaju u oznaavae, ali nisu elementi. Stoga ih moete pisati na bilo kom mestu u XML dokumentu osim unutar oznaka, kao komentare. Smete ih pisati i pre i posle korenskog elementa. Najea instrukcija za obradu, xml-stylesheet, dokumentu pridruuje opis stilova. Ona se uvek pie pre korenskog elementa, kao u primeru 2-6. U emu instrukcija za obradu xml-stylesheet saoptava itau da na dokument, pre nego to ga prikae itaocu, primeni CSS opis stilova osoba.css.
Primer 2-6. XML dokument sa instrukcijom za obradu smetenom u prolog
<?xml-stylesheet href="osoba.css" type="text/css"?> <osoba> Alen Tjuring </osoba>

Da bi se izbegla zabuna s deklaracijom XML-a, zabraene su instrukcije za obradu nazvane xml, XML, XmL itd., u bilo kojoj kombinaciji malih i velikih slova. Instrukcijama za obradu moete davati sva druga imena koja zadovoavaju pravila XML-a.

Deklaracija XML-a
XML dokumenti bi trebalo da otponu deklaracijom XML-a (ali ne moraju). Deklaracija XML-a izgleda kao instrukcija za obradu nazvana xml, koja sadri pseudoatribute version, standalone i encoding. Strogo uzev, to nije instrukcija za obradu, nego deklaracija XML-a ni vie ni mae od toga. Ilustraciju daje primer 2-7.
Primer 2-7. Veoma jednostavan XML dokument s deklaracijom XML-a
<?xml version="1.0" encoding="ASCII" standalone="yes"?> <osoba> Alen Tjuring </osoba>

Deklaracija XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

23

XML dokumenti ne moraju imati deklaraciju XML-a, ali ako je imaju, ona mora biti prva stavka dokumenta. Pre e ne sme biti komentara, razmaka (belina), instrukcija za obradu itd. Razlog za to je to XML analizator na osnovu prvih pet znakova (<?xml) zakuuje kakvo je kodirae znakova u dokumentu recimo, da li je upotreben jednobajtni ili viebajtni skup znakova. Pre deklaracije XML-a sme biti samo nevidiva Unicode oznaka redosleda bajtova. Razmotriemo to ponovo u poglavu 5.

Atribut version
Atribut version bi trebalo da ima vrednost 1.0. Pod veoma neuobiajenim okolnostima moete mu dati vrednost 1.1. Poto zadavae verzije 1.1 ograniava dokument na najnovije verzije malog broja analizatora, a svi analizatori za XML 1.1 moraju podravati i XML 1.0, ne bi trebalo da olako zadajete verziju 1.1. Ne verujete? Najpre odgovorite na nekoliko pitaa: 1. Govorite li burmanski, mongolski, kambodanski, amharski ili divehi? 2. Sadre li vai podaci zastarele, netekstualne C0 kontrolne znakove kao to su vertikalni tabulator, prelazak na novu stranicu ili znak za zvonce? Ukoliko ste na oba pitaa odgovorili ne korieem XML-a 1.1 ne dobijate apso, lutno nita. Ako ste na jedno pitae odgovorili da moda imate razloga za kori, ee XML-a 1.1. XML 1.0 dozvoava da se burmanski, mongolski, kambodanski itd. upotrebavaju u znakovnim podacima i vrednostima atributa. XML 1.1 dozvoava da se ta pisma upotrebavaju i u imenima elemenata i atributa, to XML 1.0 ne doputa. XML 1.1 dozvoava i da se C0 kontrolni znakovi (sem znaka null) upotrebavaju u znakovnim podacima i vrednostima atributa (ukoliko su pretvoreni u numerike reference znakova poput &#x07;), to XML 1.0 ne doputa. Ako ijedan od ova dva uslova vai za vas, mogli biste upotrebiti XML 1.1 (premda bi trebalo da budete svesni da time znatno suavate potencijalnu publiku svog XML dokumenta). U protivnom, trebalo bi da upotrebavate iskuivo XML 1.0.

Atribut encoding
Dosad smo bili neodreeni u pogledu skupova znakova i kodiraa znakova. Rekli smo da su XML dokumenti sastaveni od istog teksta, ali nismo rekli kako su znakovi tog teksta kodirani. Po standardu ASCII? Latin-1? Unicode? Nekom etvrtom? Kratak odgovor na ovo pitae je da Dugaak odgovor je da su XML dokumenti . podrazumevano kodirani UTF-8 kodovima promenive duine u skupu znakova Unicode. Poto se radi o nadskupu skupa znakova ASCII, tekstualne datoteke napisane u istom ASCII-ju automatski su kodirane i po standardu UTF-8. Meutim, veina programa za obradu XML-a (naroito oni napisani na Javi) mogu obraivati mnogo vei broj skupova znakova. Analizatoru treba rei samo koji je standard za kodirae znakova upotreben u dokumentu. To je najboe uraditi preko metapodataka, koji su smeteni u sistem datoteka ili ih daje server. Meutim, ne pruaju svi sistemi podatke o skupu znakova, pa XML dozvoava dokumentima da sami naznae svoj skup znakova pomou deklaracije kodiraa (engl. encoding declaration) unutar deklaracije XML-a. U primeru 2-8 pokazano je kako biste naznaili da je dokument napisan u skupu znakova ISO-8859-1 (Latin-1), koji obuhvata i znakove kao to su i , potrebne u mnogim zapadnoevropskim jezicima.

24 |

Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

Primer 2-8. XML dokument kodiran u skupu znakova Latin-1


>?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <osoba> Erwin Schrdinger >/osoba>

U deklaraciji XML-a atribut encoding je opcion. Ako se on izostavi, a metapodaci su nedostupni, analizator pretpostava da je upotreben skup znakova Unicode. Na osnovu prvih nekoliko bajtova datoteke, analizator moe pokuati da utvrdi koje je Unicode kodirae upotrebeno. Ako su metapodaci dostupni, ali su suprotni deklaraciji o kodirau, onda analizator veruje metapodacima. Na primer, ukoliko HTTP ita kae da je dokument kodiran u ASCII-ju, a deklaracija o kodirau kae da je kodiran po standardu UTF-8, analizator e izabrati ASCII. Razna kodiraa i pravilno rukovae neengleskim XML dokumentima razmotriemo detanije u poglavu 5.

Osnove XML-a

Atribut standalone
Ukoliko atribut standalone (samostalan) ima vrednost no, onda aplikacija moe uitati sponi DTD (tj. DTD smeten u neku drugu datoteku, a ne u onu koja sadri dokument) da bi utvrdila prave vrednosti odreenih delova dokumenta. Primera radi, DTD moe sadrati podrazumevane vrednosti atributa koje analizator treba da prijavi, premda one u dokumentu ne postoje. Dokument koji nema DTD, a takvi su svi dokumenti u ovom poglavu, moe imati
yes kao vrednost atributa standalone. I dokument koji ima DTD moe imati yes kao vrednost atributa standalone, ukoliko taj DTD ni na koji nain ne mea sadraj

dokumenta ili je DTD potpuno interni. Pojedinosti o dokumentima s DTD-ovima objaene su u poglavu 3. U deklaraciji XML-a, atribut standalone je neobavezan. Ako je izostaven, pretpostava se da ima vrednost no.

Provera dobre oblikovanosti dokumenta


Svaki XML dokument, bez izuzetka, mora biti dobro oblikovan. To znai da mora zadovoiti vie pravila, meu kojima i sledea: 1. 2. 3. 4. 5. 6. 7. Svaka poetna oznaka mora imati odgovarajuu zavrnu oznaku. Elementi mogu biti ugneeni, ali se ne smeju preklapati. Mora postojati tano jedan korenski element. Vrednosti atributa moraju biti zatvorene u navodnike. Element ne sme imati dva istoimena atributa. Unutar oznaka ne sme biti komentara i instrukcija za obradu. U znakovnim podacima elemenata i atributa ne sme biti znakova < ili & koji nisu pretvoreni u izlaznu sekvencu.

Provera dobre oblikovanosti dokumenta This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

25

Ovo nije celokupna lista pravila. Dokument moe biti loe oblikovan na veoma mnogo naina. Celokupna lista pravila navedena je u poglavu 21. Neka od ih se odnose na strukture koje jo nismo razmatrali, kao to su DTD-ovi. Druga pravila ete veoma retko kriti ako budete sledili primere iz ovog poglava (na primer, nemojte stavati razmak izmeu poetnog < i imena elementa u oznaci). Bez obzira na to da li je greka mala ili velika i da li se sree retko ili esto, XML analizator koji ita dokument mora da je prijavi. Analizator moe, ali ne mora da prijavi sve greke u dobrom oblikovau koje pronae u dokumentu. Meutim, analizator ne sme pokuati da popravi dokument i da doda ono to smatra da je autor dokumenta izostavio. Ne sme dodati izostavene navodnike oko vrednosti atributa ili izostavenu zavrnu oznaku, niti sme zanemariti komentar napisan unutar poetne oznake. Analizator mora prijaviti greku. Tako je napraveno da bi se izbegli ratovi kompatibilnosti (va ita prijavuje 5 naih greaka, pa e i na ita prijavivati 5 vaih greaka), koji itae Weba prate od ihovih poetaka do danas. Zato proverite da li je va XML dobro oblikovan pre nego to ga objavite, bez obzira na to da li se radi o Web stranici, ulazu u bazu podataka ili neem treem. Najjednostavniji nain da to uradite jeste da uitate dokument u ita Weba koji ume da radi s XML dokumentima, kao to je Mozilla. Ukoliko je dokument dobro oblikovan, ita e ga prikazati. Ako nije, prikazae poruku o greci. Umesto uitavaa dokumenta u ita Weba, moete neposredno upotrebiti XML analizator. Veina XML analizatora nije nameena krajim korisnicima. Oni su zapravo biblioteke klasa projektovane za ugradu u program koji se lake koristi, kao to je Mozilla. Njihov interfejs komandne linije je minimalan, ako uopte postoji; esto nije dobro dokumentovan. Bez obzira na sve to, ponekad je bre provui grupu datoteka kroz interfejs komandne linije nego ih jednu po jednu uitavati u ita Weba. Nadae, kada nauite da radite s DTD-ovima i emama, iste alatke moi ete da upotrebavate za proveru validnosti dokumenata, to veina itaa Weba ne radi. Postoji mnogo XML analizatora dostupnih u raznim jezicima. Ovde emo prikazati proveru dobre oblikovanosti analizatorom libxml kompanije Gnome Project, koji moete preuzeti na lokaciji http://xmlsoft.org. Taj paket otvorenog izvornog koda napisan je na prilino prenosivom C-u i radi na veini glavnih platformi, ukuujui Windows, Linux i Mac OS X. (Unapred je instaliran u mnogim distribucijama Linuxa.) Postupak bi trebalo da bude slian i s drugim analizatorima, premda se pojedinosti mogu razlikovati. libxml je zapravo biblioteka, ali sadri i program xmllint koji pomou te biblioteke proverava dobru oblikovanost datoteka. xmllint se pokree pisaem egovog imena u Unixovom komandnom okrueu (engl. Unix shell) ili posle DOS-ovog odzivnika (engl. DOS prompt), kao i svaki drugi program koji ima komandnu liniju. Njegovi argumenti su URL adrese ili imena datoteka dokumenta koji treba proveriti. Evo rezultata koje je xmllint dao za jednu od ranijih verzija primera 2-5. Ve prvi red ispisa saoptava gde je prvi problem u datoteci:
% xmllint 2-5.xml 2-5.xml:5: error: Unescaped '<' not allowed in attribute values <osoba roena='1912/06/23' ^ 2-5.xml:5: error: attributes construct error <osoba roena='1912/06/23' ^

26 |

Poglavlje 2: Osnove XML-a This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

2-5.xml:5: error: error parsing attribute name <osoba roena='1912/06/23' ^ 2-5.xml:5: error: attributes construct error <osoba roena='1912/06/23' ^ 2-5.xml:5: error:xmlParseStartTag: problem parsing attributes <osoba roena='1912/06/23' ^ 2-5.xml:5: error: Coludn't find end of Start Tag image line 3 <osoba roena='1912/06/23' ^

Osnove XML-a

Kao to vidite, analizator je pronaao greku. U ovom sluaju, poruka o greci nam nije naroito pomogla. Stvarni problem nije bio u tome to je vrednost atributa sadrala znak <, nego u tome to je izostaven zavrni navodnik u vrednosti atributa visina. Ipak smo pomou datih podataka uspeli da pronaemo i otklonimo problem. Uprkos dugakom ispisu, xmllint je prijavio samo prvu greku u dokumentu, pa ete morati da ga pokreete vie puta dok ne pronaete i ne ispravite sve greke. Kada smo primer 2-5 popravili tako da bude dobro oblikovan, xmllint je samo odtampao datoteku koju je proitao:
% xmllint 2-5.xml <biografija xmlns:xlink="http://www.w3.org/1999/xlink/"> <slika izvor="http://www.turing.org.uk/turing/pi1/busgroup.jpg" irina="152" visina="345"/> <pasus><osoba roena='1912-06-23' umrla='1954-06-07'> <ime>Alen</ime> ...

Poto je dokument ispraven i dobro oblikovan, moete ga proslediti itau Weba, bazi podataka ili nekom drugom programu koji ga oekuje. Gotovo svi netrivijalni runo pisani dokumenti na poetku nisu dobro oblikovani, pa je vano da proverite ta ste uradili pre nego to to objavite.

Provera dobre oblikovanosti dokumenta This is the Title of the Book, eMatter Edition Copyright 2006 OReilly & Associates, Inc. All rights reserved.

27

You might also like