chapter 1download.tutoriali.org/tutorials/xml/xml_za_programere.pdf · mathml mathematical markup...

32
xiii This is the Title of the Book, eMatter Edition Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved. Chapter 1 Predgovor U nekoliko posledçih godina, XML je poåeo da se upotrebàava u najrazliåitijim oblastima, meœu kojima su: pravo, aeronautika, finansije, osiguraçe, robotika, multimedija, ugostiteàstvo, turizam, likovne umetnosti, graditeàstvo, telekomuni- kacije, softver, poàoprivreda, fizika, novinarstvo, teologija, maloprodaja i stripovi. XML je postao najpoæeànija sintaksa za nove formate dokumenata u gotovo svim raåunarskim aplikacijama. Upotrebàava se na Linuxu, Windowsu, Macintoshu i mnogim drugim raåunarskim platformama. Veliki centralni raåunari u çujorãkom Volstritu meœusobno trguju deonicama tako ãto razmeçuju odgovarajuñe XML dokumente. Deca koja igraju igrice na kuñnim raåunarima snimaju svoje doku- mente u XML-u. Navijaåi na ekranima svojih mobilnih telefona u realnom vremenu primaju rezultate utakmica, opet u formatu XML. XML je jednostavno najrobusni- ja, najpouzdanija i najfleksibilnija dosad izumàena sintaksa za dokumente. XML za programere je sveobuhvatan vodiå kroz brzo rastuñi svet XML-a. Obraœuje sve vidove XML-a – od osnovnih pravila sintakse, preko pojedinosti pravàeça DTD-ova i ãema, do interfejsa za programiraçe aplikacija (API-ja) pomoñu kojih moæete åitati i pisati XML dokumente na raznim programskim jezicima. Ãta obuhvata ova kçiga Postoje hiàade XML aplikacija koje su formalno ustanovili konzorcijum W3C i dru- ga tela za standardizaciju, kao sto su OASIS i Object Management Group. Jos je viãe nestandardizovanih aplikacija, poput Microsoftove Channel Definition Format i Mind Reading Markup Language Johna Guajarda. Sve çih nije moguñe opisati u jednoj kçizi, kao ãto se u jednoj kçizi ne mogu opisati ni svi programi koji se mogu napisati ili su veñ napisani na Javi. Ova kçiga se usredsreœuje na sam XML. Obuhvañena su osnovna pravila kojih se moraju pridræavati svi XML dokumenti i çihovi autori – od Web dizajnera koji upotrebàavaju SMIL za dodavaçe animacija na Web stranice, do C++ programera koji za razmenu serijalizovanih objekata sa udaàenom bazom podataka koriste SOAP.

Upload: others

Post on 21-Jan-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

xiii

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Chapter 1

Predgovor

U nekoliko posledçih godina, XML je poåeo da se upotrebàava u najrazliåitijimoblastima, meœu kojima su: pravo, aeronautika, finansije, osiguraçe, robotika,multimedija, ugostiteàstvo, turizam, likovne umetnosti, graditeàstvo, telekomuni-kacije, softver, poàoprivreda, fizika, novinarstvo, teologija, maloprodaja i stripovi.XML je postao najpoæeànija sintaksa za nove formate dokumenata u gotovo svimraåunarskim aplikacijama. Upotrebàava se na Linuxu, Windowsu, Macintoshu imnogim drugim raåunarskim platformama. Veliki centralni raåunari u çujorãkomVolstritu meœusobno trguju deonicama tako ãto razmeçuju odgovarajuñe XMLdokumente. Deca koja igraju igrice na kuñnim raåunarima snimaju svoje doku-mente u XML-u. Navijaåi na ekranima svojih mobilnih telefona u realnom vremenuprimaju rezultate utakmica, opet u formatu XML. XML je jednostavno najrobusni-ja, najpouzdanija i najfleksibilnija dosad izumàena sintaksa za dokumente.

XML za programere

je sveobuhvatan vodiå kroz brzo rastuñi svet XML-a. Obraœujesve vidove XML-a – od osnovnih pravila sintakse, preko pojedinosti pravàeçaDTD-ova i ãema, do interfejsa za programiraçe aplikacija (API-ja) pomoñu kojihmoæete åitati i pisati XML dokumente na raznim programskim jezicima.

Ãta obuhvata ova kçiga

Postoje hiàade XML aplikacija koje su formalno ustanovili konzorcijum W3C i dru-ga tela za standardizaciju, kao sto su OASIS i Object Management Group. Jos je viãenestandardizovanih aplikacija, poput Microsoftove Channel Definition Format iMind Reading Markup Language Johna Guajarda. Sve çih nije moguñe opisati ujednoj kçizi, kao ãto se u jednoj kçizi ne mogu opisati ni svi programi koji semogu napisati ili su veñ napisani na Javi. Ova kçiga se usredsreœuje na sam XML.Obuhvañena su osnovna pravila kojih se moraju pridræavati svi XML dokumenti içihovi autori – od Web dizajnera koji upotrebàavaju SMIL za dodavaçe animacijana Web stranice, do C++ programera koji za razmenu serijalizovanih objekata saudaàenom bazom podataka koriste SOAP.

Page 2: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

xiv | Predgovor

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

U kçizi su opisane i sledeñe opãte tehnologije za podrãku XML-a, koje se koriste uraznim XML aplikacijama:

XLink

Atributska sintaksa za hiperveze izmeœu XML i ne–XML dokumenata. Onemogu biti: proste jednosmerne veze poznate iz HTML-a, viãesmerne veze iz-meœu viãe dokumenata i veze izmeœu dokumenata u koje ne moæete upisivati.

XSLT

XML aplikacija koja opisuje transformacije jednog dokumenta u drugi, priåemu se koriste isti ili razliåiti XML reånici.

XPointer

Sintaksa za URI identifikatore odlomaka, kojima se biraju odreœeni deloviXML dokumenta na koji upuñuje URI identifikator; åesto se koristi zajedno saXLinkom.

XPath

Ne-XML sintaksa koju XPointer i XSLT upotrebàavaju za identifikovaçeodreœenih delova XML dokumenata. Primera radi, pomoñu XPatha moæe seizdvojiti treñi element adrese dokumenta ili svi elementi sa atributom

email

åija je vrednost

[email protected]

.

XInclude

Sredstvo za pravàeçe velikih XML dokumenata kombinovaçem drugih goto-vih dokumenata i çihovih odlomaka.

Prostori imena

Sredstvo za uoåavaçe razlika izmeœu elemenata i atributa iz razliåitih, ali istoi-menih XML reånika; na primer, za razlikovaçe naslova kçige od naslova Webstranice koja je sastavni deo Web lokacije o kçigama.

Ãeme

XML reånik za opisivaçe dozvoàenog sadræaja XML dokumenata napravàe-nih pomoñu drugih XML reånika.

SAX

Akronim od

Simple API for XML

, ãto je naziv interfejsa za programiraçe apli-kacija zasnovanih na dogaœajima; implementiraju ga mnogi analizatori(raãålaçivaåi) XML teksta.

DOM

Akronim od

Document Object Model

(objektni model dokumenta), ãto je imejeziåki nezavisnog interfejsa za programiraçe aplikacija, koji XML dokumenttretira kao stablo ugneæœenih objekata razliåitih svojstava.

XHTML

XML-izovana verzija HTML-a, koja se moæe proãiriti drugim XML aplikacija-ma, kao ãto su MathML i SVG.

RDDL

Akronim od

Resource Directory Description Language

(jezik za opisivaçe kata-loga resursa), ãto je naziv XML aplikacije zasnovane na jeziku XHTML, koja jenameçena dokumentima smeãtenim na kraj URL adrese prostora imena.

Page 3: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Predgovor | xv

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Navedene tehnologije se koriste u viãe razliåitih XML aplikacija, bez obzira na to dali su definisane u XML-u (kao XLinks, XSLT, XInclude, prostori imena, ãeme, XHT-ML i RDDL) ili u nekoj drugoj sintaksi (kao XPointers, XPath, SAX i DOM).

U ovoj kçizi nisu detaàno objaãçene XML aplikacije koje su vaæne samo maçemdelu korisnika XML-a. Meœu takvim aplikacijama su:

SVGScalable Vector Graphics

– standard za XML kodiraçe vektorskih crteæa, koji jeusvojio W3C.

MathMLMathematical Markup Language

–XML aplikacija za ugradçu jednaåina u Webstranice i druge dokumente, koju je W3C usvojio kao standard.

RDFResource Description Framework

–XML aplikacija za opisivaçe resursa, naroåi-to metapodataka koji se mogu nañi u kartiånom katalogu biblioteka. Prihvañe-na u W3C kao standard.

Ponekad ñemo neku od tih aplikacija upotrebiti u primerima, ali neñemo detaànoobjaãçavati sve aspekte odgovarajuñeg reånika. Te aplikacije su zanimàive i vaæne,ali su (kao i hiàade drugih) prvenstveno nameçene upotrebi u specijalnom softverukoji poznaje sve pojedinosti çihovih formata. Na primer, veñina grafiåkih dizajnerane radi neposredno sa SVG-om, nego SVG dokumente pravi pomoñu svojih uobiåa-jenih alatki, kao ãto je Adobe Illustrator. Oni ne moraju ni znati da koriste XML.

Ova kçiga se usredsreœuje na standarde koji su vaæni gotovo svim programerimaãto rade u XML-u. Istraæiñemo XML tehnologije zajedniåke velikom broju primenaXML-a, a ne one koje su vaæne u samo nekoliko ograniåenih domena.

Ãta je novo u treñem izdaçu

XML nije stajao u mestu tokom dve godine protekle od drugog izdaça kçige

XMLin a Nutshell

. Najvidàivija promena u ovom izdaçu jeste to ãto ono opisuje XML 1.1. Meœutim, izmene u verziji 1.1 nisu toliko velike kao ãto bi novi broj verzije (.1) im-plicirao. Zapravo, ako ne govorite mongolski, burmanski, amharski, kambodæanskiili joã nekoliko maçih jezika, u XML-u 1.1 ima veoma malo novog materijala za-nimàvog za vas. XML 1.0 i 1.1 isti su u gotovo svakom praktiånom pogledu. Razlikaizmeœu çih je sigurno mnogo maça od razlike izmeœu Jave 1.0 i 1.1. Zato ñemo uovoj kçizi razmatrati XML kao jedan entitet, a na XML 1.1 eksplicitno upuñivatisamo u retkim prilikama kada se te verzije zaista razlikuju. Verovatno se otprilike98% kçige jednako dobro odnosi i na XML 1.0 i na XML 1.1.

Dodali smo i poglavàe posveñeno XIncludeu, novijem pronalasku konzorcijumaW3C; koristi se za pravàeçe velikih XML dokumenata kombinovaçem maçihdokumenata i çihovih delova. Elliotte je napisao gotovo polovinu prvih realizacijaXIncludea, a i prvu kçigu napravàenu pomoñu XIncludea, pa nam je ova tema po-sebno znaåajna. Ostala poglavàa kçige preraœena su koliko je zahtevao uticaj verzi-je 1.1 XML-a na obraœene teme, kao i uticaj promena datih tehnologija u pomenutedve godine. Mnoge teme su aæurirane tako da odgovaraju posledçoj verziji odgo-varajuñe specifikacije, i to:

Page 4: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

xvi | Predgovor

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

• SAX 2.0.1

• Prostori imena 1.1

• DOM Level 3

• XPointer 1.0

• Unicode 4.0.1

I najzad, u kçizi su ispravàene mnoge male greãke i propusti.

Organizacija kçige

Deo I,

Koncepti XML-a

, uvodi osnovne standarde koji åine jezgro XML-a i kojih semoraju pridræavati sve XML aplikacije i softver. U çemu ñete ukratko saznati ãta jedobro oblikovan XML dokument, i ãta su definicija tipa dokumenta (DTD), prostorimena i Unicode.

Deo II,

Narativni dokumenti

, istraæuje tehnologije koje se uglavnom upotrebàavajuza XML dokumente narativnog tipa, kao ãto su Web stranice, kçige, ålanci, dnevni-ci i drame. Saznañete ãta su i kako rade XSLT, CSS, XSL-FO, XLinks, XPointers,XPath, XInclude i RDDL.

Meœu najneoåekivanijim dogaœajima u istoriji XML-a bilo je to ãto je ãiroko pri-hvañen za izradu strukturiranih dokumenata punih podataka, kao ãto su pro-raåunske tabele (engl.

spreadsheets

), finansijski statistiåki podaci, matematiåketabele i formati datoteka. Deo III,

Dokumenti sliåni zapisima baze podataka

, istraæu-je upotrebu XML-a u takvim primenama. U çemu ñemo se usredsrediti na alatke iinterfejse za programiraçe aplikacija koji su potrebni za pisaçe softvera za obraduXML-a – a to su SAX, DOM i ãeme.

Najzad, deo IV,

Referentni pregled osnovnih XML tehnologija

, predstavàa niz referent-nih poglavàa koja åine jezgro svake kçige iz ove edicije. U çima su data detaànasintaktiåka pravila za osnovne XML tehnologije, meœu kojima su XML, DTD-ovi,ãeme, XPath, XSLT, SAX i DOM. Preœite u taj deo kçige kada hoñete da brzopronaœete preciznu sintaksu neåega ãto znate da moæete da uradite, ali ne znate kako.

Konvencije koriãñene u kçizi

Tekst konstantne ãirine

koristi se za:

• Sve ãto se moæe pojaviti u XML dokumentu, kao ãto su imena elemenata, ozna-ke (engl.

tags

), vrednosti atributa, reference entiteta i instrukcije za obradu.

• Sve ãto se moæe pojaviti u programu, kao ãto su rezervisane reåi, operatori, ime-na metoda, imena klasa i literali.

Polucrni tekst konstantne ãirine

koristi se za:

• Ono ãto unosi korisnik.

• Naglaãavaçe u primerima i odlomcima koda.

Kurziv konstantne ãirine

upotrebàen je za:

• Zamenàive elemente u programskom kodu.

Page 5: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Predgovor | xvii

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Kurziv

se upotrebàava za:

• Nove termine na mestu definicije i termine na engleskom.

• Naglaãavaçe u telu teksta.

• Putaçe, imena datoteka i programa. (Meœutim, ako je ime programa ujedno iime Javine klase, napisano je fontom konstantne ãirine, kao i ostala imena klasa.)

• Imena domena i mreænih raåunara (

cafeconleche.org

).

Ova sliåica ukazuje na savet, predlog ili opãtu napomenu.

Ova sliåica ukazuje na upozoreçe ili opomenu.

Znaåajni delovi koda, celi programi i dokumenti obiåno su ovako smeãteni u zase-ban pasus:

<?xml version="1.0"?>

<?xml-stylesheet href="person.css" type="text/css" ?>

<osoba>

Alen Tjuring

</osoba>

XML uzima u obzir razliku izmeœu velikih i malih slova. Element

OSOBA

nije jednakelementu

osoba

, niti elementu

Osoba

. Pisci na jezicima koji uzimaju u obzir razlikuizmeœu velikih i malih slova ne mogu uvek da se dræe gramatiåkih pravila standard-nog engleskog jezika. Obiåno se reåenica moæe preformulisati tako da se poãtujupravila i XML-a i engleskog, i mi smo se potrudili da tako uradimo kad god je bilomoguñe. Meœutim, u retkim sluåajevima problem nije bilo moguñe zaobiñi, i tada jeengleski loãije prolazio.

Premda je veñina primera upotrebàenih u kçizi pojednostavàena da bi se moglajoã negde upotrebiti, nekoliko çih ima stvarnu vrednost. Slobodno ih upotrebite usvom kodu – cele ili samo delove. Za to vam nije potrebna specijalna dozvola. Ãto senas tiåe, oni su javno vlasniãtvo (ãto svakako ne vaæi za tekst objaãçeça).

Komentari åitalaca

Biñe nam drago da åujemo opãte komentare åitalaca o tome kako bi se kçiga moglapoboàãati – konkretnim ispravkama ili temama koje bi trebalo obuhvatiti. Adreseelektronske poãte autora kçige jesu

elharo

@

metalab.unc.edu

i

[email protected]

.Molimo vas, uzmite u obzir da nas dvojica svakodnevno primamo viãe stotina elek-tronskih poruka i da ne moæemo odgovoriti na svaku. Najveñe ãanse da dobiju od-govor imaju oni koji se predstave kao åitaoci ove kçige. Takoœe vas molimo da svojeporuke ãaàete s naloga e-poãte na koji treba poslati odgovor i u kome je adresa zaodgovor taåno zadata. Niãta nas toliko ne obeshrabruje kao kada nam se, nakon ãtoutroãimo sat i viãe vremena na prouåavaçe i pisaçe detaànog odgovora na za-nimàivo pitaçe, odgovor vrati zato ãto je sagovornik svoju poruku poslao s javnog

Page 6: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

xviii | Predgovor

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

terminala, a prethodno se nije potrudio da upiãe svoju pravu adresu e-poãte meœuparametre åitaåa Weba.

Proverili smo i testirali informacije koje navodimo u kçizi, ali se ipak moæe desitida se moguñnosti opisanih tehnologija promene (ili ñete pronañi greãku u naãemopisu). Pristalice smo stare izreke „Ako vam se kçiga svidi, recite to svojim prija-teàima. Ako vam se ne svidi, recite to nama”. Naroåito bismo hteli da nam skrenetepaæçu na eventualne greãke. Koliko god da su se pisci i redakcija potrudili oko ovekçige, mora biti da nam je ipak promaklo nekoliko greãaka. Ako pronaœete neku,molimo vas da nas obavestite kako bismo mogli da je ispravimo u sledeñem iz-daçu. Sve podatke o greãkama molimo da poãaàete neposredno autorima ove kçi-ge na prethodno navedene adrese e-poãte.

*

Otvorena je i Web lokacija originala ove kçige, na kojoj su navedene pronaœenegreãke, primeri i dodatne informacije. Adresa te lokacije je:

http://www.cafeconleche.org/books/xian3/

Pre nego ãto utroãite vreme na prijavu greãke, molimo vas da posetite ovu lokaciju ipogledate da li je tamo veñ objavàena ispravka. Tehniåka pitaça i komentare ãaàitee-poãtom neposredno autorima kçige ili izdavaåima, na adresu:

[email protected]

, odnosno,

redakcija@mikrokçiga.co.yu

Viãe informacija o drugim izdaçima, softveru i ostalim resursima koje O’Reilly sta-vàa na raspolagaçe javnosti, potraæite na adresama:

http://www.oreilly.comhttp://xml.oreilly.comhttp://www.xml.com

Viãe informacija o drugim izdaçima i aktivnostima Mikro kçige potraæite na adresi:

www.mikrokçiga.co.yu

* Veñina primera je prevedena, pa je moguñe da su se i tu potkrale greãke. Ako primetite greãku u prevedenom izdaçu, molimo vas da poãaàete poruku na adresu

redakcija@mikrokçiga.co.yu

.

Page 7: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

I

Koncepti XML-a

Page 8: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

3

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Poglavlje 1Uvod u XML

1

Uvod u XML

XML je akronim od eXtensible Markup Language, a konzorcijum W3C prihvatio gaje kao standard za oznaåavaçe (engl.

markup

) dokumenata. On definiãe opãtusintaksu za oznaåavaçe podataka jednostavnim, svima razumàivim oznakama(engl.

tags

). XML obezbeœuje standardan format za raåunarske dokumente, dovoà-no fleksibilan da se moæe prilagoditi za najrazliåitije oblasti kao ãto su Web lokacije,elektronska razmena podataka, vektorska grafika, genealogija, ponuda nekretnina,serijalizacija objekata, pozivaçe udaàenih procedura, sistemi glasovne poãte itd.

Moæete pisati sopstvene programe za rad s podacima u XML dokumentima i çiho-vu obradu. Ako to uradite, postañe vam dostupan veliki broj besplatnih bibliotekana raznim jezicima na kojima se moæe åitati i pisati XML, pa ñete moñi da se usred-sredite baã na ono ãto je potrebno vaãem programu. Za rad sa XML dokumentimamoæete upotrebiti i gotov softver, kao ãto su åitaåi Weba (engl.

Web browsers

) ili pro-grami za obradu teksta. Jedan deo alatki moæe da radi sa svim XML dokumentima.Druge su prilagoœene za podrãku odreœenoj XML aplikaciji u nekoj oblasti – poputvektorske grafike – i izvan çe su najåeãñe neupotrebàive. No, u svim sluåajevimakoristi se ista sintaksa, åak i ako je namerno sakrivena u alatkama koje se lakãe ko-riste ili ograniåena na jednu aplikaciju.

Prednosti XML-a

XML je metajezik za oznaåavaçe tekstualnih dokumenata. Podaci se smeãtaju uXML dokumente u obliku znakovnih nizova (engl.

strings

), izmeœu tekstualnihoznaka koje ih opisuju. Osnovne jedinice podataka i oznaka u XML-u nazivaju se

elementi

. XML specifikacija precizno definiãe sintaksu koje se morate pridræavatipri pisaçu oznaka: kako su elementi razgraniåeni oznakama, kako oznaka izgleda,kakva imena elementi mogu imati, gde se stavàaju atributi itd. Povrãno gledano,oznake XML dokumenta mnogo liåe na oznake HTML dokumenta, ali meœu çimapostoje bitne razlike.

Page 9: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

4 | Poglavlje 1: Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Najvaænije je da je XML

jezik za metaoznaåavaçe

. To znaåi da on nema fiksan skupoznaka i elemenata koji bi trebalo da zadovoàe svaåije potrebe u svim oblastima izauvek. Svaki pokuãaj da se napravi konaåan skup takvih oznaka, osuœen je naneuspeh. Umesto toga, XML omoguñava programerima i piscima da izmiãàajupotrebne elemente onda kad im zatrebaju. Hemiåari mogu upotrebàavati elementekoji opisuju molekule, atome, veze, reakcije i ostale entitete koji se sreñu u hemiji.Agenti za prodaju nekretnina mogu upotrebàavati elemente koji opisuju stanove,stanarine, provizije, lokacije i druge entitete potrebne za nekretnine. Muziåari moguupotrebàavati elemente koji opisuju åetvrtine nota, polovine nota, violinske kàu-åeve, tekstove pesama i ostale objekte uobiåajene u muzici. Slovo X u imenu XMLpotiåe od reåi

Extensible

(proãiriv), ãto znaåi da se jezik moæe proãirivati i prilago-œavati da bi zadovoàio razliåite potrebe.

Iako je XML veoma fleksibilan kad je reå o elementima koji se mogu koristiti, veomaje strog u mnogim drugim aspektima. Specifikacija XML-a definiãe gramatiku XMLdokumenata, koja kazuje gde se oznake moraju staviti, kako one moraju izgledati,kakva su imena elemenata dozvoàena, kako se elementima pridruæuju atributi itd.Ta gramatika je dovoàno specifiåna da omoguñava pravàeçe raãålaçivaåa i analiza-tora sintakse XML-a, u daàem tekstu – analizatora (engl.

parser

), koji mogu proåitatisvaki XML dokument. Za dokumente koji zadovoàavaju pravila te gramatike ka-æemo da su

dobro oblikovani

(engl.

well-formed

). Dokumenti koji nisu dobro obli-kovani bivaju odbijeni, kao ãto biva odbijen svaki C program koji sadræi sintaksnugreãku. Programi za obradu XML-a (engl.

XML processors

) odbijaju dokumente kojinisu dobro oblikovani.

Radi interoperabilnosti, pojedinci i organizacije mogu se dogovoriti da upotrebàa-vaju samo odreœene oznake. Takve skupove XML oznaka nazivamo

primene XML-a

(engl.

XML applications

) ili XML aplikacije. XML aplikacija nije softverska aplikacijakoja upotrebàava XML, kao ãto su Mozilla ili Microsoftov Word. To su primeneXML-a u odreœenoj oblasti – na primer u vektorskoj grafici ili u kulinarstvu.

Oznake u XML dokumentu opisuju çegovu strukturu. Pomoñu çih moæete videtikoji elementi su pridruæeni kojim drugim elementima. U dobro projektovanomXML dokumentu, oznake opisuju i semantiku dokumenta. Primera radi, oznakamoæe ukazati na to da je element datum ili ime osobe ili bar-kod. U dobro pro-jektovanim XML aplikacijama, oznake niãta ne kazuju o tome kako dokument tre-ba prikazati. Drugim reåima, ne kazuju da li je odreœeni element ispisan polucrnoili kurzivom ili je stavka nabrajaça u listi. XML je jezik za oznaåavaçe strukture isemantike, a ne za oznaåavaçe naåina prikazivaça.

Postoji nekoliko XML aplikacija za opisivaçe naåina predstavàaçateksta; jedna takva je XSL Formatting Objects (XSL-FO). Meœutim, tosu izuzeci koji potvrœuju pravilo. Iako XSL-FO opisuje prezentaciju,XSL-FO dokument se nikada ne piãe direktno. Umesto çega napisalibiste semantiåki boàe strukturiran XML dokument, a potom bisteupotrebili opis stilova XSL Transformations da biste strukturno ori-jentisani XML izmenili u prezentacijski orijentisan XML.

Oznake dozvoàene u odreœenoj primeni XML-a mogu se dokumentovati u

ãemi

(engl.

schema

). Sa ãemom se mogu porediti pojedini primerci dokumenta. Za do-kumente koji zadovoàavaju ãemu kaæemo da su

validni

(engl.

valid

). Za one koji ne

Page 10: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Ãta XML nije | 5

Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

zadovoàavaju tu ãemu kaæemo da su, u odnosu na çu,

nevalidni

(engl.

invalid

).Dakle, validnost dokumenta zavisi od ãeme s kojom se dokument poredi. Nemoraju svi dokumenti biti validni. Za mnoge primene dovoàno je da dokumentbude dobro oblikovan.

Postoji mnogo raznih jezika za XML ãeme i çihovi nivoi izraæajnosti su razliåiti.Najraãireniji jezik za XML ãeme i jedini definisan u samoj specifikaciji XML-a jeste

definicija tipa dokumenta

(engl.

document type definition

, DTD). Svaki DTD navodisve dozvoàene oznake i odreœuje gde se i na koji naåin one mogu pojaviti u doku-mentu. U XML-u DTD-ovi nisu obavezni, nego opcioni. S druge strane, DTD-ovinisu uvek dovoàni. Sintaksa DTD-ova je veoma ograniåena i ne omoguñava pra-vàeçe raznih korisnih iskaza poput „Ovaj element sadræi broj” ili „Ovaj znakovniniz je datum koji pada izmeœu 1974. i 2032”. Takva ograniåeça moæete izraziti jezi-kom XML Schema Language, koji je prihvatio W3C. (Taj jezik se ponekad pogreãnonaziva opãtim imenom

schemas

, tj. ãeme.) Pored DTD-a i XML Schema Languagea,postoji joã mnogo jezika za opisivaçe ãema, meœu kojima su RELAX NG,Schematron, Hook, Examplotron itd.

Trenutno su svi jezici za ãeme åisto deklarativni. Meœutim, uvek ima ograniåeçakoja se ne mogu izraziti ukoliko programski jezik nije potpun u Tjuringovomsmislu. Na primer, ako je dati XML dokument narudæbenica, jezik mora bitipotpun u Tjuringovom smislu da bi se

cena

svake

stavke_narudæbenice

pomnoæilaçenom

koliåinom

, sve to sabralo, i proverilo da li je zbir jednak elementu

meœuzbir

.Danaãçi jezici za ãeme ne mogu proveriti ni ograniåeça koja su spoàna u odnosuna dokument, kao ãto je „Svaki SKU element odgovara SKU poàu zapisa u tabeliproizvoda unutar baze podataka inventara”. Ako piãete program za åitaçe XMLdokumenata, moæete mu dodati kôd za proveru takvih iskaza, kao ãto biste uradilida piãete kôd za åitaçe tekstualne datoteke kojoj kao graniånik sluæi znaktabulator. Razlika je u tome ãto XML analizatori predstavàaju podatke u mnogopodesnijem formatu i obavàaju veñi deo posla umesto vas, pa sami morate da do-piãete maçe koda.

Ãta XML nije

XML je jezik za oznaåavaçe i niãta viãe od toga. To treba zapamtiti. Priåa o XML-use toliko naduvala da ima àudi koji od XML-a oåekuju da radi sve i svaãta, akotreba i kola da opere.

Pre svega,

XML nije programski jezik

. Ne postoji kompajler XML-a koji åita XMLdatoteke i daje izvrãni kôd. Eventualno biste mogli definisati skript jezik koji koristiformat XML-a kao matiåni, a interpretira ga neki binarni program, ali bi åak i taprimena bila neobiåna. XML se moæe upotrebiti kao format naredaba u programi-ma koji neãto rade, kao ãto i tradicionalni programi mogu åitati tekstualne konfigu-racijske datoteke i preduzimati razne akcije na osnovu proåitanog. Zaista nemarazloga da konfiguracijska datoteka ne bude u formatu XML, umesto u formatunestrukturiranog teksta. Neki noviji programi upotrebàavaju XML konfiguracijskedatoteke; ali je uvek program taj koji preduzima akciju, a ne sam XML dokument.XML dokument

ne

radi

niãta, on samo

postoji

.

Page 11: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

6 | Poglavlje 1: Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Barem jedna XML aplikacija – XSL Transformations (XSLT) – doka-zano je potpuna u Tjuringovom smislu. (Dokaz je izveden konstruk-cijom, tj. pravàeçem maãine koja je potpuna.) Na lokaciji

http://www.unidex.com/turing/utm.htm

moæete videti univerzalnu Tjurin-govu maãinu napisanu u XSLT-u.

Drugo,

XML nije protokol za mreæni prenos

. XML ne ãaàe podatke preko mreæe, kaoni HTML. Podaci poslati preko mreæe HTTP-om, FTP-om, NFS-om ili nekim dru-gim protokolom, mogu biti kodirani u XML-u; ali opet mora postojati neki softverizvan XML dokumenta koji ñe poslati dokument.

Najzad, da pomenemo primer gde priåe najåeãñe sakrivaju istinu,

XML nije bazapodataka

. XML-om ne moæete zameniti Oracle ili MySQL server. Baza podatakamoæe sadræati XML podatke, bilo kao VARCHAR ili BLOB ili neki namenski XML tippodataka, ali sama baza podataka nije XML dokument. XML podatke moæete sme-stiti u bazu podataka na serveru i preuzeti ih iz çe u formatu XML, ali vam za to trebasoftver napisan na pravom programskom jeziku kao ãto su C ili Java. Da bi smestioXML podatke u bazu podataka, softver na klijentskoj strani ãaàe ih serveru pomoñuustanovàenog mreænog protokola kao ãto je TCP/IP. Softver na serverskoj strani pri-ma XML podatke, raãålaçuje ih i smeãta u bazu. Da biste preuzeli XML dokument izbaze podataka, po pravilu ñete morati da upotrebite neki posredniåki program (engl.

middleware product

) kao ãto je Enhydra, koja ñe napraviti i poslati SQL upite bazipodataka, a skup rezultata formatirati kao XML pre nego ãto ih vrati klijentu. Åiçe-nica je da neke baze podataka integriãu taj softver u svoje servere ili za obavàaçe tefunkcije obezbeœuju softverske dodatke, kao ãto je Oracleov servlet XSQL. U tim sce-narijima, XML sluæi veoma dobro kao sveprisutan prenosni format, nezavisan odplatforme. Meœutim, on nije baza podataka, niti ga tako treba upotrebàavati.

Prenosivi podaci

XML pruæa primamàivu moguñnost pravàeça dugotrajnih formata podatakanezavisnih od platforme. Veñ dugo dokumenti pisani na jednoj platformi nisu uvekåitàivi na drugim platformama, niti su åitàivi u razliåitim programima na istoj plat-formi, pa åak ni u prethodnim ili buduñim verzijama istog programa na istoj platfor-mi. A kada je dokument åitàiv, to joã ne znaåi da ñe se baã svi podaci uspeãnoproåitati. Veliki deo podataka prikupàenih tokom prvih iskrcavaça na Mesec, kra-jem ãezdesetih i poåetkom sedamdesetih godina, danas je izgubàen. Åak i ako pro-naœete ureœaj s trakama koji moæe da åita podatke s traka kakve se veñ odavno nekoriste, niko viãe ne zna u kom formatu su ti podaci bili zapisani!

XML je neverovatno jednostavan i dobro dokumentovan format podataka. XMLdokumenti su tekstualni, pa ih moæe åitati svaka alatka koja ume da åita tekstualnedatoteke. Tekstualni su ne samo podaci, nego i oznake, a smeãtene su u samoj XMLdatoteci. Ne morate brinuti o tome da li je svaki osmi bajt nasumiåna popuna (engl.

padding

), pogaœati da li je åetvorobajtna vrednost ceo broj zapisan kao komplementbroja dva ili broj u formatu pokretnog zareza zapisan po standardu IEEE 754, nitipokuãavati da deãifrujete koji se celobrojni kôd odnosi na koje svojstvo formati-raça. Nazive oznaka moæete åitati neposredno i iz çih ñete taåno saznati ãta je udokumentu. Sliåno tome, poãto oznake definiãu granice elemenata, mali su izgledi

Page 12: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Kako XML radi | 7

Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

da vas prevari neoåekivana konvencija o zavrãetku reda ili broj uzastopnih razmakakoji se pretvara u tabulator. U XML-u su sve vaæne pojedinosti strukture dokumen-ta eksplicitne. Ne morate da rekonstruiãete format unazad, niti da se oslaçate nanepotpunu i åesto nedostupnu dokumentaciju.

Moæda ñe neki proizvoœaåi softvera pokuãati da zarobe svoje kupce nedokumento-vanim i nestandardnim binarnim formatom podataka. Meœutim, dugoroåno ñe svi-ma biti boàe ako budemo mogli da koristimo jasno dokumentovane, dobro poznatetekstualne formate koji se lako raãålaçuju, kakve pruæa XML. On omoguñava da sepodaci i dokumenti prenose s jednog sistema na drugi, uz razumno oåekivaçe dañe prijemni sistem moñi da ih shvati. Nadaàe, proverom validnosti prijemna stranamoæe ustanoviti da li je dobila ono ãto je oåekivala. Java je obeñala prenosiv pro-gramski kôd; XML daje prenosive podatke. Na mnogo naåina, XML je najprenosi-viji i najfleksibilniji format dokumenata od pojave tekstualne ASCII datoteke.

Kako XML radi

U primeru 1-1 prikazan je jednostavan XML dokument, kakav se sreñe u sistemu zaupravàaçe inventarom ili u bazi podataka skladiãta. Njegovi podaci su obeleæenioznakama (engl.

tags

) i atributima koji opisuju boju, veliåinu, broj bar-koda, imeproizvoœaåa, ime proizvoda itd.

Ovaj dokument je tekst, pa se moæe smestiti u tekstualnu datoteku koju moæeteureœivati u svakom standardnom programu za obradu teksta, kao ãto su BBEdit, jE-dit, UltraEdit, Emacs ili vi. Za XML vam nije potreban specijalan program za obraduteksta. Ãtaviãe, smatramo da veñina XML editora opãte namene viãe koãta nego ãtovredi i da ih je mnogo teæe koristiti od klasiånih programa za obradu teksta.

Programi koji zaista hoñe da shvate sadræaj XML dokumenta – dakle, koji s çimimaju veñe ambicije nego da ga tretiraju kao bilo koju drugu datoteku – za åitaçedokumenta upotrebàavaju

XML analizator

. Analizator raãålaçuje dokument naelemente, atribute i ostale komponente. On aplikaciji prosleœuje sadræaj XML do-kumenta paråe po paråe. Ako analizator u bilo kom trenutku otkrije da dokumentkrãi XML-ova pravila o dobrom oblikovaçu, aplikaciji ñe prijaviti greãku i prestañeda analizira dokument. U nekim sluåajevima, analizator i posle prve pronaœenegreãke nastavàa da åita dokument, da bi mogao da otkrije i prijavi i ostale greãke.Meœutim, nakon otkrivaça prve greãke u dobrom oblikovaçu, analizator uvek pre-staje da prosleœuje sadræaj elemenata i atributa koje prepoznaje.

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>

Page 13: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

8 | Poglavlje 1: Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Aplikacije najåeãñe imaju preciznija pravila o tome koji su elementi i atributi do-zvoàeni na kom mestu u dokumentu. Na primer, u dokumentu o biologiji nemamesta za element

violinski_kàuå

. Neka od tih pravila mogu biti precizno definisa-na pomoñu ãeme napisane na jeziku kao ãto je W3C XML Schema Language,RELAX NG i DTD-ovi. Dokument moæe sadræati URL adresu ãeme. Neki XMLanalizatori uoåavaju taj podatak, pa tokom åitaça porede dokument s çegovomãemom i proveravaju da li dokument zadovoàava ograniåeça navedena u çoj. Takavanalizator nazivamo

analizator validnosti

(engl.

validation parser

). Krãeçe tih ograni-åeça nazivamo

greãka validnosti

, a postupak provere sadræaja dokumenta u odnosuna ãemu je

validacija

. Ako analizator validnosti naœe greãku validnosti, prijaviñe jeaplikaciji u åije ime analizira dokument. Potom ta aplikacija odluåuje æeli li danastavi analiziraçe dokumenta. Meœutim, greãke validnosti ne moraju biti fatalne(za razliku od greãaka u dobrom oblikovaçu), pa aplikacija moæe odluåiti da ih za-nemari. Nisu svi analizatori ujedno i analizatori validnosti – neki proveravaju samodobru oblikovanost.

Aplikacija koja od analizatora prima podatke, moæe biti:

• åitaå Weba poput Netscape Navigatora ili Internet Explorera, koji korisnikuprikazuje dokument

• program za obradu teksta poput StarOffice Writera, koji XML dokument uåi-tava radi obrade

• baza podataka kao ãto je Microsoftov SQL Server, koji XML podatke smeãta unov zapis

• program za crtaçe kao ãto je Adobe Illustrator, koji XML interpretira kao dvo-dimenzionalne koordinate sadræaja crteæa

• program za tabelarne proraåune poput Gnumerica, koji analizira XML da bipronaãao brojeve i funkcije koje se upotrebàavaju u odreœenom proraåunu

• program za liåne finansije kao ãto je Microsoftov Money, koji XML vidi kaobankovni izveãtaj

• 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 hoñete da radi

• gotovo bilo ãta drugo.

XML je

izuzetno

fleksibilan format podataka. Upotrebàava se za sve navedeno i ujoã mnogo situacija. To su samo primeri iz prakse. Teorijski se svi podaci koji seuopãte mogu smestiti u raåunar, mogu snimiti u formatu XML. Praktiåno je XMLpodesan za skladiãteçe i razmenu onih podataka koji se mogu lako pretvoriti utekst. Nepodesan je jedino za digitalizovane podatke kao ãto su fotografije, snimcizvuka, 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 viãe stotina àudi ãirom sveta, sve

Page 14: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Evolucija XML-a | 9

Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

dok ga 1986. ISO nije prihvatio kao standard 8879. SGML je reãavao mnoge pro-bleme koje reãava XML, i to na isti naåin na koji ih reãava XML. To je semantiåki istrukturiran jezik za oznaåavaçe tekstualnih dokumenata. SGML je izuzetnomoñan, pa je bio prihvañen u ameriåkoj vojsci, dræavnim sluæbama, avionskoj, ko-smiåkoj industriji i drugim oblastima kojima je trebao efikasan naåin rukovaçatehniåkim dokumentima dugaåkim desetine hiàada stranica.

Najveñi uspeh SGML-a je HTML, koji je primeçeni SGML. Meœutim, HTML jesamo jedna od primena SGML-a. HTML ni izdaleka ne omoguñava sve ãto SGML.Poãto autore dokumenata ograniåava konaånim skupom oznaka za opisivaçe Webstranica – a pri tom ih opisuje prvenstveno za potrebe prikazivaça – HTML je za-pravo malo viãe od klasiånog jezika za oznaåavaçe, koji je prihvañen u åitaåimaWeba. Nije podesan za upotrebu izvan oblasti izrade Web stranica. Na primer,HTML se ne moæe upotrebiti za razmenu podataka izmeœu nekompatibilnih bazapodataka, niti za slaçe aæuriranih kataloga proizvoda maloprodajnim objektima.HTML je nameçen za Web stranice i to radi veoma dobro, ali to je sve ãto on moæe.

SGML je bio oåigledan izbor za druge aplikacije koje koriste Internet, a nisu prosteWeb stranice nameçene obiånim posetiocima. Nedostatak SGML-a je çegova kom-plikovanost – on je izuzetno komplikovan. Sluæbena specifikacija SGML-a sadræipreko 150 teãko razumàivih stranica. Ona obuhvata viãe specijalnih sluåajeva i maloverovatnih scenarija. Toliko je sloæen da gotovo nikada nije napravàen softver koji biga u potpunosti realizovao. Programi koji su realizovali ili koristili razliåite podsku-pove SGML-a åesto su bili nekompatibilni. Specijalna funkcionalnost jednog pro-grama, koju su çegovi autori smatrali suãtinskom, u drugom programu bila jesmatrana suviãnom i izostavàena je.

Godine 1996, Jon Bosak, Tim Bray, C.M. Sperberg-McQueen, James Clark i neko-licina drugih poåeli su rad na „laganoj” verziji SGML-a, koja je zadræala najveñi deoçegovih funkcionalnosti, ali izostavila one koje su se u prethodnih 20 godinaiskustva pokazale redundantnim, teãko ostvarivim, zbuçujuñim za krajçe kori-snike ili – prosto – nekorisnim. Rezultat je bio XML 1.0 objavàen februara 1998.; onje odmah postigao uspeh. Punim srcem su ga prihvatili mnogi programeri kojima jetrebao strukturirani jezik za oznaåavaçe, ali se nisu mogli naterati da savladajuSGML-ovu sloæenost. XML je poåeo da se upotrebàava u najrazliåitijim oblastima – od sudskih dokumenata do uzgajaliãta sviça.

Meœutim, XML 1.0 predstavàao je tek poåetak. Sledeñi standard bio je Namespaces inXML (Prostori imena u XML-u), ãto je bio pokuãaj da se oznake razliåitih XMLaplikacija upotrebàavaju u istom dokumentu – i to bez sukoba. Tako je Web stranicao kçigama mogla imati jedan element

title

koji se odnosio na naslov stranice i drugielement

title

koji se odnosio na naslov kçige, a da se ta dva elementa ne sukobe.

Sledeñi je bio Extensible Stylesheet Language (XSL), ãto je XML aplikacija zaprimenu stilova na XML dokumente, da bi se dobio oblik koji mogu prikazati åitaåiWeba. XSL se uskoro podelio na XSL Transformations (XSLT) i XSL FormattingObjects (XSL-FO). XSLT je postao jezik opãte namene za pretvaraçe jednog XMLdokumenta u drugi, bez obzira na to da li se radi o prikazivaçu dokumenta uobliku Web stranice ili nekoj drugoj nameni. XSL-FO je XML aplikacija za opi-sivaçe strukture stranica koje ñe biti odãtampane na podlozi ili prikazane na Webu.Po moguñnostima i izraæajnosti, ona se pribliæila PostScriptu.

Page 15: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

10 | Poglavlje 1: Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Meœutim, XSL nije jedina moguñnost za predstavàaçe XML dokumenata. Kada jebio izumàen XML, u HTML-u su se veñ upotrebàavali kaskadni opisi stilova (engl.

cascading style sheets

, CSS), i pokazalo se da oni priliåno dobro odgovaraju i XML-u.Kada je nastao CSS Level 2, W3C je CSS izriåito namenio za opis predstavàaçaXML dokumenata. Za tu ulogu je, bez obzira na to da li se radi o ãtampi ili Webu, usvetu SGML-a od svog nastanka bio prihvañen DSSSL (Document Style Sheet andSemantics Language).

XLink (Extensible Linking Language) poåeo je definisaçem moñnih struktura zapovezivaçe XML dokumenata u hipertekstualnu mreæu; u poreœeçu s çim,HTML-ova oznaka

A

(koja sluæi istoj svrsi) podseña nas na reå „anemiåna”. I XLink sepodelio na dva zasebna standarda: XLink za opisivaçe veza izmeœu dokumenata iXPointer za adresiraçe pojedinaånih delova XML dokumenta. Tada je primeñeno daXPointer i XSLT razvijaju prefiçene, ali nekompatibilne sintakse za isti posao:identifikovaçe odreœenih elemenata XML dokumenata. Zato su adresni delovi obespecifikacije odvojeni i objediçeni u treñoj specifikaciji nazvanoj XPath. Malokasnije izdvojio se joã jedan deo XLinka, XInclude, kao sintaksa za pravàeçe slo-æenih dokumenata objediçavaçem pojedinaånih dokumenata i çihovih odlomaka.

Sledeñi deo slagalice bio je jednoobrazni interfejs za pristupaçe sadræaju XMLdokumenta iz Java, JavaScript ili C++ programa. Najjednostavniji interfejs za pro-gramiraçe aplikacija (API) samo je tretirao dokument kao objekat koji sadræidruge objekte. Ãtaviãe, veñ se, i u W3C i izvan çega, radilo na definisaçu takvog

objektnog modela dokumenta

(Document Object Model, DOM) za HTML. Nije biloteãko proãiriti ga tako da obuhvati i XML.

Izvan W3C, David Megginson, Peter Murray-Rust i drugi ålanovi liste slaça

xml--dev

, uoåili su da razni XML analizatori, iako kompatibilni u pogledu dokumenatakoje mogu analizirati, nisu kompatibilni unutar çihovih API-ja. To je dovelo dorazvoja interfejsa za programiraçe Simple API for XML (SAX-a). Godine 2000.objavàen je SAX2, koji je doneo åistiji API, veñe moguñnosti konfigurisaça ipodrãku za prostore imena.

Jedno od iznenaœeça tokom evolucije XML-a bilo je to da su ga programeri viãeupotrebàavali za strukture sliåne zapisima, kao ãto su serijalizovani objekti i tabelebaza podataka, nego za narativne strukture za koje se tradicionalno upotrebàavaoSGML. DTD-ovi su veoma lepo radili za narativne strukture, ali su imali neka ogra-niåeça u pogledu dokumenata sliånih zapisima, a upravo su çih programeri pra-vili. Konkretno, glavni problemi su bili nepostojaçe tipova podataka i åiçenica dasâm DTD nije XML dokument. Viãe kompanija i pojedinaca poåelo je da radi najezicima za opisivaçe ãema koji bi otklonili te nedostatke. Mnogi od tih predlogabili su podneseni konzorcijumu W3C; on je oformio radnu grupu koja je trebalo daobjedini najboàe delove tih predloga i napravi neãto joã boàe. Grupa je 2001.objavila verziju 1.0 jezika W3C XML Schema Language. Naæalost, pokazalo se da jejezik previãe sloæen i teæak. Stoga se nekoliko proizvoœaåa softvera vratilo poslu inapravilo åistije i elegantnije jezike za ãeme, kao ãto su RELAX NG i Schematron.

Posle svih tih dogaœaja postalo je jasno da XML 1.0, XPath, SAX, DOM i W3CXML Schema Language imaju sliåne, ali ipak pomalo razliåite konceptualnemodele strukture XML dokumenta. Primera radi, XPath i SAX smatraju

CDATA

odeàke obiånom sintaksom, dok ih DOM tretira razliåito od åvorova (engl.

nodes

)

Page 16: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Evolucija XML-a | 11

Uvod u XML

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

obiånog teksta. Zato je W3C oformio radnu grupu XML Core Working Group, kojapriprema Skup informacija o XML-u (XML Information Set) koji ñe biti zajedniåkiza sve navedene standarde.

Kako se sve viãe XML dokumenata sve veñe vrednosti prenosi preko Interneta,uoåena je potreba da se te transakcije obezbede i da se proverava identitet çihovihuåesnika. Pored upotrebe postojeñih mehanizama kao ãto su SSL i HTTP, koji iden-titet proveravaju pomoñu softvera ugraœenog u upotrebàene prenosne protokole,razvijeni su formati za obezbeœeçe samih XML dokumenata tokom celog çihovogæivotnog veka, umesto samo tokom prenosa. Tako je nastao XML Encryption –standardna XML sintaksa za ãifrovaçe digitalnog sadræaja, ukàuåujuñi tu i delovepoveràivih XML dokumenata. Za proveru identiteta nameçen je XML Signature(XML potpis), zajedniåki IETF i W3C standard za digitalno potpisivaçe sadræaja iugradçu tih potpisa u XML dokumente. Poãto digitalno potpisivaçe i algoritmi zaãifrovaçe rade s nizovima bajtova, a ne s modelima XML podataka, i XML Signatu-re i XML Encryption zasnovani su na standardnom formatu za serijalizaciju, Cano-nical XML, koji uklaça sve nebitne razlike izmeœu dokumenata kao ãto su razmaci(beline) unutar oznaka i upotreba navodnika ili polunavodnika za razdvajaçevrednosti atributa.

Tokom svih ovih dogaœaja, osnovna specifikacija XML 1.0 ostala je nepromeçena.Dodata nova funkcionalnost nije meçala tu osnovu nego ju je nadogradila. To jedokaz solidnog dizajna i snage XML-a. Meœutim, sam XML 1.0 zasnovan je nastandardu Unicode 2.0. Kako je Unicode nastavio da se razvija i da obuhvata novapisma kao ãto su mongolsko, kambodæansko i burmansko, XML je poåeo dazaostaje. Prvenstveno zato je poåetkom 2004. objavàen XML 1.1. Treba napomenutida XML 1.1 nudi malo toga novog programerima koji koriste engleski, ãpanski,japanski, kineski, arapski, ruski, francuski, nemaåki, holandski ili bilo koji drugijezik koji je veñ Unicode 2.0 podræavao.

Nema sumçe da ñemo morati da izumimo joã mnogo proãireça za XML. Åak se iova bogata kolekcija specifikacija bavi samo tehnologijama koje leæe u osnoviXML-a. Mnogo je veñ napravàeno i joã bræe se radi na XML aplikacijama, meœukojima su SOAP, SVG, XHTML, MathML, Atom, XForms, WordprocessingML ihiàade drugih. XML se pokazao kao åvrst temeà za mnogo razliåitih tehnologija.

Page 17: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

12

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Poglavlje 2Osnove XML-a

2

Osnove XML-a

U ovom poglavàu nauåiñete kako se piãu jednostavni XML dokumenti. Saznañeteda se XML dokument sastoji od tekstualnog sadræaja obeleæenog tekstualnim ozna-kama kao ãto su

<SKU>

,

<identifikator_zapisa>

i

<autor>

, koje pomalo liåe naHTML oznake. Meœutim, HTML sadræi oko stotinu unapred definisanih oznakakoje opisuju formatiraçe Web stranice. U XML-u pravite proizvoàan broj oznakaprema svom nahoœeçu. Ãtaviãe, te oznake uglavnom opisuju tip sadræaja doku-menta, a ne çegove formate i strukturu. U XML-u se ne kaæe da je neãto ispisanokurzivom ili reàefno ili polucrno, nego da je to kçiga ili biografija ili kalendar.

Premda je XML opuãteniji od HTML-a kada se radi o oznakama koje dopuãta,mnogo je stroæi ãto se tiåe çihovog poloæaja i naåina na koji su napisane. Konkret-no, svi XML dokumenti moraju biti dobro oblikovani. Pravila dobrog oblikovaçapostavàaju ograniåeça kao ãto su „Svaka poåetna oznaka mora imati odgovarajuñuzavrãnu oznaku” i „Vrednosti atributa moraju biti napisane u navodnicima”. Ta pra-vila se ne smeju krãiti, pa je XML dokumente neãto teæe napisati, ali ih je zato lakãeanalizirati; oni ipak omoguñavaju gotovo neograniåenu fleksibilnost izraæavaça.

XML dokumenti i XML datoteke

XML dokument sadræi tekst. Poãto on nikada ne sadræi binarne podatke, moæe seotvoriti u svakom programu koji ume da åita tekstualne datoteke. Primer 2-1 sadræiotprilike najjednostavniji XML dokument koji se moæe zamisliti. Bez obzira na to,reå je o dobro oblikovanom XML dokumentu, pa ga XML analizatori mogu åitati ishvatiti (ukoliko se za raåunarski program moæe reñi da neãto shvata).

Primer 2-1. Krajçe jednostavan, ali potpun XML dokument

<osoba>

Alen Tjuring

</osoba>

Page 18: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Elementi, oznake i znakovni podaci | 13

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

U najåeãñem scenariju, ovaj dokument bi predstavàao celokupan sadræaj datoteke na-zvane

osoba.xml

ili moæda

2-1.xml

. Meœutim, XML nije sitniåav u pogledu imena da-toteka. Ãto se tiåe analizatora, ova datoteka bi se mogla zvati

osoba.txt

,

osoba

ili

Ej ti, uovoj datoteci je XML!

Moæda se vaãem operativnom sistemu takva imena ne bi svide-la, ali se XML analizator neñe buniti. Dokument uopãte ne mora biti smeãten u dato-teku – moæe i u zapis ili u poàe baze podataka. Mogao ga je u letu generisati odreœeniCGI program kao odgovor na upit nekog åitaåa. S druge strane, mogao bi biti smeãtenu viãe datoteka, premda je to malo verovatno za tako jednostavan dokument. Ako senalazi na Web serveru, verovatno ñe mu dodeliti MIME tip medija

application/xml

ili

text/xml

. Meœutim, XML aplikacije bi mu mogle dodeliti odreœeniji MIME tipmedija, kao ãto su

application/mathml+xml

,

application/xslt+xml

,

image/svg+xml

,

text/vnd.wap.wml

, pa åak i

text/html

(u veoma specijalnim sluåajevima).

U generiåkim XML dokumentima, prednost treba dati MIME tipu

application/xml

umesto

text/xml

, premda su mnogi Web serveri fa-briåki podeãeni da koriste

text/xml

. Tip

text/xml

podrazumevanoupotrebàava ASCII skup znakova, ãto je u veñini XML dokumenatanetaåno.

Elementi, oznake i znakovni podaci

Dokument u primeru 2-1 sadræi samo jedan

element

nazvan

osoba

. Taj element jerazgraniåen

poåetnom oznakom

(engl.

start-tag

)

<osoba>

i

zavrãnom oznakom

(engl.

end-tag

)

</osoba>

. Sve ãto se nalazi izmeœu poåetne i zavrãne oznake elementa(iskàuåujuñi çih) naziva se

sadræaj

(engl.

content

) elementa. Sadræaj pomenutogelementa je tekst:

Alen Tjuring

Razmaci (beline) predstavàaju deo sadræaja, mada ih mnoge aplikacije zanemaruju.

Markiraçe

(engl.

markup

) dokumenta åine oznake

<osoba>

i

</osoba>

. Znakovniniz „Alen Tjuring” i razmaci koji ga okruæuju jesu

znakovni podaci

(engl.

characterdata

). Oznaka je najåeãñi oblik markiraça XML dokumenta, mada postoje i drugevrste koje ñemo razmotriti kasnije.

Sintaksa oznaka

XML oznake povrãno podseñaju na HTML oznake. Poåetna oznaka poåiçe znakom

<

a zavrãava se znakom

>

; zavrãna oznaka poåiçe znakom

</

a zavrãava se sa

>

; iz-meœu oznaka stoji ime elementa. Meœutim, za razliku od HTML oznaka, nove XMLoznake moæete praviti tokom pisaça dokumenta. Da biste opisali osobu, upotrebiteoznake

<osoba>

i

</osoba>

. Da biste opisali kalendar, upotrebite oznake

<kalendar>

i

</kalendar>

. Imena oznaka po pravilu odraæavaju tip sadræaja unutar elementa, a nenaåin formatiraça tog sadræaja.

Prazni elementi

Postoji i specijalna sintaksa za prazne elemente, one koji nemaju sadræaja. Takavelement moæe biti predstavàen jednom

oznakom praznog elementa

(engl.

empty-ele-ment tag

), koja poåiçe znakom

<

, a zavrãava se znakovima

/>

. Na primer, u jezikuXHTML, ãto je “XML-izovana” verzija standardnog HTML-a, elementi prekid reda

Page 19: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

14 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

(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 odluåite koji oblik oznaka ñete upotrebàavati za prazne elemente.U XML-u i XHTML-u (za razliku od HTML-a) ne moæete upotrebiti samo poåetnuoznaku – na primer,

<br>

ili

<hr>

– a da ne upotrebite i odgovarajuñu zavrãnu ozna-ku. To bi bila greãka u pogledu dobrog oblikovaça.

Uzimaçe u obzir razlike izmeœu malih i velikih slova

Za razliku od HTML-a, XML uzima u obzir razliku izmeœu malih i velikih slova. Ele-ment

OSOBA

nije jednak elementu

osoba

, niti elementu

Osoba

. Ako element otvoriteoznakom <osoba>, ne moæete ga zatvoriti oznakom </OSOBA>. Moæete upotrebàavati imala i velika slova po svom izboru, ali svaki element morate dosledno ispisati.

XML stablaPogledajmo neãto sloæeniji XML dokument. U primeru 2-2 imamo element osobakoji sadræi viãe podesno oznaåenih podataka, kako bi se videlo çihovo znaåeçe.

Roditeài i potomci

XML dokument u primeru 2-2 joã uvek sadræi samo jedan element osoba. Meœu-tim, sada taj element ne sadræi samo nediferencirane znakovne podatke. On ima åe-tiri elementa potomka (engl. child elements): jedan element ime_i_prezime i trielementa zanimaçe. Element ime_i_prezime ima dva sopstvena elementa potomka,element ime i element prezime.

Za element osoba kaæemo da je roditeà (roditeàski element) elementa ime_i_prezimei triju elemenata zanimaçe. Element ime_i_prezime je roditeà elementa ime i elemen-ta prezime. Katkada se kaæe da su element ime_i_prezime i elementi zanimaçe braña(engl. siblings) ili bratski elementi. Meœusobno bratski su i elementi ime i prezime.

Kao i u àudskom druãtvu, roditeài mogu imati viãe potomaka. Za razliku od àudskogdruãtva, XML svakom potomku daje taåno jednog, a ne dva ili viãe roditeàa. Svakomelementu (uz jedan izuzetak koji ñemo uskoro objasniti) roditeà je taåno jedan ele-ment. Drugim reåima, svaki element se nalazi unutar odreœenog drugog elementa.Ako je poåetna oznaka elementa unutar odreœenog elementa, onda i çegova zavrãnaoznaka mora biti unutar istog elementa. U XML-u su zabraçene oznake koje se pre-klapaju, kao u <strong><em>ovo je uobiåajeno u HTML-u</strong></em>. Poãto ele-ment em poåiçe unutar elementa strong, on se mora i zavrãiti unutar istog elementa.

Primer 2-2. Sloæeniji XML dokument koji opisuje odreœenu osobu

<osoba>

<ime_i_prezime>

<ime>Alen</ime>

<prezime>Tjuring</prezime>

</ime_i_prezime>

<zanimaçe>nauånik u oblasti raåunarstva</zanimaçe>

<zanimaçe>matematiåar</zanimaçe>

<zanimaçe>kriptograf</zanimaçe>

</osoba>

Page 20: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Elementi, oznake i znakovni podaci | 15

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Korenski element

Svaki XML dokument ima jedan element koji nema roditeàa. To je prvi element udokumentu i element koji sadræi sve druge elemente. U primerima 2-1 i 2-2, tu uloguje imao element osoba. Njega nazivamo korenski element (engl. root element) doku-menta. Katkada ga nazivaju i element (celog) dokumenta (engl. document element).Svaki dobro oblikovan XML dokument ima jedan korenski element. Poãto se ele-menti ne smeju preklapati, i poãto svi elementi osim korenskog imaju jednog rodi-teàa, 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 pravougaonikpredstavàa jedan element. Svaki crni pravougaonik predstavàa znakovne podatke.Svaka strelica predstavàa odnos sadræavaça.

Meãovit sadræajU primeru 2-2, sadræaj elemenata ime, prezime i zanimaçe bili su znakovni podaci;dakle, tekst bez ikakvih oznaka. Sadræaj elemenata osoba i ime_i_prezime bili su ele-menti potomci i razmaci (beline), koje veñina aplikacija zanemaruje. Takva razlika iz-meœu elemenata koji sadræe samo znakovne podatke i elemenata koji sadræe samoelemente potomke (i eventualno nekoliko razmaka – belina) uobiåajena je u doku-mentima sliånim zapisima. Meœutim, XML se moæe upotrebiti i za narativne doku-mente slobodnijeg oblika, kao ãto su poslovni izveãtaji, ålanci za åasopise, studentskieseji, kratke priåe, Web stranice itd.; ilustraciju daje primer 2-3.

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

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 zasluæili titulu

<istaknuto>nauånika u oblasti raåunarstva</istaknuto>. Njegovi doprinosi

toj oblasti previãe su brojni da bismo ih ovde sve naveli,

ali najpoznatiji su epohalni: <istaknuto>Tjuringov test</istaknuto>

ime_i_prezime

zanimaçe

osoba

zanimaçe zanimaçe

ime nauånik u oblastiraåunarstva matematiåar kriptografprezime

Alen Tjuring

Page 21: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

16 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Korenski element ovog dokumenta jeste biografija. Ta biografija ima elemente po-tomke pasus i definicija, kao i razmake (beline). I elementi pasus i definicija sadræedruge elemente: termin, istaknuto, ime_i_prezime i zanimaçe, a i neke neoznaåeneznakovne podatke. Za elemente kao ãto su pasus i definicija, koji sadræe elementepotomke i znakovne podatke koji nisu samo razmaci (beline), kaæemo da imaju meão-vit sadræaj (engl. mixed content). Meãovit sadræaj je uobiåajen u XML dokumentima ukojima su ålanci, eseji, priåe, kçige, romani, izveãtaji, Web stranice i sve drugo ãto jeorganizovano kao pisano pripovedaçe. Meãovit sadræaj je reœi (a s çim je i teæe radi-ti) u raåunarski generisanim i obraœenim XML dokumentima, koji se upotrebàavajuza razmenu baza podataka, serijalizaciju objekata, trajne formate datoteka itd. Jednaod prednosti XML-a je to da ga lako moæete prilagoditi veoma razliåitim zahtevimaraåunarski generisanih dokumenata i dokumenata koje su napisali àudi.

AtributiXML elementi mogu imati atribute. Atribut je par ime–vrednost pridruæeno poået-noj oznaci elementa. Imena atributa su od çihovih vrednosti razdvojena znakomjednakosti i opcionim razmakom. Vrednosti atributa moraju biti zatvorene u na-vodnike ili polunavodnike. Primera radi, sledeñi element osoba ima atribut roœenaåija je vrednost 1912-06-23 i atribut umrla åija je vrednost 1954-06-07:

<osoba roœena="1912-06-23" umrla="1954-06-07">

Alen Tjuring

</osoba>

i <istaknuto>Tjuringova maãina</istaknuto>.

</pasus>

</definicija><termin>Tjuringova maãina</termin> je do dana danaãçeg

standardan test za utvrœivaçe da li je neki raåunar zaista inteligentan.

Joã ga nijedan raåunar nije poloæio. </definicija>

<definicija><termin>Tjuringova maãina</termin> je apstraktan automat

koji se moæe nalaziti u konaåno mnogo staça, ima beskonaånu memoriju,

i za çega se moæe dokazati da je ekvivalentan svakom drugom automatu

s proizvoàno velikom memorijom, koji se moæe nalaziti u konaåno mnogo staça.

Dakle, ono ãto vaæi za jednu Tjuringovu maãinu, vaæi za sve çih,

bez obzira na to kako su napravàene.

</definicija>

<pasus>

<ime_i_prezime><prezime>Tjuring</prezime></ime_i_prezime> je bio i perfektan

<zanimaçe>matematiåar</zanimaçe> i <zanimaçe>kriptograf</zanimaçe>.

U savezniåkom razbijaçu nemaåkog ãifratora Enigma, çegov doprinos

je bio odluåujuñi. Tjuring se ubio <datum><dan>7</dan>. <mesec>juna</mesec>

<godina>1954</godina></datum>, nakon ãto je bio osuœen kao homoseksualac

i prisiàen da prima içekcije æenskih hormona.

</pasus>

</biografija>

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

Page 22: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Atributi | 17

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Ãto se tiåe XML analizatora, prethodni element je identiåan sledeñem. U çemu suumesto navodnika upotrebàeni polunavodnici, redosled atributa je drugaåiji i do-dato je nekoliko razmaka oko znaka jednakosti.

<osoba umrla = '1954-06-07' roœena = '1912-06-23'>

Alen Tjuring

</osoba>

Razmake oko znaka jednakosti svako dodaje po svom nahoœeçu. Polunavodnici sukorisni u sluåajevima kada vrednost atributa sadræi navodnik. Redosled atributanije vaæan.

U primeru 2-4 prikazano je kako se atributi mogu upotrebiti za kodiraçe velikogdela istih podataka navedenih u dokumentu sliånom zapisu iz primera 2-2.

Ovime se otvara pitaçe treba li i kada treba za åuvaçe podataka upotrebàavati ele-mente potomke, a kada atribute. To je predmet æestoke rasprave. Neki informatiåaritvrde da su atributi podesni za metapodatke oko elementa, dok su elementi zasame podatke. Drugi ukazuju na to da nije uvek oåigledno ãta su podaci, a ãta me-tapodaci. Zaista, odgovor moæe zavisiti od toga gde se podaci koriste.

Nesporno je da svaki element moæe imati samo jedan atribut datog imena. Malo jeverovatno da ñe to postati problem za datum roœeça ili smrti; moglo bi da bude pro-blem za zanimaçe, ime, adresu i sve drugo od åega element moæe imati viãe prime-raka. Nadaàe, struktura atributa je sasvim ograniåena. Vrednost atributa je prostonediferenciran tekst. Podela datuma crticama na godinu, mesec i dan u prethodnimodlomcima koda predstavàa maksimalnu podstrukturu koja je prikladna za ugra-dçu u atribut. Mnogo je fleksibilnija i proãirivija struktura zasnovana na elemen-tima. Uprkos tome, za neke primene atributi su sigurno podesniji. Najzad, ako samipiãete svoj XML reånik, na vama je da odluåite kada ñete upotrebiti element, a kadaatribut.

Atributi su korisni i u narativnim dokumentima, kao ãto je pokazano u primeru 2-5.U çemu je moæda neãto oåiglednije ãta pripada elementima, a ãta atributima. Sirovnarativni tekst predstavàen je u obliku znakovnih podataka unutar elemenata. Do-datne informacije koje objaãçavaju te podatke predstavàene su u obliku atributa.Meœu tim informacijama su reference izvora, URL adrese slika, hiperveze, i datumiroœeça i smrti. Meœutim, åak i ovo se moglo uraditi drugaåije. Na primer, brojevifusnota mogu biti atributi elementa fusnota, a ne znakovni podaci.

Primer 2-4. XML dokument koji osobu opisuje pomoñu atributa

<osoba>

<ime_i_prezime ime="Alen" prezime="Tjuring"/>

<zanimaçe vrednost="nauånik u oblasti raåunarstva"/>

<zanimaçe vrednost="matematiåar"/>

<zanimaçe vrednost="kriptograf"/>

</osoba>

Page 23: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

18 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

XML imenaSpecifikacija XML-a ume da bude sitniåava i izbiràiva ãto se tiåe imena. Bez obzirana to, ona pokuãava da bude efikasna kada je moguñe. Jedan od naåina da to po-stigne jeste, po moguñstvu, koriãñeçe istih pravila za razliåite stavke. Na primer,pravila za imena XML elemenata jednaka su pravilima za imena XML atributa, kaoi za imena nekih reœe upotrebàavanih komponenata. Sve çih skupno nazivamoXML imena (engl. XML names).

U suãtini, XML imena mogu sadræati sve alfanumeriåke znakove. Meœu çima sustandardna engleska slova od A do Z i od a do z, kao i cifre od 0 do 9. XML imenamogu sadræati i neengleska slova, brojeve i ideograme, kao ãto su ö, ç, Ω, . U ime-nima se mogu koristiti i sledeña tri znaka interpunkcije:

_ doça crta

- crtica

. taåka

U XML imenima ne smeju se javàati drugi znakovi interpunkcije, kao ãto su navod-nici, polunavodnici, znak za dolar, kapica (^), znak za procenat i taåka i zarez (;).

Primer 2-5. Narativni dokument u kome su upotrebàeni 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 roœena='1912-06-23'

umrla='1954-06-07'> <ime>Alen</ime>

<prezime>Tjuring</prezime> </osoba> je bio jedan od prvih àudi koji su

zaista zasluæili titulu <istaknuto>nauånika u oblasti raåunarstva</istaknuto>.

Njegovi doprinosi toj oblasti previãe 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

maãina</istaknuto>.</pasus>

<pasus><prezime>Tjuring</prezime> je bio i perfektan <zanimaçe>matematiåar

</zanimaçe> i <zanimaçe>kriptograf</zanimaçe>. U savezniåkom razbijaçu

nemaåkog ãifratora Enigma, çegov doprinos bio je odluåujuñi.

<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 osuœen kao homoseksualac

i prisiàen da prima içekcije æenskih hormona.<fusnota izvor="Alan Turing:

the Enigma, Andrew Hodges, 1983">2</fusnota>

</pasus>

</biografija>

Page 24: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Reference | 19

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Dvotaåka je dozvoàena, ali je rezervisana za prostore imena, ãto je objaãçeno upoglavàu 4. XML imena ne smeju sadræati beline bilo koje vrste, bez obzira na to dali se radi o razmaku, znaku za vrañaçe na poåetak reda, znaku za prelazak u novired, nelomivom razmaku itd. Najzad, sva imena koja poåiçu znakovnim nizom“XML” (u svim kombinacijama malih i velikih slova) rezervisana su za standardiza-ciju u XML specifikacijama organizacije W3C.

Primarni novitet u XML-u 1.1 jeste da XML imena mogu sadræati samoznakove definisane u standardu Unicode 3.0 i çegovim novijim verzi-jama. XML 1.0 je ograniåen na znakove definisane u standardu Unico-de 2.0. XML 1.1 dozvoàava u imenima i znakove iz sledeñih dodatnihpisama: burmanskog, mongolskog, Thaana, kambodæanskog, Yi i am-harskog. (U XML-u 1.0 sva su ta pisma bila dozvoàena u tekstualnomsadræaju. Tada se nisu smela upotrebàavati za imena elemenata, atri-buta i entiteta.) XML 1.1 ne pruæa gotovo niãta novo programerimakoji u svojim oznakama ne upotrebàavaju navedena pisma.

XML 1.1 dozvoàava da imena sadræe i neuobiåajene simbole, kao ãtoje muziåki simbol za ãestostruno cimbalo, pa åak i pribliæno milionkodova kojima joã nisu dodeàeni znakovi. Meœutim, koriãñeçe tihsimbola u imenima bilo bi veoma nerazumno. Toplo vam pre-poruåujemo da, åak i u XML-u 1.1, imena ograniåite na slova, cifre,ideograme i izriåito dozvoàene ASCII znakove interpunkcije.

XML imena smeju da poånu iskàuåivo slovom, ideogramom ili znakom doça crta.Ne mogu poåeti cifrom, crticom niti taåkom. Duæina XML imena nije ograniåena.Zato su sledeñi 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>

• <téléphone>011 33 91 55 27 55 27</téléphone>

• <πepcha>Γa nhaºNbahob</πepcha>

Sledeñi elementi su neprihvatàivi:

• <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>

ReferenceZnakovni podaci unutar elementa ne smeju sadræati znak za maçe od (<) koji nemaodgovarajuñu izlaznu (engl. escape) sekvencu (</). Znak < uvek se tumaåi kao poåetakoznake. Ukoliko vam zatreba u tekstu, pretvorite ga u izlaznu sekvencu pomoñu refe-rence entiteta (engl. entity reference) &lt;, numeriåke reference znaka (engl. numeric

Page 25: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

20 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

character reference) &#60; ili heksadecimalne numeriåke reference znaka (engl. hexade-cimal numeric character reference) &#x3C;. Kada analizator bude åitao dokument, za-meniñe sve reference &lt;, &#60 ili &#x3C znakom <, a neñe se zbuniti i protumaåiti <kao poåetak 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 sadræati ni sirov znak ampersend (&) koji nema svoju iz-laznu sekvencu. Taj znak se uvek tumaåi kao poåetak reference entiteta. Ovako seampersend referencom entiteta &amp; pretvara u izlaznu sekvencu:

<company>W.L. Gore &amp; Associates</company>

Poãto je znak ampersend u Unicode sistemu definisan kao kôd 38, mogli smo upo-trebiti i numeriåku 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 mar-kiraça. Kada aplikacija raãålaçuje i analizira XML dokument, ta markiraça se za-meçuju znakom ili znakovima na koje referenca upuñuje. XML unapred definiãe petreferenci entiteta. To su:

&lt;

Znak „maçe od”, poznat i kao otvorena ugaona zagrada (<)

&amp;

Ampersend (&)

&gt;

Znak „veñe od”, poznat i kao zatvorena ugaona zagrada (>)

&quot;

Ravan navodnik (")

&apos;

Ravan polunavodnik, poznat i kao apostrof (')

U sadræaju elemenata, samo se &lt; i &amp; moraju upotrebàavati umesto doslovnonapisanih znakova < i &. Ostale reference su opcione. &quot; i &apos; su korisneunutar vrednosti atributa, gde bi sirov " ili ' mogao biti pogreãno protumaåen kaozavrãetak vrednosti atributa. Na primer, u sledeñoj XML oznaci slike upotrebàenaje referenca entiteta &apos; da bi se ubacio polunavodnik u ime O’Reilly:

<slika izvor='oreilly_koala3.gif' ãirina='122' visina='66'

alt='Powered by O&apos;Reilly Books'

/>

Iako se znak „veñe od” ne moæe pogreãno protumaåiti kao da zavrãava oznaku kojunije trebalo da zatvori, referenca &gt; je dozvoàena najviãe zbog simetrije s referen-com &lt;.

Page 26: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Odeàci CDATA | 21

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Postoji jedan neobiåan sluåaj kada znak „veñe od” zaista morate pre-tvoriti u izlaznu sekvencu. U znakovnim podacima ne sme se pojavitiniz ]]>. Umesto çega morate pisati ]]&gt;.

Pored pet unapred definisanih referenci entiteta, moæete koristiti i druge koje ste saminaveli u definiciji tipa dokumenta. U poglavàu 3 objasniñemo kako se to radi.

Reference entiteta i znakova moæete upotrebàavati samo u sadræaju elemenata i vred-nostima atributa. Ne smete ih koristiti u imenima elemenata, imenima atributa, nitiu drugim vrstama markiraça. Tekst kao ãto je &amp; ili &#60; moæe se pojaviti unutarkomentara ili instrukcije za obradu. Meœutim, na tim mestima reference neñe bitirazreãene. Analizator zameçuje samo reference koje pronaœe u sadræaju elemenata ivrednostima atributa. On ne prepoznaje reference na drugim mestima.

Odeàci CDATAKada XML dokument sadræi uzorke XML ili HTML izvornog koda, znakovi < i & utim uzorcima moraju biti napisani kao &lt; odnosno &amp;. Ãto viãe odeàaka s do-slovno navedenim kodom dokument sadræi i ãto su oni duæi, to kodiraçe postaje za-mornije. Umesto da se gçavite s tim, svaki uzorak doslovno navedenog koda moæetezatvoriti u odeàak CDATA (engl. CDATA section). Odeàak CDATA razgraniåavate zna-kovima <![CDATA[ i ]]>. Sve ãto se zatekne izmeœu graniånika <![CDATA[ i ]]> tretirase kao sirov znakovni podatak. Zato u odeàku CDATA znak < ne otvara XML oznaku,znak & ne zapoåiçe referencu entiteta itd. Svi znakovi unutar odeàka CDATA tumaåese kao obiåni znakovni podaci, a ne kao delovi markiraça.

Primera radi, u udæbeniku za Scalable Vector Graphics (SVG), napisanom naXHTML-u, moæete naiñi na ovako neãto:

<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 kôd ukàuåen je neposredno u XHTML datoteku, a da nismo moralipaæàivo da zamenimo svaki znak < referencom &lt;. Tako smo dobili SVG doku-ment, a ne ugraœenu SVG sliku, ãto bi se u ovom primeru desilo da SVG kôd nismosmestili u odeàak CDATA.

Jedino ãto se u odeàku CDATA ne sme pojaviti jeste zavrãni graniånik odeàka CDATA,]]> .

Odeàci CDATA postoje kao pogodnost za programere, a ne za programe. Analizatorivas ne moraju obavestiti da li je odreœen blok teksta potekao iz odeàka CDATA, odnormalnih znakovnih podataka ili od znakovnih podataka koji sadræe reference en-titeta kao ãto su &lt; i &amp;. Kada vam podaci postanu dostupni, te razlike ñe veñbiti izbrisane. Kôd koji piãete ne sme zavisiti od tih razlika.

Page 27: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

22 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

KomentariXML dokumenti mogu sadræati komentare, tako da koautori mogu ostavàati napo-mene jedni drugima i sebi, dokumentujuñi zaãto su uradili to ãto su uradili i ãta jejoã ostalo da se uradi. XML komentari su sintaktiåki jednaki HTML komentarima.Kao u HTML-u, komentari poåiçu sa <!-- i zavrãavaju se prvim primerkom niza-->. Na primer:

<!-- Ove hiperveze treba da proverim i aæuriram kada stignem. -->

Dve crtice se ne smeju pojaviti unutar komentara pre zavrãnog -->. Izriåito je zabra-çen zavrãetak komentara s tri crtice, --->.

Komentare moæete stavàati bilo gde unutar znakovnih podataka u dokumentu.Moæete ih stavàati pre i posle korenskog elementa. (Komentari nisu elementi, pa setime ne krãi XML pravilo o strukturi stabla niti ono o jedinstvenom korenskomelementu.) Meœutim, komentari se ne smeju pojaviti unutar oznake ili drugogkomentara.

Aplikacije koje åitaju i obraœuju XML dokumente mogu, ali ne moraju prosleditiinformacije iz komentara. Svaka aplikacija slobodno moæe da ispusti sve komentare,ako se tako sviœa çenom autoru. Ne piãite dokumente ili aplikacije koji zavise oddostupnosti komentara. Oni sluæe iskàuåivo tome da sirov izvorni kôd XML doku-menta uåine razumàivijim àudima. Komentari nisu nameçeni raåunarskim pro-gramima. U te svrhe upotrebite instrukciju za obradu (engl. processing instruction).

Instrukcije za obraduU HTML-u se komentari ponekad zloupotrebàavaju za podrãku nestandardnimproãireçima. Primera radi, sadræaj elementa script katkada se zatvara u komentarda bi se zaãtitio od prikazivaça u åitaåu koji ne ume da radi sa skriptovima. Webserver Apache raãålaçuje i analizira komentare u .shtml datotekama da bi prepo-znao datoteke za umetaçe na serverskoj strani. Naæalost, ti dokumenti, nakonobrade u raznim HTML editorima, ponekad ne preæive s netaknutim komentarimai çima pridruæenom semantikom. Ãto je joã gore, bezazlen komentar moæe biti po-greãno protumaåen kao ulaz u aplikaciju.

Kao alternativno sredstvo prosleœivaça informacija odreœenim aplikacijama koje ñeåitati dokument, XML ima instrukciju za obradu. Instrukcija za obradu poåiçe sa <?,a zavrãava sa ?>. Neposredno posle <? dolazi XML ime ciàa, ãto moæe biti ime apli-kacije kojoj je ta instrukcija nameçena ili identifikator instrukcije. Ostatak instruk-cije za obradu sadræi tekst u formatu koji odgovara ciànim aplikacijama.

Na primer, u HTML-u se robotskom oznakom META saopãtava pretraæivaåima i osta-lim robotima treba li i kako da indeksiraju stranicu. Za XML dokumente predloæe-na je kao ekvivalentna sledeña instrukcija za obradu:

<?robots index="yes" follow="no"?>

Cià ove instrukcije za obradu je robots. Sintaktiåki, ova instrukcija sadræi dva pseu-doatributa, jedan nazvan index, a drugi follow. Njihove vrednosti su yes ili no. Se-mantika ove instrukcije je sledeña: ako atribut index ima vrednost yes, onda bi

Page 28: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Deklaracija XML-a | 23

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

roboti pretraæivaåa trebalo da indeksiraju stranicu. Sliåno tome, ako atribut followima vrednost yes, onda ñe roboti pretraæivaåa posetiti lokacije na koje upuñuju hi-perveze stranice; ukoliko ima vrednost no, to neñe biti uåiçeno.

Druge instrukcije za obradu mogu imati potpuno razliåite sintakse i semantike. Pri-mera radi, instrukcije za obradu mogu sadræati praktiåno neograniåenu koliåinuteksta. PHP smeãta 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( );

?>

Instrukcije za obradu spadaju u oznaåavaçe, ali nisu elementi. Stoga ih moæete pisatina bilo kom mestu u XML dokumentu osim unutar oznaka, kao komentare. Smete ihpisati i pre i posle korenskog elementa. Najåeãña instrukcija za obradu, xml-style-sheet, dokumentu pridruæuje opis stilova. Ona se uvek piãe pre korenskog elementa,kao u primeru 2-6. U çemu instrukcija za obradu xml-stylesheet saopãtava åitaåuda na dokument, pre nego ãto ga prikaæe åitaocu, primeni CSS opis stilova osoba.css.

Da bi se izbegla zabuna s deklaracijom XML-a, zabraçene su instrukcije za obradunazvane xml, XML, XmL itd., u bilo kojoj kombinaciji malih i velikih slova. Instrukcija-ma za obradu moæete davati sva druga imena koja zadovoàavaju pravila XML-a.

Deklaracija XML-aXML dokumenti bi trebalo da otpoånu deklaracijom XML-a (ali ne moraju). Dekla-racija XML-a izgleda kao instrukcija za obradu nazvana xml, koja sadræi pseudoatri-bute version, standalone i encoding. Strogo uzev, to nije instrukcija za obradu, negodeklaracija XML-a – ni viãe ni maçe od toga. Ilustraciju daje primer 2-7.

Primer 2-6. XML dokument sa instrukcijom za obradu smeãtenom u prolog

<?xml-stylesheet href="osoba.css" type="text/css"?>

<osoba>

Alen Tjuring

</osoba>

Primer 2-7. Veoma jednostavan XML dokument s deklaracijom XML-a

<?xml version="1.0" encoding="ASCII" standalone="yes"?>

<osoba>

Alen Tjuring

</osoba>

Page 29: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

24 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

XML dokumenti ne moraju imati deklaraciju XML-a, ali ako je imaju, ona mora bitiprva stavka dokumenta. Pre çe ne sme biti komentara, razmaka (belina), instrukcijaza obradu itd. Razlog za to je ãto XML analizator na osnovu prvih pet znakova(<?xml) zakàuåuje kakvo je kodiraçe znakova u dokumentu – recimo, da li je upotre-bàen jednobajtni ili viãebajtni skup znakova. Pre deklaracije XML-a sme biti samonevidàiva Unicode oznaka redosleda bajtova. Razmotriñemo to ponovo u poglavàu 5.

Atribut versionAtribut version bi trebalo da ima vrednost 1.0. Pod veoma neuobiåajenim okolnosti-ma moæete mu dati vrednost 1.1. Poãto zadavaçe verzije 1.1 ograniåava dokumentna najnovije verzije malog broja analizatora, a svi analizatori za XML 1.1 moraju po-dræavati i XML 1.0, ne bi trebalo da olako zadajete verziju 1.1.

Ne verujete? Najpre odgovorite na nekoliko pitaça:

1. Govorite li burmanski, mongolski, kambodæanski, amharski ili divehi?

2. Sadræe li vaãi podaci zastarele, netekstualne C0 kontrolne znakove kao ãto suvertikalni tabulator, prelazak na novu stranicu ili znak za zvonce?

Ukoliko ste na oba pitaça odgovorili „ne”, koriãñeçem XML-a 1.1 ne dobijate apso-lutno niãta. Ako ste na jedno pitaçe odgovorili “da”, moæda imate razloga za kori-ãñeçe XML-a 1.1. XML 1.0 dozvoàava da se burmanski, mongolski, kambodæanskiitd. upotrebàavaju u znakovnim podacima i vrednostima atributa. XML 1.1 dozvoàa-va da se ta pisma upotrebàavaju i u imenima elemenata i atributa, ãto XML 1.0 nedopuãta. XML 1.1 dozvoàava i da se C0 kontrolni znakovi (sem znaka null) upotre-bàavaju u znakovnim podacima i vrednostima atributa (ukoliko su pretvoreni u nu-meriåke reference znakova poput &#x07;), ãto XML 1.0 ne dopuãta. Ako ijedan od ovadva uslova vaæi za vas, mogli biste upotrebiti XML 1.1 (premda bi trebalo da budetesvesni da time znatno suæavate potencijalnu publiku svog XML dokumenta). U pro-tivnom, trebalo bi da upotrebàavate iskàuåivo XML 1.0.

Atribut encodingDosad smo bili neodreœeni u pogledu skupova znakova i kodiraça znakova. Reklismo da su XML dokumenti sastavàeni od åistog teksta, ali nismo rekli kako su zna-kovi tog teksta kodirani. Po standardu ASCII? Latin-1? Unicode? Nekom åetvrtom?

Kratak odgovor na ovo pitaçe je „da”. Dugaåak odgovor je da su XML dokumentipodrazumevano kodirani UTF-8 kodovima promenàive duæine u skupu znakovaUnicode. Poãto se radi o nadskupu skupa znakova ASCII, tekstualne datoteke napi-sane u åistom ASCII-ju automatski su kodirane i po standardu UTF-8. Meœutim,veñina programa za obradu XML-a (naroåito oni napisani na Javi) mogu obraœivatimnogo veñi broj skupova znakova. Analizatoru treba reñi samo koji je standard zakodiraçe znakova upotrebàen u dokumentu. To je najboàe uraditi preko meta-podataka, koji su smeãteni u sistem datoteka ili ih daje server. Meœutim, ne pruæajusvi sistemi podatke o skupu znakova, pa XML dozvoàava dokumentima da saminaznaåe svoj skup znakova pomoñu deklaracije kodiraça (engl. encoding declarati-on) unutar deklaracije XML-a. U primeru 2-8 pokazano je kako biste naznaåili da jedokument napisan u skupu znakova ISO-8859-1 (Latin-1), koji obuhvata i znakovekao ãto su ö i ç, potrebne u mnogim zapadnoevropskim jezicima.

Page 30: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Provera dobre oblikovanosti dokumenta | 25

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

U deklaraciji XML-a atribut encoding je opcion. Ako se on izostavi, a metapodaci sunedostupni, analizator pretpostavàa da je upotrebàen skup znakova Unicode. Naosnovu prvih nekoliko bajtova datoteke, analizator moæe pokuãati da utvrdi koje jeUnicode kodiraçe upotrebàeno. Ako su metapodaci dostupni, ali su suprotni de-klaraciji o kodiraçu, onda analizator veruje metapodacima. Na primer, ukolikoHTTP åitaå kaæe da je dokument kodiran u ASCII-ju, a deklaracija o kodiraçukaæe da je kodiran po standardu UTF-8, analizator ñe izabrati ASCII.

Razna kodiraça i pravilno rukovaçe neengleskim XML dokumentima razmotriñe-mo detaànije u poglavàu 5.

Atribut standaloneUkoliko atribut standalone (samostalan) ima vrednost no, onda aplikacija moæe uåi-tati spoàni DTD (tj. DTD smeãten u neku drugu datoteku, a ne u onu koja sadræi do-kument) da bi utvrdila prave vrednosti odreœenih delova dokumenta. Primera radi,DTD moæe sadræati podrazumevane vrednosti atributa koje analizator treba da pri-javi, premda one u dokumentu ne postoje.

Dokument koji nema DTD, a takvi su svi dokumenti u ovom poglavàu, moæe imatiyes kao vrednost atributa standalone. I dokument koji ima DTD moæe imati yes kaovrednost atributa standalone, ukoliko taj DTD ni na koji naåin ne meça sadræajdokumenta ili je DTD potpuno interni. Pojedinosti o dokumentima s DTD-ovimaobjaãçene su u poglavàu 3.

U deklaraciji XML-a, atribut standalone je neobavezan. Ako je izostavàen, pretpo-stavàa se da ima vrednost no.

Provera dobre oblikovanosti dokumentaSvaki XML dokument, bez izuzetka, mora biti dobro oblikovan. To znaåi da morazadovoàiti viãe pravila, meœu kojima i sledeña:

1. Svaka poåetna oznaka mora imati odgovarajuñu zavrãnu oznaku.

2. Elementi mogu biti ugneæœeni, ali se ne smeju preklapati.

3. Mora postojati taåno jedan korenski element.

4. Vrednosti atributa moraju biti zatvorene u navodnike.

5. Element ne sme imati dva istoimena atributa.

6. Unutar oznaka ne sme biti komentara i instrukcija za obradu.

7. U znakovnim podacima elemenata i atributa ne sme biti znakova < ili & kojinisu pretvoreni u izlaznu sekvencu.

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

>?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>

<osoba>

Erwin Schrödinger

>/osoba>

Page 31: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

26 | Poglavlje 2: Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

Ovo nije celokupna lista pravila. Dokument moæe biti loãe oblikovan na veomamnogo naåina. Celokupna lista pravila navedena je u poglavàu 21. Neka od çih seodnose na strukture koje joã nismo razmatrali, kao ãto su DTD-ovi. Druga pravilañete veoma retko krãiti ako budete sledili primere iz ovog poglavàa (na primer, ne-mojte stavàati razmak izmeœu poåetnog < i imena elementa u oznaci).

Bez obzira na to da li je greãka mala ili velika i da li se sreñe retko ili åesto, XML ana-lizator koji åita dokument mora da je prijavi. Analizator moæe, ali ne mora da prijavisve greãke u dobrom oblikovaçu koje pronaœe u dokumentu. Meœutim, analizatorne sme pokuãati da popravi dokument i da doda ono ãto smatra da je autor doku-menta izostavio. Ne sme dodati izostavàene navodnike oko vrednosti atributa ili izo-stavàenu zavrãnu oznaku, niti sme zanemariti komentar napisan unutar poåetneoznake. Analizator mora prijaviti greãku. Tako je napravàeno da bi se izbegli ratovikompatibilnosti („vaã åitaå prijavàuje 5 naãih greãaka, pa ñe i naã åitaå prijavàivati 5vaãih greãaka”), koji åitaåe Weba prate od çihovih poåetaka do danas. Zato proveriteda li je vaã XML dobro oblikovan pre nego ãto ga objavite, bez obzira na to da li seradi o Web stranici, ulazu u bazu podataka ili neåem treñem.

Najjednostavniji naåin da to uradite jeste da uåitate dokument u åitaå Weba kojiume da radi s XML dokumentima, kao ãto je Mozilla. Ukoliko je dokument dobrooblikovan, åitaå ñe ga prikazati. Ako nije, prikazañe poruku o greãci.

Umesto uåitavaça dokumenta u åitaå Weba, moæete neposredno upotrebiti XMLanalizator. Veñina XML analizatora nije nameçena krajçim korisnicima. Oni su za-pravo biblioteke klasa projektovane za ugradçu u program koji se lakãe koristi, kaoãto je Mozilla. Njihov interfejs komandne linije je minimalan, ako uopãte postoji; åe-sto nije dobro dokumentovan. Bez obzira na sve to, ponekad je bræe provuñi grupudatoteka kroz interfejs komandne linije nego ih jednu po jednu uåitavati u åitaåWeba. Nadaàe, kada nauåite da radite s DTD-ovima i ãemama, iste alatke moñi ñeteda upotrebàavate za proveru validnosti dokumenata, ãto veñina åitaåa Weba ne radi.

Postoji mnogo XML analizatora dostupnih u raznim jezicima. Ovde ñemo prikazatiproveru dobre oblikovanosti analizatorom libxml kompanije Gnome Project, kojimoæete preuzeti na lokaciji http://xmlsoft.org. Taj paket otvorenog izvornog koda na-pisan je na priliåno prenosivom C-u i radi na veñini glavnih platformi, ukàuåujuñiWindows, Linux i Mac OS X. (Unapred je instaliran u mnogim distribucijama Linu-xa.) Postupak bi trebalo da bude sliåan i s drugim analizatorima, premda se pojedi-nosti mogu razlikovati.

libxml je zapravo biblioteka, ali sadræi i program xmllint koji pomoñu te bibliotekeproverava dobru oblikovanost datoteka. xmllint se pokreñe pisaçem çegovog ime-na u Unixovom komandnom okruæeçu (engl. Unix shell) ili posle DOS-ovog odziv-nika (engl. DOS prompt), kao i svaki drugi program koji ima komandnu liniju.Njegovi argumenti su URL adrese ili imena datoteka dokumenta koji treba proveri-ti. Evo rezultata koje je xmllint dao za jednu od ranijih verzija primera 2-5. Veñ prvired ispisa saopãtava gde je prvi problem u datoteci:

% xmllint 2-5.xml

2-5.xml:5: error: Unescaped '<' not allowed in attribute values

<osoba roœena='1912/06/23'

^

2-5.xml:5: error: attributes construct error

<osoba roœena='1912/06/23'

^

Page 32: Chapter 1download.tutoriali.org/Tutorials/XML/XML_za_programere.pdf · MathML Mathematical Markup Language –XML aplikacija za ugradçu jednaåina u Web stranice i druge dokumente,

Provera dobre oblikovanosti dokumenta | 27

Osnove XML-a

This is the Title of the Book, eMatter Edition

Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.

2-5.xml:5: error: error parsing attribute name

<osoba roœena='1912/06/23'

^

2-5.xml:5: error: attributes construct error

<osoba roœena='1912/06/23'

^

2-5.xml:5: error:xmlParseStartTag: problem parsing attributes

<osoba roœena='1912/06/23'

^

2-5.xml:5: error: Coludn't find end of Start Tag image line 3

<osoba roœena='1912/06/23'

^

Kao ãto vidite, analizator je pronaãao greãku. U ovom sluåaju, poruka o greãci namnije naroåito pomogla. Stvarni problem nije bio u tome ãto je vrednost atributa sa-dræala znak <, nego u tome ãto je izostavàen zavrãni navodnik u vrednosti atributavisina. Ipak smo pomoñu datih podataka uspeli da pronaœemo i otklonimo pro-blem. Uprkos dugaåkom ispisu, xmllint je prijavio samo prvu greãku u dokumentu,pa ñete morati da ga pokreñete viãe puta dok ne pronaœete i ne ispravite sve greãke.Kada smo primer 2-5 popravili tako da bude dobro oblikovan, xmllint je samoodãtampao datoteku koju je proåitao:

% 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 roœena='1912-06-23'

umrla='1954-06-07'> <ime>Alen</ime>

...

Poãto je dokument ispravàen i dobro oblikovan, moæete ga proslediti åitaåu Weba,bazi podataka ili nekom drugom programu koji ga oåekuje. Gotovo svi netrivijalniruåno pisani dokumenti na poåetku nisu dobro oblikovani, pa je vaæno da proveriteãta ste uradili pre nego ãto to objavite.