48
Extensible Markup Language XML 2007/2008. Fakultet za poslovnu informatiku Univerzitet Singidunum www.fpi.singidunum.ac.yu Aplikativni softver Violeta Tomašević Literatura Internet.

Extensible Markup Language XML

Embed Size (px)

DESCRIPTION

A plikativn i softver. Fakultet za poslovnu informatiku Univerzitet Singidunum www.fpi.singidunum.ac.yu. Extensible Markup Language XML. 2007/2008. Violeta Tomašević Literatura Internet. Šta je XML i čemu služi?. - PowerPoint PPT Presentation

Citation preview

Page 1: Extensible Markup Language XML

Extensible Markup LanguageXML

2007/2008.

Fakultet za poslovnu informatikuUniverzitet Singidunumwww.fpi.singidunum.ac.yu

Aplikativni softver

Violeta Tomašević

Literatura

• Internet.

Page 2: Extensible Markup Language XML

2XML

Aplikativni softver

Šta je XML i čemu služi?

XML predstavlja tekst koji je formatiran u skladu sa dobro definisanim skupom pravila. Ovaj tekst može da bude smešten u datoteku na disku, ali i ne mora. Može, takođe, da bude predstavljen:

kao poruka koja se šalje HTTP protokolom kao niz znakova, tj. string u programskom jeziku kao objekat u bazi podataka na bilo koji drugi način koji omogućava korišćenje tekstualnih podataka

Jednostavnosti radi, referisaćemo se na XML dokumente ili fajlove.

XML služi za čuvanje, prenos i razmenu podataka. Zbog svog formata, omogućava razmenu podataka i između nekompatibilnih sistema, tj. nezavisan je od korišćenih hardverskih i softverskih platformi.

Page 3: Extensible Markup Language XML

3XML

Aplikativni softver

Reprezentacija u obliku stablaXML dokumenti uglavnom sadrže tagove i tekst, tako da kod napisan u XML-u u mnogome podseća na HTML kod.

Za razliku od HTML-a, tagovi u XML-u nisu predefinisani (prethodno zadati). Naime, korisnik sam definiše tagove koje će koristiti.

XML dokument se može posmatrati kao struktura u obliku hijerarhijskog stabla.

<?xml version=“1.0”?><book> <author> Tom Wolfe </author> <title> The Right Stuff </title> <price> $6.00 </price></book>

ROOT

<book>

<author> <title> <price>

“Tom Wolfe”

“The Right Stuff”

“$6.00”

=

Page 4: Extensible Markup Language XML

4XML

Aplikativni softver

Dobro formatiran XML dokumentDobro formatiran XML dokument predstavlja dokument u kome XML sintaksa zadovoljava sledeća pravila:

Dokument ima samo jedan osnovni element (root). Svi ostali elementi su ugnježdeni unutar ovog osnovnog elementa.

Elementi moraju imati završni tag (<…> … </…>). Jedini izuzetak predstavlja empty tag koji nema ni sadržaj ni telo, a označava se <…/>.

Elementi moraju biti propisno ugnježdeni. To znači da se par tagova jednog elementa ne sme preklapati sa parom tagova drugog elementa. Ne postoji ograničenje u pogledu nivoa ugnježdavanja.

Imena tagova u XML-u su case-sensitive (zavise od velikih i malih slova). Pri dodeljivanju imena se moraju poštovati određena pravila.

Sve vrednosti atributa moraju biti u okviru navodnika.

Prva linija dokumenta bi trebalo da sadrži specijalan tag koji definiše korišćenu verziju XML-a (najčešće se koristi verzija XML 1.0).

Page 5: Extensible Markup Language XML

5XML

Aplikativni softver

Jedinstven osnovni element

<?xml version=“1.0”?><colors> <color>red</color> <color>green</color> <color>blue</color></colors>

<?xml version=“1.0”?><color>red</color><color>green</color><color>blue</color>

Primer ispravnog koda Primer neispravnog koda

Objašnjenje: u ovom primeru colors predstavlja osnovni element za XML dokument. Ostali elementi su ugnježdeni unutar osnovnog elementa.

Objašnjenje: u ovom primeru color predstavlja više osnovnih elementa, što nije dozvoljeno u XML-u.

Page 6: Extensible Markup Language XML

6XML

Aplikativni softver

Završni tag

Svaki element u XML-u mora da ima početni i završni tag. Kao i u HTML-u, završni tag se prepoznaje po simbolu /.

Primer: <color>red</color>

Unutar početnog taga, elementi mogu da sadrže atribute koji daju dodatne informacije o elementu.

Primer: <book isbn=“7817”>red</color>

Prazan element (empty element) ne sadrži druge elemente, kao ni podatke.

Primer:Kompletna notacija za prazan element: <record key=“123”></record>Skraćena notacija za prazan element: <record key=“123” />Notacija za prazan element bez atributa: <record />

Page 7: Extensible Markup Language XML

7XML

Aplikativni softver

Ugnježdavanje elemenata Ugnježdavanje elemenata zahteva da se završni tagovi unutrašnjih elemenata moraju pojaviti u kodu pre nego što se pojave završni tagovi spoljašnjih elemenata.

Broj ugnježdenih elemenata (dece elemenata) i podataka između početnog i završnog taga nije ograničen.

<?xml version=“1.0”?><shirt> <style>Polo</style> <color>green</color> <size>large</size></shirt>

<?xml version=“1.0”?><shirt> <style> <size>large <color>red Polo </style></size></color></shirt>

Primer ispravnog koda Primer neispravnog koda

Preporučuje se da se za prikaz hijerarhije dokumenta koriste uvučeni redovi.

Page 8: Extensible Markup Language XML

8XML

Aplikativni softver

Zadavanje imena Prvi karakter u imenu mora biti A-Z, a-z ili _(underscore). Nakon njega mogu da slede slova, brojevi, crtice, tačke, dvotačke i underscore karakteri.

Pri zadavanju imena pravi se razlika između malih i velikih slova (case-sensitive).

Imena ne mogu sadržati razmake (spaces).

Imena ne mogu kao prefiks imati xml, jer je to rezervisana reč.

Preporučuje se da koriste duža, opisna imena, kao i uniforman način njihovog zadavanja.

Ispravno Neispravno

ime1, _broj, a:pr 1ime, -broj, &pr

<color>

red

</color>

<color>

red

</COLOR>

Ispravno Neispravno

<fname>

Milan

</fname>

<f name>

Milan

</f name>

<nameXML>

Mira

</nameXML>

<xmlName>

Mira

</xmlName>

Page 9: Extensible Markup Language XML

9XML

Aplikativni softver

Atributi

Atributi pružaju dodatne informacije o elementu. Oni se zadaju na sledeći način:

ime_atributa=vrednost

Atributi se definišu u okviru početnog taga elementa na koji se odnose. Jedan element može da ima više atributa koji moraju imati različita imena.

Vrednosti atributa se mogu navoditi između navodnika “…” ili apostrofa ‘…‘.

Primer: <osoba pol="muški"> ili <osoba pol='muški'> 

Ako vrednost atributa sadrži navodnike, može se navesti u okviru apostrofa.

Primer: <osoba ime='Petar “Pekar“ Petrovic'>

Atributi ne mogu imati višestruke vrednosti.

Page 10: Extensible Markup Language XML

10XML

Aplikativni softver

XML deklaracijaXML deklaracija predstavlja opcionu prvu liniju u svim XML dokumentima.

Primeri:

<?xml version=“1.0”?><?xml version=“1.0” encoding=“UTF-8”?><?xml version=“1.0” standalone=“yes”?>

U navedenoj deklaraciji:

version atribut definiše verziju XML-a i obavezan je

encoding atribut ukazuje na set karaktera koji je dozvoljen u dokumentu i može se izostaviti ako se koriste UTF-8 i UTF-16

standalone atribut pokazuje da li XML dokument zavisi od eksterno deklarisanih informacija (u drugim fajlovima kao DTD ili XSL); vrednost ovog atributa može biti “yes” ili “no”

Pisanje komentara pre linije za deklaraciju u XML dokumentu nije dozvoljeno.

Page 11: Extensible Markup Language XML

11XML

Aplikativni softver

Sadržaj elemenata (1)

XML dokument se sastoji od elemenata koji su predstavljeni parovima tagova (osim praznog elementa) u okviru kojih su navedeni podaci i (opciono) atributi čije su vrednosti date između znaka navoda.

Za element koji sadrži podatke i druge elemente kaže se da ima mešoviti sadržaj. Primer ovakvog elementa je:

<title>Example</title>

<chapter>

Chapter information

<para>What is XML</para>

<para>What is HTML</para>

More chapter information

</chapter>

Page 12: Extensible Markup Language XML

12XML

Aplikativni softver

Sadržaj elemenata (2)

Sadržaj elemenata se može obrađivati na jedan od sledeća dva načina:

PCDATA (Parsed Character Data) – sadržaj se parsira XML parserom

CDATA (Character Data) – sadržaj se ne parsira

XLM parser omogućava obradu XML dokumenta, tj. kreiranje čvorova stabla, pristup njihovim atributima, brisanje, dodavanje čvorova i konvertovanje čvorova stabla nazad u XML dokument.

Kompletan tekst XML dokumenta se parsira, izuzev dela koji se nalazi u okviru CDATA sekcije.

Page 13: Extensible Markup Language XML

13XML

Aplikativni softver

Sadržaj elemenata (3)Sintaksa za definisanje sekcije CDATA (Character Data) je:

<![CDATA[ ...Bilo šta... ]]>

Napomena: u Bilo sta se ne može staviti "]]>", već se to ubacuje sa"]]&gt;".

S obzirom da se ne parsira, sekcija CDATA omogućava uključivanje koda pisanog na drugim jezicima u XML, kao što su:

HTML dokument XML dokument JavaScript dokument drugi tekstovi sa dosta specijanih karaktera

Page 14: Extensible Markup Language XML

14XML

Aplikativni softver

Sadržaj elemenata (4)

<nameXML> <![CDATA[ <name common=“freedy” breed=“spaniel”> Sir Frederick of Ledyard’s End </name> ]]></nameXML>

Primer

Objašnjenje: nameXML element sadrži XML koji će biti tretiran kao tekst.

<script><![CDATA[funcion matchwo(a,b) { if(a < b && a < 0) then { return 1 } else { return 0 }}]]></script>

Primer

Objašnjenje: ovaj script element sadrži JavaScript.

Page 15: Extensible Markup Language XML

15XML

Aplikativni softver

Prostor imena – namespace (1)S obzirom da u XML-u imena tagova nisu predefinisana, već ih korisnik sam definiše, javlja se problem mogućeg konflikta u izboru imena. Naime, korisnik ne može da zna koja su imena već iskorišćena, kao bi izabrao neko novo ime.

<stavkaKataloga> <knjiga> <ime>Pocetak</ime> <isbn>0001</isbn> <autor> <ime>Mirko</ime> <prezime>Milic</prezime> </autor> </knjiga></stavkaKataloga>

PrimerAplikacija ne može da zna da:

prvo pojavljivanje taga <ime> označava ime knjige

drugo pojavljivanje taga <ime> označava ime autora

Stoga je bilo neophodno pronaći način da se izbegnu ovakve dvosmislenosti.

Page 16: Extensible Markup Language XML

16XML

Aplikativni softver

Prostor imena (2)Problem konfliktnih imena je rešen uvođenjem prefiksa prilikom zadavanja imena. S obzirom da prefiks mora biti jedinstven, bilo je pogodno izabrati URI za prefiks.

U usvojenom konceptu, svaki element ili atribut mogu se imenovati na sledeći način:

URI+ime

Primer: <http://www.biblioteka.com/knjige:ime>

Postoje dva problema sa navedenim formatom:

• format ne odgovara dobro formatiranom XML dokumentu• potrebno je pisati dosta teksta

Oba problema su rešena uvođenjem sinonima za URI.

Primer: knjige=“http://www.biblioteka.com/knjige” <knjige:ime>

Ovaj koncept predstavlja osnovu za XML Namespace specifikaciju.

Page 17: Extensible Markup Language XML

17XML

Aplikativni softver

Prostor imena (3)XLM Namespace specifikacija podrazumeva definisanje prostora imena (namespace) i identfikovanje elemenata kao članova tog prostora. Elementi i atributi imaju dvodelna imena koja su jedinstvena i nedvosmislena.

Sintaksa za deklarisanje prostora imena je:

<prefix:elementName xmlns:prefix=‘URI’/>

<knjiga tvrdeKorice=‘true’> <ime>Tom Sojer</ime> </knjiga>

<knjige:knjiga xmlns:knjige=‘http://www.biblioteka.com/knjige’ knjige:tvrdeKorice=‘true’> < knjige:ime> Tom Sojer </knjige:ime> </knjige:knjiga>

Primer (bez prostora imena) Primer (sa prostorom imena)

Page 18: Extensible Markup Language XML

18XML

Aplikativni softver

Obrada XML podatakaProgrameri koji hoće da obrađuju XML dokumente iz svojih programa, obično upotrebljavaju API-je koji omogućavaju pristup objektnom modelu koji predstavlja XML dokument.

Postoji više načina na koje programeri mogu obraditi strukturiran XML dokument:

kao običan tekst kao tok događaja kao stablo kao serijalizaciju neke druge strukture

Za sve ove načine obrade postoji široki spektar alata koji se koriste za podršku njihovih mogućnosti.

Page 19: Extensible Markup Language XML

19XML

Aplikativni softver

Obrada XML-a kao teksta

S obzirom da su XML dokumenti u osnovi tekst, alati za uređivanje teksta (kao što su vi, NotePad, WordPad i dr.) su vrlo pogodni za pregled, izradu i modifikovanje XML dokumenata.

U jednostavninijim XML dokumentima parsiranje tagova, atributa i tekstualnih podataka moguće je pomoću standardnih programerskih alata kao što su regularni izrazi i leksički analizatori.

U slučaju složenijih dokumenata koriste se visokokvalitetni XML analizatori koji su besplatni i dostupni za većinu programskih jezika.

Page 20: Extensible Markup Language XML

20XML

Aplikativni softver

Obrada XML-a vođena događajima (1)

Tokom čitanja dokumenta, XML analizator se kreće od njegovog početka do kraja i tako postepeno upoznaje dokument. Prilikom ovog parsiranja dešavaju se razni događaji, kao što su čitanje početnog taga, čitanje sadržaja elementa i čitanje završnog taga. Analizatori koji ove događaje prijavljuju (putem API-ja) klijentskim aplikacijama čim se oni dogode nazivaju se analizatorima vođenim događajima.

Primer: <ime><licno>Kosta</licno><prezime>Jovic</prezime></ime>

Analizator vođen događajima prijavio bi ove događaje:startElement:ime startElement:prezimestartElement:licno content:Joviccontent:Kosta endElement:prezimeendElement:licno endElement:ime

Obrada događaja podrazumeva generisanje koda u okviru aplikacije koji razume tekući kontekst i ume da odgovarajućem korisniku usmeri podatke o tom događaju.

Page 21: Extensible Markup Language XML

21XML

Aplikativni softver

Obrada XML-a vođena događajima (2)

Prednost aplikacija vođenih događajima:

Brzina i efikasnost. Pošto klijentska aplikacija u realnom vremenu dobija dokument o događajima, ona može početi obradu podataka sa početka dokumenta, ne čekajući da ceo dokument bude pročitan. Na primer, brokerski program koji primi dugačku listu zahteva za kupovanje nekih deonica, može da obavi prvu transakciju, pre nego što analizator pročita drugu transakciju.

Efikasno upravljanje memorijom. XML dokumenti su često vrlo veliki, ponekad se mere gigabajtima. Dokument se može obrađivati u malim delovima kojima je lako rukovati, uz oslobađanje memorije nakon obrade svakog dela.

Mogućnost filtriranja sadržaja. Filtri obrađuju i modifikuju događaje pre nego što ih proslede na dalju obradu.

Page 22: Extensible Markup Language XML

22XML

Aplikativni softver

Obrada XML-a pomoću stabalaXML dokumenti se lako mogu opisati korišćenjem strukture stabla.

Kao rezultat parsiranja, generišu se API-ji zasnovani na stablu koji aplikaciji daju uvid u model celog XML dokumenta. Tako aplikacija može samo proći stablom i pronaći željene delove dokumenta.

Prednosti rada sa modelom stabla su:

stalna dostupnost celog dokumenta lako modifikovanje i premeštanje delova dokumenta s jednog mesta na drugo uvek je dostupan ceo kontekst svakog dela dokumenta

Nedostaci rada sa modelom stabla:

zauzimaju veliku količinu memorije (3-10 puta veću od originalnog dokumenta) pretraživanje stabla može zahtevati dodatnu obradu

Page 23: Extensible Markup Language XML

23XML

Aplikativni softver

Pull model obrade XML-a (1)Pull model obrade XML-a se zasniva na klijentskim zahtevima.

Slično modelu vođenom događajima, i u pull modelu, tokom parsiranja, sadržaj dokumenta postepeno postaje dostupniji. Pristup pull se oslanja na klijentsku aplikaciju koja od analizatora svojim tempom zahteva neki sadržaj.

Primer: pull klijent sadrži sledeći kod za parsiranje XML dokumenta

reader.ReadStartElement(“ime”)reader.ReadStartElement(“licno”)licnoIme = reader.ReadString()reader.ReadEndElement() reader.ReadStartElement(“prezime”)prezime = reader.ReadString()reader.ReadEndElement() reader.ReadStartElement()

Page 24: Extensible Markup Language XML

24XML

Aplikativni softver

Validnost XML dokumenta

Dobro formatiran (well formed) XML dokument je onaj dokument koji ima korektno definisanu sintaksu.

Validan (valid) XML dokument ima pridružen rečnik (vacabulary) i poštuje strukturna pravila definisana u tom rečniku. Rečnik se obično definiše primenom DTD ili XML Schema.

XML parseri mogu da rade validaciju dokumenta, ali i ne moraju. To zavisi od toga da li primenjuju pridruženu gramatiku. Primer alata koji radi validaciju je Studio.

Svi XML dokumenti treba da budu jednostavni i kompatibilni. Greške u XML dokumentu prekidaju izvršavanje programa.

Page 25: Extensible Markup Language XML

25XML

Aplikativni softver

XML i čitači

XML podržava većina čitača (browser-a), ali nemaju svi čitači celokupnu podršku za XML.

XML dokumenti se mogu prikazati u sledećim browser-ima: Mozzila, Firefox, Opera, Internet Explorer i Netscape 6+.

XML dokument se prikazuje u bojama. Oznake plus (+) i minus (-) sa leve strane elementa omogućavaju proširivanje ili skupljanje strukture elementa. Za prikazivanje XML koda bez ovih oznaka treba selektovati opcije “View Page Source” ili “View Source” u okviru browser menija.

Page 26: Extensible Markup Language XML

26XML

Aplikativni softver

Poređenje HTML – XML

<html><title>Course Roster</title><body><center> <h1>Course Roster</h1> <h2>XML Programming</h2> <h3>Department: EECS</h3> <p> <table border=“2”> <tr> <th>Teacher</th> <td>Paul Thompson</td> </tr><tr> <th>Student<br>List</th> <td>Paul Jones<br> Uma Abingdon<br> Lindsay Garmon </td> </tr> </table></center></body></html>

<?xml version=“1.0”?><course> <name>Java Programming</name> <department>EECS</department> <teacher> <name>Paul Thompson</name> </teacher> <student> <name>Ron Jones</name> </student> <student> <name>Uma Abingdon</name> </student> <student> <name>Lindsay Garmon</name> </student></course>

HTML XML

Nam

enje

n pr

ezen

tova

nju

i lis

tanj

uN

amenjen razm

eni strukturiranih podataka

Page 27: Extensible Markup Language XML

27XML

Aplikativni softver

Razlike HTML – XMLHTML XML

Predefinisani tagovi definišu kako će podaci biti prezentovani.

Definišu se vlastiti tagovi za identifikaciju podataka.

Dozvoljeno nepostojanje završnih tagova (pr. <br> i <p>)

Zahteva se da svi početni tagovi budu upareni završnim.

Atributi ne zahtevaju navodnike. Atributi zahtevaju navodnike.

Postoje atributi bez vrednosti

(pr. <input type=radio checked>).

Svi atributi moraju da imaju vrednost.

Tolerišu se neugnježdeni tagovi. (<h1><center>cao</h1></center>)

Stroga pravila ugnježdavanja.

Browser-i nalaze rešenja za greške u kodu.

XML parseri generišu greške u slučaju lošeg koda.

Ne podržava prazne elemente. Podržava prazne elemente.

Nije case-sensitive.

(pr. <TABLE>...</table>)

Jeste case-sensitive.

Page 28: Extensible Markup Language XML

28XML

Aplikativni softver

Document Type Definition (DTD)Razmotrimo sledeće probleme:

Korisnik želi da uvede izvesna ograničenja vezana za predstavljanje podataka. Na primer, ona se mogu odnositi na ograničenje broja elemenata (dece) koji se mogu definisati u okviru nekog elementa (roditelj), ili na redosled definisanih elemenata i dr.

Korisnik želi da definiše i objavi strukturu na koju se XML dokument odnosi.

Korisnik želi da pomoću računara proveri da li XML dokument poštuje postavljana ograničenja.

Korisnik želi da ime delove teksta koje može više puta da koristi u okviru različitih XML dokumenata.

Navedeni problemi se ne mogu rešiti samo XML-om. Njihovo rešavanje omogućava DTD.

Page 29: Extensible Markup Language XML

29XML

Aplikativni softver

Šta je DTD?

Document Type Definition – DTD je nacrt strukture XML dokumenta koji sadrži niz deklaracija.

DTD definiše:

Elemente koji se mogu ili moraju pojaviti u okviru dokumenta Koliko se često mogu pojavljivati pojedini elementi u dokumentu Način ugnježdavanja elemenata Skup dozvoljenih, zahtevanih i podrazumevanih (default) atributa

Korišćenje DTD-a nije obavezno, ali se njegovom primenom može utvrditi validnost XML dokumenta, tj. da li XML dokument ispunjava pravila definisana DTD-om.

Page 30: Extensible Markup Language XML

30XML

Aplikativni softver

Mogućnosti DTD-a

Najznačajnije mogućnosti koje pruža DTD su sledeće:

Deklarisanje tipa elementa

Moguće je formalno opisati tip elementa, kao i tipove podataka koje on može da sadrži.

Deklarisanje tipa atributa

Moguće je formalno opisati tip atributa, kao i tipove podataka koje on može da sadrži.

Generisanje lista atributa

Svi elementi moraju imati svoje atribute nabrojane u listi atributa. Liste omogućavaju grupisanje svih srodnih atributa elementa.

Page 31: Extensible Markup Language XML

31XML

Aplikativni softver

Deklarisanje elemenataSintaksa za deklarisanje elementa u DTD-u je:

<!ELEMENT ime (model-sadrzaja)>gde su:

ime – tip elementamodel-sadrzaja– tip podataka koje element može da sadrži

Primer: DTD deklaracija elementa

<!ELEMENT greeting (#PCDATA)>

Odgovarajući validni XML kod

<greeting>Hello World!</greeting>

<greeting><![CDATA[G’day!]]>

</greeting>

Page 32: Extensible Markup Language XML

32XML

Aplikativni softver

Model sadržaja (1)Sadržaj elementa je opisan u okviru specifikacije modela sadržaja.

U DTD-u postoji više tipova modela sadržaja:

EMPTY ANY Elements Mixed Text (#PCDATA)

EMPTY model sadržaja

Element ne sme da sadrži nikakve podatke. Može da ima samo atribute.

DTD deklaracija: <!ELEMENT placeholder EMPTY>

Ispravan XML kod: <placeholder></placeholder> ili <placeholder/>

Page 33: Extensible Markup Language XML

33XML

Aplikativni softver

Model sadržaja (2)ANY model sadržaja

Element može da sadrži bilo koje korektno definisane XML podatke. Elementi koji se koriste moraju biti deklarisani u DTD-u.

DTD deklaracija:

<!ELEMENT universe ANY> <!ELEMENT galaxy (#PCDATA)>

Ispravan XML kod:

<universe/> ili <universe></universe>

<universe>the whole universe</universe>

<universe>

<galaxy>galaxy1</galaxy>

</universe>

Page 34: Extensible Markup Language XML

34XML

Aplikativni softver

Model sadržaja (3)Elements model sadržaja

Ovaj model sadržaja predstavlja niz elemenata deklarisanih na sledeći način:

<!ELEMENT ime (struktura_clanova)>

Dakle, svaki element je definisan svojim imenom (ime) i strukturom elemenata koji mogu biti njegovi članovi (struktura_clanova).

Članstvo u strukturi elementa se može definisati na različite načine:

Članstvo Sintaksa

Sekvenca <!ELEMENT ime (a,b)>

Izbor <!ELEMENT ime (a|b)>

Jedan <!ELEMENT ime (a)>

Jedan ili više <!ELEMENT ime (a) +>

Nula ili više <!ELEMENT ime (a) *>

Nula ili jedan <!ELEMENT ime (a) ?>

Napomena: a i b mogu imati složeniju strukturu, kao na primer a = (c,d)

Page 35: Extensible Markup Language XML

35XML

Aplikativni softver

Model sadržaja (4)Primer 1

DTD deklaracija:

<!ELEMENT person ((fname,lname)|((lname,fname))> <!ELEMENT fname (#PCDATA)>

<!ELEMENT lname (#PCDATA)>

Ispravan XML kod:

<person> <lname>Smith</lname> <fname>John</fname>

</person> ili

<person> <fname>John</fname> <lname>Smith</lname>

</person>

Page 36: Extensible Markup Language XML

36XML

Aplikativni softver

Model sadržaja (5)

Primer 2

DTD deklaracija:

<!ELEMENT order (order-item+,delivery-address,order-date?)><!-- Deca elementi su definisani tako da sadrže #PCDATA -->

Ispravan XML kod: <order> <order-item>item1</order-item> <delivery-address>123 State Street</delivery-address></order> ili <order> <order-item>item3</order-item> <order-item>item4</order-item> <delivery-address>123 State Street</delivery-address></order> ili <order> <order-item>item5</order-item> <order-item>item6</order-item> <delivery-address>123 State Street</delivery-address> <order-date>July 5, 2001</order-date></order>

Page 37: Extensible Markup Language XML

37XML

Aplikativni softver

Model sadržaja (6)

Primer 3

DTD deklaracija:

<!ELEMENT phonebook (page)+> <!ELEMENT page (heading, (entry|advert)+)> <!ELEMENT heading (#PCDATA)> <!ELEMENT entry (#PCDATA)> <!ELEMENT advert (#PCDATA)>

Ispravan XML kod:

<phonebook> <page> <heading>The whole town</heading> <entry>John Smith, 555-1212</entry> <advert>Fred's Fish n' Chips - 123-4567</advert> </page> </phonebook>

Neispravan XML kod:

<phonebook><page><entry/><entry/></page></phonebook>ili<phonebook><page/></phonebook>

Page 38: Extensible Markup Language XML

38XML

Aplikativni softver

Model sadržaja (7)Mixed model sadržaja

Mešoviti (mixed) model sadržaja opisuje elemente koji sadrže tekstualne podatke i, po potrebi, druge elemente.

Mogući primeri DTD deklaracije elemenata su:

<!ELEMENT product (#PCDATA)> (karakteri)

<!ELEMENT review (#PCDATA | product) *> (karakteri + dete element)

Ispravan XML kod:

<review>review text goes here</review>

<review> This is a review of some <product>car</product> that goes on for pages of regular text.</review>

Page 39: Extensible Markup Language XML

39XML

Aplikativni softver

Deklarisanje liste atributaListe atributa se koriste za deklarisanje atributa nekog elementa.

Sintaksa za deklarisanje liste atributa u DTD-u ima dve opcije:

Opcija 1:

<!ATTLIST imeElementa imeAtributa tipAtributa podrazumevanaDek>

Opcija 2:

<!ATTLIST imeElementa imeAtributa tipAtributa podrazumevanaDek ... imeAtributa tipAtributa podrazumevanaDek>

gde je podrazumevanaDek podrazumevana, tj. default deklaracija atributa.

Page 40: Extensible Markup Language XML

40XML

Aplikativni softver

Tipovi atributa

Page 41: Extensible Markup Language XML

41XML

Aplikativni softver

Podrazumevana deklaracija atributa

Podrazumevana deklaracija Opis#REQIRED Atribut mora postojati.

#IMPLIED Atribut nije obavezan i nema podrazumevane vrednosti.

attribute-value Ako vrednost atributa ne postoji, ovaj parametar predstavlja podrazumevanu vrednost.

#FIXED attribute-value Ako atribut postoji, njegova vrednost mora da odgovara parametru attribute-value.

Page 42: Extensible Markup Language XML

42XML

Aplikativni softver

Primeri deklarisanja atributa (1)

DTD deklaracija:

<!ELEMENT shirt (#PCDATA)><!ATTLIST shirt type CDATA #REQUIRED><!ATTLIST shirt collar CDATA #IMPLIED> <!ATTLIST shirt size (small|medium|large) "large"> <!ATTLIST shirt manufacturer CDATA #FIXED "Levi">

Ispravan XML kod:

<shirt type="short">cotton</shirt> <shirt type="short" size="large">wool</shirt> <shirt type="short" manufacturer="Levi">denim</shirt><shirt type="short sleeve" collar="button-down"></shirt>

Neispravan XML kod:

<shirt></shirt><shirt type="short" size="medium large">cardigan</shirt><shirt type="short" manufacturer="Gap">designer</shirt>

Primer (Opcija 1)

Page 43: Extensible Markup Language XML

43XML

Aplikativni softver

Primeri deklarisanja atributa (2)Primer (Opcija 2)

DTD deklaracija:

<!ELEMENT book (#PCDATA)><!ATTLIST book id ID #IMPLIED isbn CDATA #REQIURED booktype (Harcover|Paperback) “Paperback” storeloc CDATA “5th Avenue” year CDATA #FIXED “2000” comment CDATA #IMPLIED>

Ispravan XML kod:

<book isbn=“1-35267-742-4“ storeloc=“Times Square"> XML Pocket Reference</book>

Page 44: Extensible Markup Language XML

44XML

Aplikativni softver

DTD i XML (1)

DTD može biti pridružen nekom XML dokumentu na više načina:

kao poseban fajl u odnosu na XML dokument

kao deo XML dokumenta

kombinacijom prethodna dva slučaja, tj. deo DTD-a je u posebnom dokumentu, a deo u XML dokumentu

Page 45: Extensible Markup Language XML

45XML

Aplikativni softver

DTD i XML (2)Spoljašnji DTD

(XML i DTD su zasebni dokumenti, prosleđuje se URI na kome je DTD fajl)

Dokument: hello.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE message SYSTEM "message.dtd"><message> <greeting>Hello, World!</greeting> <farewell>Goodbye, World!</farewell>

</message>

Dokument: message.dtd <!ELEMENT message (greeting,farewell)><!ELEMENT greeting (#PCDATA)><!ELEMENT farewell (#PCDATA)>

Primer

Page 46: Extensible Markup Language XML

46XML

Aplikativni softver

DTD i XML (3)Ugrađeni DTD

(XML i DTD su u istom dokumentu)

Dokument: hello.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE message [<!ELEMENT message (greeting,farewell)><!ELEMENT greeting (#PCDATA)><!ELEMENT farewell (#PCDATA)>]><message> <greeting>Hello, World!</greeting> <farewell>Goodbye, World!</farewell></message>

Primer

Page 47: Extensible Markup Language XML

47XML

Aplikativni softver

DTD i XML (3)Kombinacija spoljašnji-ugrađeni DTD

(DTD je delom ugrađen u XML dokument, a delom je u posebnom fajlu)

Dokument: hello.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE message SYSTEM "message.dtd“ [ <!ELEMENT farewell (#PCDATA)> <!– overrides farewell in message.dtd -->]><message> <greeting>Hello, World!</greeting> <farewell>Goodbye, World!</farewell></message>

Dokument: message.dtd <!ELEMENT message (greeting,farewell)><!ELEMENT greeting (#PCDATA)><!ELEMENT farewell EMPTY>

Primer

Page 48: Extensible Markup Language XML

48XML

Aplikativni softver

Nedostaci DTD-a

Glavni nedostaci DTD-a su:

odsustvo tipizacije podataka (#PCDATA može biti bilo koji string)

sintaksa DTD nije usklađena sa sintaksom XML-a

postoje ograničenja koja se ne mogu lako izraziti DTD-om (na pr. element x se može pojaviti od 4 do 17 puta)

Mnoga ograničenja DTD-a uspešno prevazilazi XML Schema (XML šema).