6. xml – 2.dio

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

Upload: nida

Post on 06-Jan-2016

51 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 6. XML – 2.dio

6. XML – 2.dio

DTD i XML shema

Page 2: 6. XML – 2.dio

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

Page 3: 6. XML – 2.dio

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

Page 4: 6. XML – 2.dio

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

Page 5: 6. XML – 2.dio

Uključivanje DTD pravila

DTD pravila mogu se uključiti u XML dokument ili izvan njega u posebnu datoteku.

1. Ako se DTD pravila uključuju u XML dokument, tada se u prvoj naredbi XML dokumenta navodi:

<?xml version="1.0" standalone="yes">2. 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">

Page 6: 6. XML – 2.dio

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

Page 7: 6. XML – 2.dio

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

Page 8: 6. XML – 2.dio

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

Page 9: 6. XML – 2.dio

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

Page 10: 6. XML – 2.dio

Primjeri deklaracije atributa

1. 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">

2. 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">

3. 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">

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

Page 11: 6. XML – 2.dio

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

Page 12: 6. XML – 2.dio

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.

Page 13: 6. XML – 2.dio

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”

Page 14: 6. XML – 2.dio

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;'.

Page 15: 6. XML – 2.dio

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>

Page 16: 6. XML – 2.dio

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>

Page 17: 6. XML – 2.dio

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ć">

Page 18: 6. XML – 2.dio

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 prebrojivosto tip podatkao 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.

Page 19: 6. XML – 2.dio

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.

Page 20: 6. XML – 2.dio

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

Page 21: 6. XML – 2.dio

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.

Page 22: 6. XML – 2.dio

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:

1. prazni elementi ne smiju imati sadržaj već samo atribute. Prazni elementi imaju samo početnu oznaku, npr.<artikal sifra="1234"/>

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

3. elementi koji sadrže samo tekst s atributom, a ne smiju unutar sebe imati sadržane druge elemente.<racunalo type="rucno">Palm</racunalo>

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

Page 23: 6. XML – 2.dio

Atributi elemenata

Najčešći atributi elemenata, koji detaljnije opisuju elemente, su:

Name – sadrži ime elementa ili atributa Type – opisuje tip elementaOstali 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

Page 24: 6. XML – 2.dio

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>

Page 25: 6. XML – 2.dio

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>

Page 26: 6. XML – 2.dio

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>

Page 27: 6. XML – 2.dio

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>[email protected]</Email><KorisnickoIme>pperic</KorisnickoIme>

</KontaktPodaci></Studenti>

Page 28: 6. XML – 2.dio

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”

Page 29: 6. XML – 2.dio

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.

Page 30: 6. XML – 2.dio

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

mer.html - NCSA html beginner’s guide