71
Web programiranje i primjene XML – eXtensible Markup Language četvrto i peto predavanje 23. ožujka i 6. travnja 2010.

Wp predavanje xml

Embed Size (px)

DESCRIPTION

World Wide Web (Web) je svjetska mreža računala s izvorima (engl. resources) digitalne informacije. S obzirom na raznolikost digitalne informacije: tekst, slika, zvuk, video, program i dr. govorimo općenito o izvoru informacije ili WEB dokumentu. WEB programiranje se oslanja na tri mehanizma koja čine ove izvore dostupnima najširoj svjetskoj javnosti: 1. Jedinstvena shema imena za traženje (lociranje) izvora na mreži. 2. Protokoli za pristup informaciji preko WEB-a, kao što je npr. HTTP protokol. Protokoli su skup standardizirane informacije za prijenos digitalnog sadržaja preko mreže. 3. Hipertekst (engl. Hypertext) za jednostavnu navigaciju između informacijskih izvora, kao što je na primjer HTML (hypertext markup language). Svaki izvor informacije na WEB-u (HTML ili XML dokument, slika, video, program i sl.) ima jednoznačnu adresu koja se dekodira preko URI-a (Universal Resource Identifier). URI se sastoji od tri dijela: 1. Protokola pristupa izvoru (npr. http, ftp, mailto i sl.) 2. Imena stroja na kojem se izvor informacije nalazi (npr. www.fsb.hr). 3. Punog imena izvora zadanog stazom (engl. path). URI ima različite uloge: povezivanje mjesta unutar istog dokumenta, povezivanje različitih dokumenata, dohvaćenje slika, objekat

Citation preview

Page 1: Wp predavanje xml

Web programiranje i primjene

XML – eXtensible Markup Language

četvrto i peto predavanje23. ožujka i 6. travnja 2010.

Page 2: Wp predavanje xml

HTML vs. XML

HTML• osnovna namjena HTML-a je definiranje sadržaja dokumenta• ali on nudi i mogućnost formatiranja sadržaja dokumenta dodavanjem atributa

u početni tag elementa i pridruživanjem dozvoljene vrijednosti dodanom atributu (npr. <font color=“green”> ...</font>)

• baziran je na konačnom broju tag-ova definiranih/propisanih od strane W3C-a – dodavanje novog taga zahtijeva promjenu propisanog standarda

XML • osnovna namjena XML-a je pohrana, organizacija i prijenos podataka• usmjeren je na opis/definiciju podataka

HTML vs. XML“HTML is about displaying information, while XML is about carrying information.”

“XML is a software- and hardware-independent tool for carrying information.”

Page 3: Wp predavanje xml

XML – osnovna svojstva

XML• eXtensible Markup Language• usmjeren na opisivanje/definiranje podataka, ne na njihovu prezentaciju• XML tagovi nisu unaprijed definirani – korisnik sam definira tagove koji su

mu potrebni za opis nekog sadržaja/podataka• preporuka: XML tagove dobro je definirati tako da iz imena taga bude

jasno što taj tag opisuje, tj. tako da ime taga sugerira tip sadržaja upisanog između početnog i završnog taga

• XML je standard čije korištenje preporučuje W3C

Page 4: Wp predavanje xml

XML – osnovni primjer

• primjer jednostavnog XML dokumenta:<?xml version="1.0" encoding="ISO-8859-1“?> <poruka>

<prima>Ana</prima> <salje>Ivo</salje> <naslov>Podsjetnik</naslov> <tekst>Nazovi me ovaj vikend!</tekst> </poruka>

• upišimo gornji primjer u Notepad, snimimo ga kao xml dokument (npr. poruka.xml) i otvorimo u web pregledniku

• vidimo da XML zapravo ne radi ništa; sadržaj XML dokumenta se sastoji od informacija/podataka upisanih između tagova koje korisnik sam definira

• za prikazivanje sadržaja XML dokumenta u obliku prihvatljivom za krajnjeg korisnika “netko” mora kreirati stil i pridružiti ga XML dokumentu

Page 5: Wp predavanje xml

XML - elementi• XML dokument sastoji se od jednog ili više elemenata• XML element se sastoji od niti jednog, jednog ili više znakova informacije

omeđenih s dvije oznake, tj. omeđenih početnim i završnim tag-om• tag se sastoji od imena tag-a omeđenog znakovima ‘<‘ i ‘>’• ime tag-a mora biti definirano prema sljedećim pravilima:

– ime tag-a može sadržavati slova, brojeve i druge znakove (npr. povlaku ‘-’, podvlaku ‘_’ ili točku ‘.’)

– prvi znak u imenu tag-a ne smije biti broj niti interpunkcijski znak– ime tag-a ne smije početi slovima xml u bilo kojoj kombinaciji velikih i

malih slova– ime tag-a ne smije sadržavati razmake– početni i završni tag imaju isto ime, ali ispred imena završnog tag-a

nalazi se znak ‘/’• ako XML element ne sadrži niti jedan znak informacije, onda se početni i

završni tag mogu reducirati u jedan tag sljedećeg oblika: <tag/>• Primjer: http://www.w3schools.com/xml/xml_elements.asp

Page 6: Wp predavanje xml

XML - atributi

• XML element može imati jedan ili više atributa koji se dopisuju iza imena početnog tag-a, a svrha im je dodatno opisivanje sadržaja XML elementa

• svaki atribut ima ime kojem je znakom ‘=’ pridružena vrijednost omeđena ‘jednostrukim’ ili “dvostrukim” navodnicima, npr.

<tag atribut1=‘vrijednost1’ atribut2=‘vrijednost2’>...</tag><tag atribut1=“vrijednost1” atribut2=“vrijednost2”>...</tag>

• primjer: http://www.w3schools.com/xml/xml_attributes.asp

Page 7: Wp predavanje xml

XML - sintaksa• komentare u XML dokumentu pišemo na sljedeći način:

<!-- Ovo je komentar--> • svi elementi moraju imati početni i završni tag:

<tag>netočno strukturiran XML element<tag>točno strukturiran XML element</tag>

• XML deklaracija <?xml version="1.0" encoding="ISO-8859-1" > zapravo nije dio XML dokumenta i nema završni tag

• XML tagovi su osjetljivi na mala i velika slova (eng. case sensitive):<Tag>netočno strukturiran XML element</tag> <tag>točno strukturiran XML element</tag>

• XML elementi moraju biti pravilno “ugnježdeni” (eng. nested) – LIFO struktura (Last In – First Out)

<tag1><tag2>netočno strukturiran XML element</tag1></tag2> <tag1><tag2>točno strukturiran XML element</tag2></tag1>

• XML dokument mora imati korijenski ili root element• za sintaktički ispravan XML dokument kažemo da je well-formed

Page 8: Wp predavanje xml

XML – posebni znakovi

• neki znakovi u XML-u imaju posebno značenje:– ‘<’ uvijek označava prvi znak u početnom tag-u XML elementa (ako se

pojavi unutar XML elementa generirat će grešku)– slično se događa s upotrebom znaka ‘&’– primjer: http://www.w3schools.com/xml/xml_syntax.asp

• stoga u XML-u za ove (i neke druge) znakove koristimo sljedeće kodove:‘<‘ - &lt; ‘>’ - &gt; ‘&’ - &amp; ‘ - &apos; “ - &quot;

• za umetanje drugih posebnih znakova koristimo njihove heksadecimalne ekvivalente kojima prethode znakovi ‘&#x’, npr. za znak © koristimo kod ‘&#xA9 ’, gdje je heksadecimalni broj ‘A9’ ekvivalent ASCII znaka ©

Page 9: Wp predavanje xml

XML – struktura osnovnog primjera

• <?xml version="1.0 " encoding="ISO-8859-1“?> XML deklaracija koja definira verziju XML-a (version="1.0") i kodnu stranicu (encoding="ISO-8859-1 " - Latin-1/West European character set)

• <poruka>početni tag tzv. korijenskog elementa (eng. root-element) XML dokumenta

• <prima>Ana</prima><salje>Ivo</salje><naslov>Podsjetnik</naslov><tekst>Nazovi me ovaj vikend!</tekst>četiri podelementa (eng. child-elements) korijenskog elementa

• </poruka>završni (dočetni) tag koji definira kraj korijenskog elementa

• vidimo da XML dokument ima strukturu stabla

Page 10: Wp predavanje xml

XML - struktura• svaki XML dokument ima strukturu stabla • mora sadržavati korijenski element (eng. root-element) - nadelemet (eng.

parent element) svih ostalih elemenata u XML dokumentu• svi elementi XML dokumenta su podelementi (eng. child-elements)

korijenskog elementa• svaki element XML dokumenta može sadržavati vlastite podelemente• generalna struktura XML dokumenta

<root> <child> <subchild1>...</subchild1> <subchild2>...</subchild2> </child>

</root>• termine parent, child i sibling koristimo kako bismo opisali odnose među

elementima XML dokumenta – parent je nadelement child elementa, a elementi na istoj razini nazivaju se sibling elementima

• primjer: http://www.w3schools.com/xml/xml_tree.asp

Page 11: Wp predavanje xml

XML – prostor imena

• XML prostor imena (eng. namespace) – otklanja mogućnost podudaranja imena elemenata koji u različitim XML dokumentima mogu imati različit smisao, atribute i root-elemente, tj. omogućava da se isti naziv elementa koristi za različite svrhe

• ako ova dva XML dokumenta spojimo u jedan dolazi do sukoba oko imena početnog tag-a – početni <table> tag-ovi imaju isto ime, ali potpuno različito značenje i sadržaj

XML dokument koji sadrži informacije o HTML tablici

XML dokument koji sadrži informacije o stolu

<table> <tr> <td>Apples</td> <td>Bananas</td> </tr></table>

<table> <name>African Coffee Table</name> <width>80</width> <length>120</length></table>

Page 12: Wp predavanje xml

XML – prostor imena

• Sukob oko istog imena elementa s različitim značenjem i sadržajem rješava se uvođenjem prefiksa koji se dodaje ispred imena tag-a i od imena tag-a se odvaja dvotočkom

XML dokument koji sadrži informacije o HTML tablici

XML dokument koji sadrži informacije o stolu

<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr></h:table>

<f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length></f:table>

Page 13: Wp predavanje xml

XML – prostor imena• prostoru imena može se dodijeliti neka vrijednost - najčešće adresa s koje potječe

dokument čije karakteristike su sadržaj XML dokumenta• vrijednost prostora imena definiramo pridruživanjem određene vrijednosti atributu xmlns

unutar početnog tag-a XML elementa u kojem koristimo oznaku (prefiks) prostora imena:xmlns:prefiks-prostora-imena=“prostor-imena“

npr. xmlns:f="http://www.w3schools.com/furniture"• primjer: <root>

<h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr>

</h:table> <f:table xmlns:f="http://www.w3schools.com/furniture">

<f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length>

</f:table></root>

Page 14: Wp predavanje xml

XML – prostor imena

• primjer: vrijednost prostora imena možemo specificirati i kao vrijednost xmlns atributa unutar početnog tag-a root elementa

<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture">

<h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr>

</h:table> <f:table>

<f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length>

</f:table></root>

Page 15: Wp predavanje xml

XML – prostor imena• pretpostavljeni (default) prostor imena - ako se neki prostor imena često koristi

možemo definirati prepotstavljeni (default) prostor imena i time izbjeći stalno pisanje oznake (prefiksa) prostora imena

• primjer:<root xmlns="http://www.w3.org/TR/html4/"

xmlns:f="http://www.w3schools.com/furniture"> <table>

<tr> <td>Apples</td> <td>Bananas</td> </tr>

</table> <f:table>

<f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length>

</f:table></root>

• primjer: http://www.w3schools.com/xml/xml_namespaces.asp

Page 16: Wp predavanje xml

XML – prostor imena• prazan prostor imena – ako nekim elementima XML dokumenta ne želimo pridružiti

prostor imena, onda kao pretpostavljenu vrijednost prostora imena definiramo prazan niz znakova, tj. atributu xmlns pridružimo prazan niz znakova

• primjer:<root xmlns=""

xmlns:f="http://www.w3schools.com/furniture"> <table>

<tr> <td>Apples</td> <td>Bananas</td> </tr>

</table> <f:table>

<f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length>

</f:table></root>

Page 17: Wp predavanje xml

XML - valjanost• valjan XML dokument

– sintaktički ispravan (well-formed) XML dokument koji poštuje definirana pravila logičke povezanosti elemenata, atributa i sadržaja

– ukratko, sintaktički i logički ispravan XML dokument• logička valjanost XML dokumenta je određena shemom pravila koja su

definiranim u samom XML dokumentu ili u posebnom dokumentu na kojeg se pozivamo u XML dokumentu; postoje dva pristupa ovom problemu– DTD (Document Type Definition) shema pravila– XML Schema pravila (alternativa DTD-u podržana od strane W3C-a)

• oba pristupa određuju koje elemente XML dokument smije sadržavati te propisuje redosljed i brojnost pojavljivanja dozvoljenih elemenata

• valjanost XML dokumenta se provjerava u odnosu na određenu Document Type Definition (DTD) ili XML Schemu pravila

• dokument sheme specificira se u zaglavlju XML dokumenta

Page 18: Wp predavanje xml

DTD – Document Type Definition

Page 19: Wp predavanje xml

XML – DTD shema• DTD – definira strukturu XML dokumenta pomoću liste dozvoljenjih elemenata

i atributa• u XML dokument može se uključivati na dva načina:

– unutarnja DTD deklaracija <?xml version="1.0" encoding="ISO-8859-1“?> <!DOCTYPE root-element [DTD-deklaracije-elemenata]>

<root-element>...

</root-element>– vanjska DTD deklaracija

<?xml version="1.0" encoding="ISO-8859-1“?> <!DOCTYPE root-element SYSTEM “DTD_shema_pravila.dtd"> <root-element>

... </root-element>

Page 20: Wp predavanje xml

XML – DTD elementi• svaki element opisuje se deklaracijom sljedećeg oblika:

<!ELEMENT ime_elementa pravilo>• ‘pravilo’ u deklaraciji XML elementa određuje tip sadržaja konkretnog

elementa:– <!ELEMENT ime_elementa ANY>

sadržaj elementa mogu biti znakovni podaci, ali ne i novi (ugnježdeni) tag-ovi

– <!ELEMENT ime_elementa (#PCDATA)> sadržaj elementa mogu biti samo znakovni podaci (PCDATA – parsed character data) “PCDATA is text that will be parsed by a parser” (www.w3schools.com)“CDATA is text that will NOT be parsed by a parser” (www.w3schools.com)

– <!ELEMENT ime_elementa EMPTY> element nema informacijskog sadržaja

– primjer: http://www.w3schools.com/dtd/dtd_elements.asp

Page 21: Wp predavanje xml

XML – DTD elementi

• ako neki element ima child-elemente (npr. svi elementi XML dokumenta su child-elementi root-elementa), onda njegova deklaracija ima sljedeći oblik:

<!ELEMENT ime_elementa (child1, child2,...)>• child-elementi se u prethodnoj deklaraciji upisuju redosljedom kojim se

pojavljuju u samom XML dokumentu• primjer: DTD deklaracija za osnovni primjer (s početka predavanja)

<!ELEMENT poruka (prima, šalje, naslov, tekst)><!ELEMENT prima (#PCDATA)><!ELEMENT šalje (#PCDATA)><!ELEMENT naslov (#PCDATA)><!ELEMENT tekst (#PCDATA)>

Page 22: Wp predavanje xml

XML – DTD elementi

• Ime elementa u DTD deklaraciji može se proširiti tzv. operatorom pojavljivanja, npr.– <!ELEMENT ime_elementa (ime_child_elementa)>

<!ELEMENT poruka (naslov)>element naslov se pojavljuje točno jedanput unutar elementa poruka

– <!ELEMENT ime_elementa (ime_child_elementa+)><!ELEMENT poruka (naslov+)>element naslov se pojavljuje jedan ili više puta unutar elementa poruka

– <!ELEMENT ime_elementa (ime_child_elementa*)><!ELEMENT poruka (naslov*)>element naslov se pojavljuje nula ili više puta unutar elementa poruka

Page 23: Wp predavanje xml

XML – DTD elementi

– <!ELEMENT ime_elementa (ime_child_elementa?)><!ELEMENT poruka (naslov?)>element naslov se pojavljuje nula ili jedanput unutar elementa poruka

– <!ELEMENT ime_elementa (child1, child2, (child3|child4))><!ELEMENT poruka (prima, šalje, (naslov|tekst))>element poruka mora sadržavati točno jedno pojavljivanje elemenata prima i šalje te točno jedno pojavljivanje ili elementa naslov ili elementa tekst

Page 24: Wp predavanje xml

XML – DTD elementi

• primjer: (unutarnja DTD shema)

<!DOCTYPE knjiga [ <!ELEMENT knjiga ((naslov, autor,

izdavač)* | pregled+ ) <!ELEMENT naslov (#PCDATA)> <!ELEMENT autor (ime_autora+)> <!ELEMENT ime_autora (#PCDATA)> <!ELEMENT izdavač (logo?)> <!ELEMENT logo EMPTY> ]>

• element knjiga je root element ovog XML dokumenta

• element knjiga može sadržavati ILI nula ili više nizova elemenata naslov, autor i izdavač (u navedenom rasporedu) ILI jedan ili više elemenata s imenom pregled

• element autor može sadržavati jedan ili više child-elemenata ime_autora

• element logo (koji ne nosi nikakav sadržaj) može se pojaviti nula ili jedanput kao child-element elementa izdavač

Page 25: Wp predavanje xml

XML – DTD atributi

• deklaracija atributa u DTD-u vrši se pomoću ATTLIST deklaracije:<!ATTLIST ime-elementa ime-atributa

tip-atributa podrazumijevana-vrijednost-atributa>

• primjer:– prazni XML element: <placanje nacin= "kartica" />– pripadna DTD deklaracija atributa “nacin”:

<!ATTLIST placanje nacin CDATA "kartica">• tipovi atributa

http://www.w3schools.com/dtd/dtd_attributes.asp• podrazumijevane (eng. default) vrijednosti atributa:

#DEFAULT, #REQUIRED, #IMPLIED, #FIXED

Page 26: Wp predavanje xml

XML – DTD atributipodrazumijevana vrijednost atributaprimjer: dio DTD sheme<!ELEMENT kvadrat EMPTY><!ATTLIST kvadrat

stranica CDATA "5">

• element “kvadrat” ne nosi nikakav sadržaj (tj. “kvadrat” je prazan element) i sadrži atribut “stranica” čija je vrijednost tipa CDATA i podrazumijevana vrijednost je jednaka pet (tj. stranica=“5”)

primjer: XML element

<kvadrat stranica="100" />

• ako vrijednost atributa “stranica” nije specificirana, atribut stranica poprima podrazumijevanu vrijednost “5”

• u gornjem slučaju atribut stranica poprima vrijednost “100”

Page 27: Wp predavanje xml

XML – DTD atributipodrazumijevana vrijednost atributadio DTD sheme• sintaksa:

<!ATTLIST ime-elementa ime-atributa

tip-atributa #IMPLIED>

• primjer:<!ATTLIST kontakt mobitel CDATA #IMPLIED>

objašnjenje i XML element

• vrijednost #IMPLIED koristi se u slučaju kada taj atribut nije obavezno uključiti u element i kada mu nije moguće pridružiti neku podrazumijevanu vrijednost.

• XML element:<kontakt mobitel=“0981234567" />

Page 28: Wp predavanje xml

XML – DTD atributizahtijevana vrijednost atributadio DTD sheme• sintaksa:

<!ATTLIST ime-elementa ime-atributa

tip-atributa #REQUIRED>

• primjer: <!ATTLIST osoba JBMG CDATA #REQUIRED>

objašnjenje i XML element• vrijednost #REQUIRED koristi se u

slučaju kada atributu nije moguće pridružiti neku podrazumijevanu vrijednost, ali kada želimo da atribut obavezno bude prisutan u određenom elementu

• XML element:<osoba JMBG=“1412956123456”>

Page 29: Wp predavanje xml

XML – DTD atributifiksirana vrijednost atributadio DTD sheme• sintaksa:

<!ATTLIST ime-elementa ime-atributa

tip-atributa #FIXED "vrijednost">

• primjer:<!ATTLIST sender company

CDATA #FIXED "Microsoft">

objašnjenje i XML element• vrijednost #FIXED koristi se u

slučaju kada želimo da atribut ima fiksiranu vrijednost koju ni sam autor ne može promijeniti

• ako autor primijeni vrijednost atributa koji je tipa #FIXED, XML parser prijavljuje grešku

• XML element:

<sender company="Microsoft" />

Page 30: Wp predavanje xml

XML – DTD atributilista vrijednosti atributadio DTD sheme• sintaksa:

<!ATTLIST ime-elementa ime-atributa

(vr1|vr2|..) podrazumijevana-vrij>

• primjer:<!ATTLIST placanje

nacin (gotovina|kartica)

“gotovina">

objašnjenje i XML element• listu vrijednosti atributa (eng.

enumerated attribute values) koristimo kada želimo da atribut poprimi jednu od ponuđenih ili deklariranih vrijednosti

• XML element:<placanje nacin= "gotovina" /> ili<placanje nacin= "kartica" />

Page 31: Wp predavanje xml

XML – DTD primjer

• proanalizirajmo sljedeće primjere DTD shema pravila koje definiraju strukturu nekih XML dokumenata:

http://www.w3schools.com/dtd/dtd_examples.asp

Page 32: Wp predavanje xml

XML Schema

Page 33: Wp predavanje xml

XML Schema

• XML Schema – osnovna svojstva– definira elemente i atribute koji se mogu pojaviti u XML dokumentu– određuje koji elementi su child-elementi te određuje njihov broj i

raspored pojavljivanja u XML dokumentu– definira tip elemenata (prazan element, tekstualni element)– definira tip podataka za elemente i atribute– definira podrazumijevane i fiksiriane vrijednosti elemenata i atributa

• XML Schema - upotreba– alternativa DTD shemi pravila– W3C preporuka za definiranje strukture XML dokumenta

Page 34: Wp predavanje xml

XML Schema

• vanjska (eng. external) XML Schema za jednostavni XML dokument :<?xml version="1.0"?><poruka xmlns=http://www.w3schools.com xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation= http://www.w3schools.com/schema/poruka.xsd> <prima>Ana</prima>

<šalje>Ivo</šalje> <naslov>Podsjetnik</naslov> <tekst>Nazovi me ovaj vikend!</tekst>

</poruka>• poruka.xsd – XML Schema pravila spremljena kao posebni dokument

Page 35: Wp predavanje xml

XML Schema

• unutarnja (eng. internal) XML Schema za jednostavni XML dokument :<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified">

<xs:element name="poruka"> <xs:complexType>

<xs:sequence> <xs:element name="prima" type="xs:string"/> <xs:element name="salje" type="xs:string"/> <xs:element name="naslov" type="xs:string"/>

<xs:element name="tekst" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

</xs:schema>

Page 36: Wp predavanje xml

XML Schema

• <schema> – root-element svake XML Scheme koji može sadržavati određene atribute:

<?xml version="1.0"?> <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace="http://www.w3schools.com" xmlns=http://www.w3schools.com elementFormDefault="qualified">

... </xs:schema>

Page 37: Wp predavanje xml

XML Schema

• xmlns:xs=http://www.w3.org/2001/XMLSchema– znači da je elementima (schema, element, complexType, sequence) i tipovima

podataka (string) korištenima u XML Schemi pridružen prostor imena http://www.w3.org/2001/XMLSchema

– također znači da elementi i tipovi podataka kojima je pridružen ovaj prostora imena trebaju imati prefiks xs:

• targetNamespace=http://www.w3schools.com– znači da je elementima definiranima XML Schemom (poruka, prima, salje,

naslov i tekst) pridružen prostor prostora imena http://www.w3schools.com• xmlns=http://www.w3schools.com

– znači da je podrazumijevani prostor imena http://www.w3schools.com• elementFormDefault="qualified“

– znači da svaki element korišten u XML dokumentu kojemu je pridružena ova XML Schema mora imati pridružen prostor imena određen u XML Schemi

Page 38: Wp predavanje xml

XML Schema – jednostavni elementi • jednostavan element

– element koji može sadržavati samo tekst– ne može sadržavati druge elemente niti atribute

• sadržaj jednostavnog elementa može biti sljedećeg tipa:– xs:string, xs:decimal, xs:integer, xs:boolean, xs:date, xs:time– http://www.w3schools.com/schema/schema_dtypes_string.asp– definiranje jednostavnog elementa:

<xs:element name="xxx" type="yyy"/>• primjer:

dio XML dokumenta dio pripadne XML Scheme

<ime>AAAAA</ime> <dob>28</dob> <rodjendan> 1981-03-27</rodjendan>

<xs:element name= "ime" type="xs:string"/> <xs:element name= "dob" type="xs:integer"/> <xs:element name= "rodjendan" type="xs:date"/>

Page 39: Wp predavanje xml

XML Schema – jednostavni elementi

• jednostavni elementi mogu imati ili podrazumijevane ili fiksirane vrijednosti

• deklariranje podrazumijevane vrijednosti jednostavnog elementa:<xs:element name= "boja" type="xs:string" default= "zelena"/>

- podrazumijevana vrijednost se automatski pridružuje elementu u slučaju da nije deklarirana neka druga vrijednost elementa

• deklariranje fiksirane vrijednosti jednostavnog elementa:<xs:element name= "boja" type="xs:string" fixed= "zelena"/>

- fiksirana vrijednost se automatski pridružuje elementu i nije moguće deklarirati drugu vrijednost elementa

Page 40: Wp predavanje xml

XML Schema – atributi

• atributi – uvijek su jednostavnog tipa, tj. mogu sadržavati samo podatke tipa xs:string, xs:decimal, xs:integer, xs:boolean, xs:date, xs:time

• definiranje atributa:<xs:attribute name="xxx" type="yyy"/>

• primjer:<rijec jezik="EN">Word</rijec><xs:attribute name=“jezik" type="xs:string"/>

• atributi mogu imati ili podrazumijevanu ili fiksiranu vrijednost:– deklariranje podrazumijevane vrijednosti atributa

<xs:attribute name=“jezik" type="xs:string“ default="EN"/>– deklariranje fiksirane vrijednosti atributa

<xs:attribute name=“jezik" type="xs:string“ fixed="EN"/>

Page 41: Wp predavanje xml

XML Schema – atributi

• proizvoljni (eng. optional) i obavezni (eng. required) atributi – podrazumijeva se da je svaki atribut proizvoljan sve dok ga se ne

deklarira kao obaveznog

• deklaracija atributa kao proizvoljnog ili obaveznog– pomoću atributa “use” koji može imati vrijednost “optional” ili

“required” u XML Schemi

• primjer:– deklariranje proizvoljnog atributa

<xs:attribute name=“jezik" type="xs:string " use= "optional"/>– deklariranje obaveznog atributa

<xs:attribute name=“jezik" type="xs:string " use= "required"/>

Page 42: Wp predavanje xml

XML Schema – restrikcije vrijednosti

• restrikcije vrijednosti– koriste se za kontroliranje dopuštenih vrijednosti elemenata i atributa– restrikcije vrijednosti XML elemenata zovu se “facets”

• primjeri restrikcija vrijednosti elemenata i atributa:1. restrikcija na vrijednosti između deklarirane minimalne i maksimalne

dozvoljene vrijednosti2. restrikcija na konačan skup deklariranih vrijednosti3. restrikcija na niz dozvoljenih vrijednosti4. restrikcija duljine dozvoljene vrijednosti između deklarirane minimalne i

maksimalne duljine5. restrikcija vrijednosti proširena operatorom pojavljivanja koji deklarira broj

pojavljivanja deklarirane vrijednosti• primjer:

http://www.w3schools.com/schema/schema_facets.asp

Page 43: Wp predavanje xml

XML Schema – složeni elementi

• složeni elementi (eng. complex elements) – XML elementi koji osim teksta mogu sadržavati druge elemente i/ili atribute

• postoje četiri vrste složenih elemenata:1. prazni elementi2. elementi koji sadrže samo tekst3. elementi koji sadrže samo druge elemente4. elementi koji sadrže i tekst i druge elemente– sve vrste složenih elemenata mogu, ali ne moraju, sadržavati atribute

• primjer:1. prazan složeni element: <proizvod kod="12345"/>2. složeni element koji sadrži samo tekst:

<proizvod tip=“slastica">Sladoled</proizvod>

Page 44: Wp predavanje xml

XML Schema – složeni elementi

• primjer:3. složeni element koji sadrži samo druge elemente:

<zaposlenik> <ime>John</ime>

<prezime>Smith</prezime> </zaposlenik>

4. složeni element koji sadrži i tekst i druge elemente:<opis>

Dogodilo se <datum jezik=“hrvatski">06.04.2010.</datum> .... </opis>

Page 45: Wp predavanje xml

XML Schema – složeni elementi

• definiranje složenog elementa u XML Schemi – promotrimo složeni element koji sadrži samo druge elemente:

<zaposlenik> <ime>John</ime>

<prezime>Smith</prezime> </zaposlenik>

Page 46: Wp predavanje xml

XML Schema – složeni elementi

• prvi način definiranja složenog elementa u XML Schemi:<xs:element name= "zaposlenik"> <xs:complexType> <xs:sequence>

<xs:element name= "ime" type="xs:string"/><xs:element name= "prezime" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

• <xs:sequence> - child elementi <ime> i <prezime> u XML dokumentu moraju se pojaviti u redoslijedu u kojem su navedeni u XML Schemi

• u ovom slučaju samo element <zaposlenik> može koristiti definirani složeni tip

Page 47: Wp predavanje xml

XML Schema – složeni elementi

• drugi način definiranja složenog elementa u XML Schemi – od prvog se razlikuje po deklaraciji koja omogućuje da element <zaposlenik> sadrži atribut “type” čija vrijednost upućuje na složeni tip kojeg treba koristiti:

<xs:element name="zaposlenik" type="OsobnoIme"> <xs:complexType name="OsobnoIme"> <xs:sequence>

<xs:element name= "ime" type="xs:string"/><xs:element name= "prezime" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

Page 48: Wp predavanje xml

XML Schema – složeni elementi

• ovaj drugi način definiranja složenih elemenata u XML Schemi omogućuje da više različitih elemenata koristi isti definirani složeni tip, npr.

<xs:element name="zaposlenik" type="OsobnoIme"/> <xs:element name="student" type="OsobnoIme"/> <xs:element name="clan" type="OsobnoIme"/>

<xs:complexType name="OsobnoIme"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence>

</xs:complexType>

Page 49: Wp predavanje xml

XML Schemaprazni složeni elementi• prazni složeni element

– može sadržavati atribute– ne može sadržavati nikakav sadržaj (niti tekst niti druge elemente) između svog

početnog i završnog taga• primjer:

– element: <proizvod kod="12345"/>– XML Schema 1: <xs:element name="proizvod">

<xs:complexType> <xs:attribute name="kod" type="xs:positiveInteger"/>

</xs:complexType> </xs:element>

– XML Schema 2: <xs:element name="proizvod" type="KodProizvoda"/><xs:complexType name="KodProizvoda"> <xs:attribute name="kod" type="xs:positiveInteger"/>

</xs:complexType>

Page 50: Wp predavanje xml

XML Schematekstualni složeni elementi• tekstualni složeni element – može sadržavati tekst i atribute, tj. sadrži samo

sadržaj jednostavnog tipa• stoga deklaraciju sadržaja u XML Schemi zatvaramo u <xs:simpleContent>

</simpleContent> tagove• čim koristimo <xs:simpleContent> okruženje moramo definirati proširenje ili

restrikciju tipa podataka iz kojeg može biti vrijednosti elementa ili atributa:

Proširenje... Restrikcija...

<xs:element name="somename"> <xs:complexType> <xs:simpleContent> <xs:extension base="basetype">

.... .... </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

<xs:element name="somename"> <xs:complexType> <xs:simpleContent> <xs:restriction base="basetype">

.... .... </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element>

Page 51: Wp predavanje xml

XML Schematekstualni složeni elementi• primjer:

– element: <BrojCipela zemlja=“hrvatska">40</BrojCipela>– XML Schema 1:

<xs:element name="BrojCipela"> <xs:complexType> <xs:simpleContent>

<xs:extension base="xs:integer"> <xs:attribute name="zemlja"

type="xs:string" /> </xs:extension>

</xs:simpleContent> </xs:complexType>

</xs:element>

Page 52: Wp predavanje xml

XML Schematekstualni složeni elementi• XML Schema 2:

<xs:element name="BrojCipela" type="TipBroja"/><xs:complexType name="TipBroja"> <xs:simpleContent>

<xs:extension base="xs:integer"> <xs:attribute name="zemlja" type="xs:string" /> </xs:extension>

</xs:simpleContent> </xs:complexType>

Page 53: Wp predavanje xml

XML Schema - složeni elementi s mješovitim sadržajem• složeni elementi s mješovitim sadržajem – mogu sadržavati tekst, atribute i druge elemente• primjer:

– element: <letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>

– XML Schema 1:<xs:element name="letter">

<xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence>

</xs:complexType> </xs:element>

Page 54: Wp predavanje xml

XML Schema – složeni elementi s mješovitim sadržajem• primjer:

– XML Schema 2:<xs:element name="letter" type="lettertype"/>

<xs:complexType name="lettertype" mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/>

<xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence>

</xs:complexType>

– vrijednost “true” atributa “mixed” (tj. mixed=“true”) omogućuje pojavljivanje tekstualnog sadržaja između child-elemenata nekog elementa (name, orderid i shipdate su child-elementi elementa letter)

Page 55: Wp predavanje xml

XML Schema – indikatori

• indikatori – omogućuju kontroliranje upotrebe elemenata u XML dokumentu

• razlikujemo tri kategorije sa ukupno sedam indikatora:

1. indikatori redosljeda (eng. order indicators)• all, choice, sequence

2. indikatori pojavljivanja (eng. occurence indicators)• maxOccurs, minOccurs

3. indikatori grupe (eng. group indicators)• Group name, attributeGroup name

Page 56: Wp predavanje xml

XML Schema – indikatori redosljeda

• all indikator – znači da se child-elementi u XML dokumentu mogu pojaviti u bilo kojem redosljedu i da se svaki child-element može pojaviti točno jedanput

<xs:all> ... </xs:all>• choice indikator – znači da se od svih navedenih child-elemenata u XML

dokumentu može pojaviti samo jedan<xs:choice> ... </xs:choice>

• sequence indikator – znači da se svi child-elementi u XML dokumentu moraju pojaviti redom kako su definirani u XML Schemi

<xs:sequence> ... </xs:sequence>• primjer:

http://www.w3schools.com/schema/schema_complex_indicators.asp

Page 57: Wp predavanje xml

XML Schema – indikatori pojavljivanja

• indikatori pojavljivanja – definiraju broj pojavljivanja elementa• maxOccurs indikator - definira maksimalan broj mogućih pojavljivanja elementa• minOccurs indikator - definira minimalan broj mogućih pojavljivanja elementa• primjer: http://www.w3schools.com/schema/schema_complex_indicators.asp

<xs:element name="person"> <xs:complexType>

<xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string“ maxOccurs="10" minOccurs="0"/>

</xs:sequence> </xs:complexType> </xs:element>

Page 58: Wp predavanje xml

XML Schema – indikatori grupe

• indikatori grupe elemenata – koriste se za definiranje povezanih skupova elemenata– deklaracija:

<xs:group name="groupname"> ... </xs:group>

• Indikatori grupe atributa – deklaracija:

<xs:attributeGroup name="groupname"> ... </xs:attributeGroup>

• primjer:http://www.w3schools.com/schema/schema_complex_indicators.asp

Page 59: Wp predavanje xml

XML Schema – element “any”

• element “any” – omogućuje proširenje XML dokumenta elementom koji nije definiran u XML Schemi pridruženoj tom XML dokumentu

• primjer: nakon child-elementa “lastname” elementa “person” pomoću elementa “any” omogućujemo dodavanje nekog novog child-elementa koji nije definiran u ovoj XML Schemi<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>

Page 60: Wp predavanje xml

XML Schema – element “any”

• primjer: XML Schema u kojoj definiramo novi element “children”<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"><xs:element name="children"> <xs:complexType> <xs:sequence>

<xs:element name="childname" type="xs:string" maxOccurs="unbounded"/> </xs:sequence>

</xs:complexType> </xs:element></xs:schema>

Page 61: Wp predavanje xml

XML Schema – element “any”• primjer: XML dokument koji, zbog prisutnosti elementa “any” u XML Schemi u kojoj je definiran element

“person”, omogućuje korištenje elementa “children” (definiranog u drugoj XML Schemi) kao child-elementa elementa person: <?xml version="1.0" encoding="ISO-8859-1"?><persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.w3schools.com children.xsd"><person> <firstname>Hege</firstname> <lastname>Refsnes</lastname> <children>

<childname>Cecilie</childname> </children> </person><person> <firstname>Stale</firstname>

<lastname>Refsnes</lastname> </person>

</persons>

Page 62: Wp predavanje xml

XML Schema primjer

• proanalizirajmo sljedeći primjer XML dokumenta i XML Scheme koja definira njegovu strukturu:

http://www.w3schools.com/schema/schema_example.asp

Page 63: Wp predavanje xml

XML – opće informacije

Page 64: Wp predavanje xml

XML – prikaz na web-u

• na web stranici se pomoću preglednika čisti XML dokument vidi kao običan tekst s umetnutim tagovima (bez ikakvog stilskog uređenja)

• neki internet preglednici (npr. IE i Mozilla) prikazuju stablo na kojem se klikom na odgovarajući čvor njemu podređene grane XML dokumenta mogu prikazati ili sakriti od prikazivanja

http://www.w3schools.com/xml/xml_view.asp• ako želimo neki XML dokument prikazati u određenom formatu, to

možemo postići na jedan od sljedeća tri načina (detaljnije na vježbama):– u XML dokumentu navesti naziv CSS datoteke koja ga formatira na

odgovarajući način http://www.w3schools.com/xml/xml_display.asp

– koristiti XSLT (eXtensible Stylesheet Language Transformations) http://www.w3schools.com/xml/xml_xsl.asp

Page 65: Wp predavanje xml

XML – upotreba

• Osnovnu upotrebu XML-a možemo sažeti na sljedeći način:

– odvajanje podataka od prezentacije– razmjena/prijenos podataka– pohrana podataka– povećanje dostupnosti podataka– izrada novih specijaliziranih markup jezika

Page 66: Wp predavanje xml

XML – proširenja i tehnologije

• XPath - jezik koji omogućuje jednostavnije pretraživanje sadržaja u XML dokumentu.

• XQuery - upitni jezik za pretraživanje XML dokumenta. On je za XML isto ono što je SQL za relacijske baze podataka

• XSLT - jezik koji omogućuje transformacije XML dokumenata iz jednog formata u drugi (npr. iz XMLa u XHTML)

• XSL-FO - jezik koji služi za formatiranje izlaznog rezultata XML dokumenta• XML Linking Language - jezik koji opisuje standardni način kreiranja

hiperlinkova u XML dokumentima• XML Pointer Language - jezik koji opisuje standardni način na koji

hiperlinkovi pokazuju na određeno mjesto unutar XML dokumenta• XML Document Object Model (DOM) - sučelje koje omogućuje računalnim

programima pristup i ažuriranje sadržaja i strukture XML dokumenta

Page 67: Wp predavanje xml

XML – proširenja i tehnologije

• SOAP - jednostavan protokol temeljen na XMLu koji omogućuje aplikacijama razmjenu podataka u tekstualnom obliku preko HTTP protokola

• Web Services Description Language (WSDL) - jezik baziran na XMLu koji omogućuje opis web servisa i sučelja za njihovo korištenje

• Really Simple Syndication (RSS) - način za distribuciju sadržaja s jednog web-a na druge pomoću XMLa

• Wireless Application Protocol (WAP) - protokol razvijen s namjerom pristupa internetskim sadržajima pomoću prijenosnih uređaja (mobitela, ručnih računala...)

• XML Signature - definira sintaksu i pravila za kreiranje digitalnog potpisa XML sadržaja

• XML Encryption - definira sintaksu i pravila za šifriranje XML sadržaja

Page 68: Wp predavanje xml

XML - prednosti• jednostavno je čitljiv i čovjeku u običnom tekstualnom editoru i računalu • XML dokument je obična tekstovna datoteka čitljiva na svakoj platformi

koja može čitati tekstovne podatke. To ga čini neosjetljivim na tehnološke promjene jer bez obzira na napredak tehnologije, tekstovni podaci će još jako dugo ostati nešto što će svaki računalni sustav trebati moći pročitati

• podržava Unicode i omogućuje prikaz teksta na svim danas poznatim jezicima

• format je samodokumentirajući - oznake opisuju sadržaj koji se nalazi unutar njih

• Ima stroga sintaksna pravila tako da je jednostavno kontrolirati ispravnost nastalog dokumenta – računalni programi koji obrađuju dokument stoga mogu jednostavno obrađivati XML sadržaj

• XML je međunarodno prihvaćen standard – mnogi proizvođači programa su ga prihvatili i koriste u svojim proizvodima

• hijerarhijska struktura je pogodna za opisivanje mnogih sadržaja

Page 69: Wp predavanje xml

XML - nedostaci• sintaksa je redundantna i opširna što može zamarati i zbunjivati osobu koja čita XML

dokument, a računalni program koji obrađuje dokument morat će obrađivati veliku količinu podataka što će ga djelomično usporiti

• da bi dokument bio dovoljno dobro "samoopisan" nazivi oznaka moraju biti dovoljno precizni što dovodi do dugih naziva (npr. u nekom dokumentu nije dovoljan opis podatka Ime_i_prezime jer to može biti ime i prezime osobe koja je kreirala dokument, ali i osobe na koju se slog odnosi, osobe kojoj se dokument šalje,...)

• nije dovoljno osloniti se na "samoopisivanje" sadržaja.• redundancija i velika količina podataka stvaraju velike zahtjeve za propusnosti mreže

(iako to danas uglavnom više nije problem)• Programi koji obrađuju XML podatke su dosta složeni jer moraju obrađivati velike količine

ugniježđenih podataka u više razina • nedostatak formalno propisanih formata za podatke može stvarati probleme ako

sudionici u razmjeni nisu dobro opisali (npr. da li se decimalni brojevi prikazuju s decimalnom točkom ili zarezom

• pohrana XML podataka u relacijske baze podataka nije prirodan način i to dovodi do smanjenja performansi sustava koji koriste takav način pohrane. S druge strane XML baze podataka koje su razvijene za pohranu XML podataka još su u fazi razvoja

Page 70: Wp predavanje xml

XML - inačice• XML 1.0 - inicijalno je stvoren 1998. godine

– ova inačica je do danas imala nekoliko manjih revizija, širom je prihvaćena i još i danas se preporučuje za korištenje

– temelji se na filozofiji da je zabranjeno sve što nije dozvoljeno. S razvojem drugih standarda na koje se oslanja (prvenstveno Unicode standarda) dolazilo je prvenstveno na velikim sustavima (IBM mainframe) do određenih problema jer se nisu mogli koristiti oni znakovi koju u vrijeme definiranja standarda nisu postojali.

• XML 1.1 - inicijalno je objavljen 2004. godine– ima određena svojstva koja olakšavaju rad programima na velikim računalnim

sustavima– njezin pristup je da je sve što nije zabranjeno dozvoljeno - na takav način

omogućuje se korištenje svih budućih Unicode znakova koji će se bilo kada u budućnosti definirati

– zbog svoje raširenosti uglavnom se još uvijek koristi verzija XML 1.0 jer je zadovoljavajuća za većinu korisnika. Korisnici na velikim računalnim serverimakoji imaju problema s ograničenjima verzije XML 1.0 uglavnom su prešli na korištenje verzije XML 1.1.

Page 71: Wp predavanje xml

XML - literatura

1. http://www.w3schools.com

2. XML – materijali prof. Esserta