Extensible Markup Language XML

Preview:

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

Extensible Markup LanguageXML

2007/2008.

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

Aplikativni softver

Violeta Tomašević

Literatura

• Internet.

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.

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”

=

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

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.

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

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.

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>

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.

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.

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>

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.

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

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.

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.

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.

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)

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.

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.

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.

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.

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

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()

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.

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.

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

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.

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.

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.

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.

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>

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

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>

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)

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>

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>

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>

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>

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.

40XML

Aplikativni softver

Tipovi atributa

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.

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)

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>

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

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

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

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

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