1 / 30

6. XML – 2.dio

6. XML – 2.dio. DTD i XML shema. DTD i XML shema. Ispravnost nekog XML dokumenta se provjerava u odnosu na određenu: Document Type Definition (DTD) ili XML schemu. Shema određuje koje elemente smije sadržavati XML dokument te redoslijed i broj tih elemenata.

nida
Download Presentation

6. XML – 2.dio

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6. XML – 2.dio DTD i XML shema

  2. DTD i XML shema • Ispravnost nekog XML dokumenta se provjerava u odnosu na određenu: • Document Type Definition (DTD) ili • XML schemu. • Shema određuje koje elemente smije sadržavati XML dokument te redoslijed i broj tih elemenata. • Datoteka sheme koja se koristi navodi se u zaglavlju XML dokumenta. Primjer ako se koristi DTD: • <!DOCTYPE poruka SYSTEM "PorukaPodsjetnik.dtd"> Primjer ako se koristi XML shema: • <poruka xmlns="http://hr.wikipedia.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="poruka.xsd">

  3. Upotreba DTD pravila Namjera DTD pravila je: • opisati svaki element koji se koristi u razmatranom XML dokumentu, • opisati i međusobne odnose tih elemenata. Budući da neki element može imati atribute, potrebno je posebnim pravilima opisati i njihov sadržaj i odnose. • Svaki element opisuje se <!ELEMENT .... > deklaracijom. Sintaksa te deklaracije je: <!ELEMENT ime_elementa pravilo> • Ako se želi naglasiti da element može sadržavati i nove tagove i podatke, tada se naredba piše ovako: <!ELEMENT ime_elementa ANY> .

  4. Upotreba DTD tagova - nastavak • Ako se želi istaknuti da element ima samo podatke, a ne i nove tag-ove, koristi se kratica PCDATA (engl. Parsed Character Data): <!ELEMENT ime_elementa (#PCDATA)> • Za element koji nema informacijskog sadržaja unutar svojih tag-ova koristi se oznaka EMPTY u opisu elementa: • <!ELEMENT ime_elementa EMPTY> • Ako želimo koristiti ugnježdene elemente, prvo se definiraju elementi više razine, grupirajući imena ugnježdenih elemenata unutar zagrada i odijeljujući ih znakom: • zareza ',' po obvezujućem poretku pojavljivanja ili • znakom '|' ako se tek pretpostavlja pojavljivanje barem nekog od njih. Ime jednog elementa ili grupe elemenata može se proširiti posebnim znakom, operatorom pojavljivanja, za koje vrijedi: ? – bez pojavljivanja ili pojavljivanje jedanput + - pojavljivanje barem jedanput ili više puta * - pojavljivanje može biti niti jednom ili jedanput ili više puta

  5. Uključivanje DTD pravila • DTD pravila mogu se uključiti u XML dokument ili izvan njega u posebnu datoteku. • Ako se DTD pravila uključuju u XML dokument, tada se u prvoj naredbi XML dokumenta navodi: <?xml version="1.0" standalone="yes"> • Ako se DTD pravila nalaze u posebnoj datoteci odvojenoj od XML dokumenta, tada se u prvoj naredbi XML dokumenta navodi: <?xml version="1.0" standalone=“no"> U tom slučaju se u nastavku XML dokumenta navodi naredba <!DOCTYPE .... > u kojoj se navodi naziv datoteke sa DTD pravilima. Sintaksa za tu naredbu je sljedeća: <!DOCTYPE ime_root_elementa SYSTEM "URL">, npr. <!DOCTYPE poruka SYSTEM "PorukaPodsjetnik.dtd">

  6. Primjer 1 upotrebe DTD-a • U primjeru je DTD naveden unutar XML dokumenta: <?xml version="1.0" standalone="yes"> <!-- DTD definicije --> <!DOCTYPE knjiga [ <!ELEMENT knjiga (naslov, izdavač) > <!ELEMENT naslov (#PCDATA)> <!ELEMENT izdavač (#PCDATA)> ]> • U nastavku XML dokumenta se koriste tagovi koji su prethodno definirani: <!-- XML dokument --> <knjiga> <naslov> Uvod u XML </naslov> <izdavač> FSB Zagreb </izdavač> </knjiga> Definiran je korjenski (root) element “knjiga”, koji ima podelemente “naslov”, “izdavač”, a oni mogu sadržavati podatke

  7. Primjer 2 upotrebe DTD-a • U donjem primjeru, u DTD-u je definirano da element “knjiga” može imati podelement “naslov” ili “izdavač”, ali ne i oba elementa (isključivi elementi se odvajaju crtom “|”: <!DOCTYPE knjiga [ <!ELEMENT knjiga (naslov | izdavač) > <!ELEMENT naslov (#PCDATA)> <!ELEMENT izdavač (#PCDATA)> ]>

  8. Primjer 3 upotrebe DTD-a • U ovom primjeru definirano je da korjenski element “knjiga” može imati ili niz podelemenata: naslov, autor izdavač (i to 0,1 ili više puta), ili podelement “pregled” (1 ili više puta). <!DOCTYPE knjiga [ <!ELEMENT knjiga ((naslov, autor, izdavač)* | pregled+ ) <!ELEMENT naslov (#PCDATA)> <!ELEMENT autor (ime_autora+)> <!ELEMENT ime_autora (#PCDATA)> <!ELEMENT naslov (#PCDATA)> <!ELEMENT izdavač (tvrtka | logo)?> <!ELEMENT tvrtka (#PCDATA)> <!ELEMENT logo EMPTY> <!ELEMENT pregled (#PCDATA)> ]> “ime_autora” se može pojaviti 1 ili više puta “izdavač” može se pojaviti, a i ne mora, a ako se pojavi, mora imati element tvrtka ili logo

  9. Definiranje atributa u DTD-u • U DTD-u se atributi definiraju u naredbi <!ATTLIST...> čiji je opći oblik: <!ATTLIST odredišni_element ime_atributa atributni_tip pretpostavljena_vrijednost> • Odredišni element = element na koji se atributi odnose • Atributni tip = tip atributa koji može biti: • obični znakovni tip podataka (CDATA), • niz vrijednosti od kojih se jedno izabire (engl. enumerated types), • ostali tipovi: ENTITY, ID, NMTOKEN, NOTATION sa svojim varijantama koje zahtijevaju poseban opis • Pretpostavljena vrijednost (default) može biti • #REQUIRED – obavezno ju je navesti uz atribut • #IMPLIED – u XML dokumentu se može izostaviti, ali u DTD-u ne • #FIXED – fiksna i ne može se mijenjati od strane korisnika

  10. Primjeri deklaracije atributa • U elementu “cijena” postoji atribut “tečaj” koji je obavezno navesti, a pretpostavljena vrijednost mu je “kn” (ako se ne navede drugačije): <!ATTLIST cijena tečaj CDATA #REQUIRED "kn"> • U elementu “datum” postoji atribut “godina” koji se ne mora obavezno navesti, a ako se ne navede, kao vrijednost će se uzeti fiksna vrijednost “2002”: <!ATTLIST datum godina CDATA #FIXED "2002"> • U elementu “osoba” pojavit će se atribut “spol” koji može imati vrijednost “muško” ili “žensko”, a pretpostavljena vrijednost će biti “žensko”: <!ATTLIST osoba spol (muško | žensko) "žensko"> • U elementu “osoba” pojavit će se atribut “bračno_stanje” koji može imati jednu od više navedenih vrijednosti, a u XML dokumentu se ne mora navesti vrijednost <!ATTLIST osoba bračno_stanje (sam | sama | oženjen | udata | rastavljen | rastavljena | udovac | udovica) #IMPLIED>

  11. Atributni tipovi ID, IDREF • ID i IDREF su posebni tipovi atributa koji se koriste za označavanje identifikatora atributa • Primjer: ako u “odjel.dtd” datoteci definiramo: <!-- odjel.dtd datoteka --> <!ELEMENT odjel (zaposlenik*)> <!ELEMENT zaposlenik (#PCDATA)> <!ATTLIST zaposlenik zapid ID #REQUIRED> <!ATTLIST zaposlenik šef IDREF #IMPLIED> • Tada će u XML dokumentu element “odjel” imati podelement “zaposlenik” koji će imati obavezno svoj identifikator u atributu “zapid”, a atribut šef ne mora imati definiranu vrijednost u XML-u

  12. Atributni tipovi ID, IDREF - nastavak • U XML dokumentu će tagovi izgledati ovako: <?xml version="1.0" standalone=“no" ?> <!DOCTYPE odjel SYSTEM odjel.dtd> <odjel> <zaposlenik zapid="z007"> Marko Matić </zaposlenik> <zaposlenik zapid="z008"> Hrvoje Horvat </zaposlenik> <zaposlenik zapid="z009" šef="z007"> Darko Dragić </zaposlenik> <zaposlenik zapid="z010" šef="z008"> Štefica Štef </zaposlenik> </odjel> • Ovdje se koristi vanjska datoteka “odjel.dtd” za deklariranje pravila XML tagova. Za element “odjel” definirana su 4 elementa “zaposlenik” koji svi imaju atribut “zapid” sa definiranim vrijednostima. Za dvoje zaposlenika definiran je i atribut “šef” čija se vrijednost referencira na atribut “zapid”, tj. vrijednost atributa “šef” je jedna od onih koja postoji definirana u vrijednostima “zapid”. Drugim riječima, za neke djelatnike možemo definirati tko im je šef. Šef mora biti jedan od upisanih djelatnika.

  13. Ključne riječi NOTATION(S) • Ključne riječi NOTATION i NOTATIONS koriste se kada želimo aktivirati neku drugu datoteku, ovisno o vrijednosti atributa. • Dolaze u atributnoj listi neposredno povezane s DTD deklaracijom <!NOTATION> koja se nalazi u opisu XML dokumenta. • Primjer: u DTD opisu možemo navesti notaciju za nazive nekoliko programa koje želimo koristiti za gledanje slika: <!NOTATION jpg SYSTEM "ACDSee.exe"> <!NOTATION gif SYSTEM "imaging.exe"> <!NOTATION bmp SYSTEM "paint.exe"> <!NOTATION png SYSTEM "netscape.exe"> <!ATTLIST slika gledaj NOTATIONS (jpg | gif | png) #REQUIRED> Prethodno treba biti definiran element “slika” koji će imati atribut “gledaj” i obaveznu notaciju (jpg ili gif, ili png). Ovdje je notacija “bmp” namjerno izostavljena, jer se može definirati, ali se ne moraju sve definirane notacije i koristiti. Notacija upućuje na exe datoteku koja će se pokrenuti ovisno o vrijednosti atributa “gledaj”

  14. Upotreba ENTITY za referenciranje • ENTITY deklaracija može se koristiti za povezivanje niza znakova s prikladnim imenom koje se potom na bilo kojim mjestima unutar XML dokumenta može koristiti kao referenca, bez ponovnog ispisa (općenito) dužeg niza znakova – slično 'macro' naredbi u programskim jezicima. • Opći oblik deklaracije izgleda ovako: <!ENTITY ime "znakovi_koje_zamjenjujemo_imenom"> • U XML dokumentu se referenca koristi upisom imena na ovaj način: '&ime;'.

  15. Primjer 1 upotrebe ENTITY • U DTD deklaraciju se upisuje naredba ENTITY: <!-- ovo je DTD deklaracija --> <!ENTITY OM “Odjel za matematiku"> • Referencom “&OM;” u XML dokument se upisuje puni naziv kratice, tj. ‘Odjel za matematiku'. <!-- a ovo je XML dokument --> <ustanova> U okviru Sveučilišta u Osijeku je i &OM;. </ustanova>

  16. Primjer 2 upotrebe ENTITY • Ako u DTD deklaraciju u naredbi ENTITY upišem ključnu riječ SYSTEM i navedemo adresu dokumenta, npr. ovako: <!- ovo je DTD deklaracija --> <!ENTITY dodatak SYSTEM "http://zrno.fsb.hr/odsjeci.xml"> • Tada se u XML dokument može umetnuti dokument “drugi.xml” pozivom reference, npr. ovako: <!-- ovo je XML dokument --> <ustanova> Fakultet se sastoji od ovih odsjeka: &dodatak;. </ustanova>

  17. Ispravne i neispravne reference • Ispravna referenca: <!ENTITY A “Moje ime je &B;"> <!ENTITY B “Ivo Ivić"> • Neispravna referenca (jer je cirkularna: referenca A poziva B, a u B se poziva A: <!ENTITY A “Moje ime je &B;"> <!ENTITY B "&A Ivo Ivić">

  18. XML shema • XML shema je noviji način određivanja pravila strukturiranja XML dokumenta. • Format se stvara prema pravilima XML jezika. Način određivanja strukture sličan je načinu izgradnje baze podataka. • Korištenjem XML sheme moguće je na vrlo detaljnoj razini odrediti opis sadržaja odgovarajućeg elementa: o prebrojivost o tip podatka o format podatka (npr. može se odrediti format telefonskog broja koji se sastoji od pozivnog broja države, mjesta i samog telefonskog broja). • XML schemu je izvorno načinio Microsoft, ali je od 2001. godine to W3C preporuka.

  19. Sintaksa XML sheme • Na početku XML Schema dokumenta navodi se: • identifikator koji povezuje dokument s pravilima formiranja, kao i određeni XML prostor imena. • Nakon toga slijedi dio "annotation" u kojem se opisuje namjena dokumenta. • Korjenski <schema> element mora se navesti u svakom XML schema dokumentu. • Taj element, kao i svi drugi može imati odgovarajuće atribute.

  20. Tipovi podataka u XML shemi • U XML shemu ugrađeni su jednostavni tipovi podataka, koji se po potrebi mogu i proširivati • Ako se koriste jednostavni tipovi, provjere ispravnosti vrši sam XML • Jednostavni tipovi su: • numerički tipovi podataka ("byte", "float", "long") • tipovi podataka za opis datuma vremena i trajanja ("time", "date", "timeinstant", "timeduration") • logički tip podataka ("boolean" – može imati vrijednost "true" ili "false") • tip podataka za unos binarnih brojeva ("binary") • oznaka jezika koja se koristi ("language" – npr. "en-US") • oznaka web adrese ("uri-reference" – npr. "http://www.w3c.org/")

  21. Tipovi elemenata u XML shemi • U XML shemi mogu se koristiti i jednostavni i složeni tipovi elemenata. Jednostavni tipovi elemenata: • sadrže samo tekst i ne smiju unutar sebe sadržavati druge elemente i atribute (osim name i type atributa koji određuju naziv i tip određenog elementa), npr: <xs:element name="prezime"type="xs:string"/> <xs:element name="ime"type="xs:string"/> • mogu imati pretpostavljenu (default) ili fiksno zadanu (fixed) vrijednost atributa. • Ako u XML dokumentu nije zadana neka druga vrijednost atributa primjenjuje se inicijalna vrijednost. • Fiksno zadana vrijednost ima kontrolni karakter i vrijednost u XML dokumentu ne smije biti različita od nje.

  22. Složeni tipovi elemenata u XML shemi Složeni tipovi elemenata su korisnički definirani elementom "complexType". Definira ih korisnik i njihovu kontrolu vrši sam. Postoje 4 različite vrste složenih elemenata: • prazni elementi ne smiju imati sadržaj već samo atribute. Prazni elementi imaju samo početnu oznaku, npr. <artikal sifra="1234"/> • elementi koji sadrže druge elemente sadrže samo druge elemente koji sadrže text. Osim drugih elemenata ne smiju sadržavati unutar sebe text. <osoba> <ime>Pero</ime> <prezime>Perić</prezime> </osoba> • elementi koji sadrže samo tekst s atributom, a ne smiju unutar sebe imati sadržane druge elemente. <racunalo type="rucno">Palm</racunalo> • elementi koji sadrže i tekst i druge elemente unutar sebe mogu imati sadržan i tekst i druge elemente. <opis> Osoba je rođena <datum lang="croatian">01.01.1989.</datum> </opis>

  23. Atributi elemenata • Najčešći atributi elemenata, koji detaljnije opisuju elemente, su: • Name – sadrži ime elementa ili atributa • Type – opisuje tip elementa Ostali atributi opisuju: • Prebrojivost (kardinalnost) – definirana atributima: • minOccurs = minimalni broj pojavljivanja • maxOccurs = maksimalni broj pojavljivanja nekog elementa (“*” za neograničen broj pojavljivanja) • Ograničenja elementa – definirana aributima: • Restriction – koristi se za ograničavanje mogućih vrijednosti

  24. Primjer 1 ograničavanja vrijednosti atributa • Ako želimo npr. postaviti da se za element “starost” može unijeti samo cijeli broj između 0 i 110, tada će XML shema biti sljedeća: <xs:element name="starost"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="110"/> </xs:restriction> </xs:simpleType> </xs:element>

  25. Primjer 2 ograničavanja vrijednosti atributa • Ako želimo npr. postaviti da se za element “automobil” može unijeti samo tekst sa jednom od vrijednosti “Golf” ili “Fiat”, tada će XML shema biti sljedeća: <xs:element name="automobil"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Golf"/> <xs:enumeration value="Fiat"/> </xs:restriction> </xs:simpleType> </xs:element>

  26. Primjer 3 ograničavanja vrijednosti atributa • Ako želimo npr. postaviti da se za element “JMBG” može unijeti samo tekst sa 13 znakova, tada će XML shema biti sljedeća: <xs:element name="jmbg"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="13"/> </xs:restriction> </xs:simpleType> </xs:element>

  27. Primjer upotrebe XML sheme – sadržaj XML dokumenta “studenti.xml” <?xml version="1.0" encoding=“Windows-1250"?> <Studenti xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="studenti.xsd"> <Osoba> <Ime>Pero</Ime> <Prezime>Perić</Prezime> </Osoba> <Studij>Računarstvo</Studij> <Adresa> <Ulica>U gradu</Ulica> <Broj>247</Broj> <Grad>Zagreb</Grad> </Adresa> <KontaktPodaci> <Telefon>01-111-777</Telefon> <Telefon>098-111-1778</Telefon> <Email>pperic@zg.tel.hr</Email> <KorisnickoIme>pperic</KorisnickoIme> </KontaktPodaci> </Studenti>

  28. Primjer upotrebe XML sheme – sadržaj datoteke “studenti.xsd” • Početak xsd datoteke bi bio sljedeći: <xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <xsd:element name='Studenti'> <xsd:complexType> <xsd:sequence> <xsd:element ref='Osoba'/> <xsd:element ref='Studij' minOccurs='0' maxOccurs='1'/> <xsd:element ref='Adresa' minOccurs='0' maxOccurs='1'/> <xsd:element ref='KontaktPodaci' minOccurs='0' maxOccurs='1'/> </xsd:sequence> </xsd:complexType> </xsd:element> Na sličan način su definirani i ostali elementi koji se koriste u XML dokumentu na prethodnoj stranici. Za uvid u cijeli primjer kliknite na “studenti.xml”, te na “studenti.xsd”

  29. Prednosti i nedostaci upotrebe XML sheme Prednosti: • XML shema dokument stvara se prema istim pravilima koja vrijede i za XML dokumente, pa je osigurana i kontrola ispravnosti naredbi • unutar XML Schema dokumenta moguće je provesti puno precizniju kontrolu sadržaja dokumenta i ispitati više različitih svojstava. Npr. ako se neki podatak opiše tipom “datum”, taj podatak u datumskom formatu trebao bi biti čitljiv u svim zemljama, jer bi taj tip programi trebali interpretirati na ispravan način, ovisno o lokalnim datumskim postavkama odgovarajuće zemlje. Nedostatak: • sintaksi koju je potrebno svladati kako bi se stvorili dokumenti je još uvijek vrlo složena.

  30. Literatura • Essert, M., Web programiranje, materijali s predavanja, http://www.mathos.hr/wp, 20.02.2008.) • Wikipedia, www.wikipedia.org, 28.02.08. • W3C Consortium, www.w3c.org, 28.02.08. • M. Zekić-Sušac, Računarski praktikum 3, materijali s predavanja, http://www.mathos.hr/rp3, 28.02.08. • http://archive.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html - NCSA html beginner’s guide

More Related