106
______________________________________________________________________________________ M. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje 1.1. WEB – svjetska paučina računalnih mreža 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, vido, 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, objekata i apleta, rad sa slikovnim mapama, s okivirima (engl. frames), s obrascima (engl. forms) i drugo. Primjer 1.1. URI Opis http://www.fsb.hr/COMA/vidi.html Dokument 'vidi.html' nalazi se u direktoriju 'COMA' na stroju 'www.fsb.hr' i dohvaća se 'http://' protokolom. <A href="mailoto:[email protected]"> piši mi </A> E-mail adresa uglavljena u <A> (engl. anchor) HTML element koji čini da korisnik klikom na sadržaj ('piši mi') pokreće program ('mailto') za pisanje i slanje elektroničke pošte. Publicirati digitalnu informaciju u globalnoj razdiobi moguće je samo postojanjem zajedničkog jezika kojeg svi razumiju i koriste, nezavisno o računalima i njihovim operacijskim sustavima. Taj zahtjev uspješno je riješen definiranjem opisnog (engl. markup) HTML jezika, odnosno početnom popularizacijom Mosaic browser-a razvijenog (Tim Berners-Lee u CERN-u) za potrebe NCSA. Od početka devedesetih godina prošlog stoljeća do danas, HTML je doživio više poboljšanja i proširenja (od verzije 2.0 godine1995. do HTML-a ver. 4.0 koji sa XML (eXtensible Markup Language) od 2000. godine postavlja XHTML standard).

M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

  • Upload
    others

  • View
    10

  • Download
    1

Embed Size (px)

Citation preview

Page 1: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 1

M. Essert: WEB PROGRAMIRANJE, 1. predavanje

1.1. WEB – svjetska paučina računalnih mreža 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, vido, 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, objekata i apleta, rad sa slikovnim mapama, s okivirima (engl. frames), s obrascima (engl. forms) i drugo. Primjer 1.1.

URI Opis http://www.fsb.hr/COMA/vidi.html Dokument 'vidi.html' nalazi se u direktoriju

'COMA' na stroju 'www.fsb.hr' i dohvaća se 'http://' protokolom.

<A href="mailoto:[email protected]"> piši mi </A> E-mail adresa uglavljena u <A> (engl. anchor) HTML element koji čini da korisnik klikom na sadržaj ('piši mi') pokreće program ('mailto') za pisanje i slanje elektroničke pošte.

Publicirati digitalnu informaciju u globalnoj razdiobi moguće je samo postojanjem

zajedničkog jezika kojeg svi razumiju i koriste, nezavisno o računalima i njihovim operacijskim sustavima. Taj zahtjev uspješno je riješen definiranjem opisnog (engl. markup) HTML jezika, odnosno početnom popularizacijom Mosaic browser-a razvijenog (Tim Berners-Lee u CERN-u) za potrebe NCSA. Od početka devedesetih godina prošlog stoljeća do danas, HTML je doživio više poboljšanja i proširenja (od verzije 2.0 godine1995. do HTML-a ver. 4.0 koji sa XML (eXtensible Markup Language) od 2000. godine postavlja XHTML standard).

Page 2: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 2

HTML živi desetak godina duže od XML-a. Izvorište oba 'markup' jezika je SGML - opći, tzv. meta-jezik koji definira semantiku i sintaktičke restrikcije opisnih jezika. U deklaraciji takvih jezika pojavljuju se sve oznake (tag-ovi) koje jezik poznaje, uz sintaksu konstrukcije definirane preko DTD (Document Type Definition) ili XML-shema pravila. Kako je vidljivo već iz njegova imena, HTML je usmjeren na hipertekst, tj. na mogućnost da se na bilo kojem mjestu u dokumentu postavi veza (engl. link) na neko drugo mjesto u istom ili nekom drugom dokumentu (koji može biti bilo gdje na mreži). Njegova osnovna zadaća je osigurati jednoznačan prikaz dokumenta u preglednicima (engl. browser), temeljnim programima za rad (surfanje) na Internetu. To drugim riječima znači, da su browser-i programi koji razumiju i obrađuju primljeni dokument prema zadanim tagovima i njihovoj DTD/XMLschema strukturi. Potreba poznavanja tag-ova i njihovog opisa potrebna je svima koji žele generirati takve dokumente koje će drugi korisnici preko svojih browser-a moći vidjeti onako kako se to želi. S obzirom da postoji vrlo mnogo programa koji omogućuju korisniku generiranje HTML dokumenata bez ikakvog znanja o nutarnjoj strukturi moglo bi se zaključiti da je njegovo upoznavanje nepotrebno. No, to nije točno. Za tvorbu dinamičkih dokumenata, a to su oni koji nastaju prema želji samih korisnika, a rezultat su naših specifičnih programa koji daju te dokumente, nužno je detaljno sintaktičko-semantičko poznavanje.

Za razliku od XML-a koji je zahtijevao da svaki početni tag elementa ima i svoj dočetni (završni) tag, HTML ima elemente za koje to nije nužno. U DTD deklaracijama HTML jezika stoga se mogu naći ovakve oznake:

- - - oba tag-a (početna i završna oznaka) su obvezni - 0 - završni tag nije obvezatan 0 0 - niti jedan tag nije nužan

Za atribute ili njihove skupine koje se grupiraju u zagradama vrijedi poznata sintaksa:

A ? - A se pojavljuje jedanput ili nikad A * - A se pojavljuje jedanput ili više puta ili se ne pojavljuje A + - A se pojavljuje jedanput ili više puta

Analogno, za njihov međusobni odnos vrijedi:

A | B - ili A ili B, ali ne oba A , B - A i B, u tom poretku A & B - A i B, u bilo kojem poretku

Nekoliko HTML elemenata koriste dodatno SGML pravilo (znak minusa ispred imena elementa) kojim se isključuje pojavljivanje jednog unutar drugog elementa. Na primjer, HTML obrazac ili forma ne može u sebi sadržavati drugi obrazac. Primjer 1.2.

DTD za HTML Opis <!ENTITY % list "UL | OL"> ENTITY (cjelina) s referentnim imenom

'%list' može imati ili 'UL' ili 'OL' elemente (ali ne istodobno oba).

<!ELEMENT UL - - (LI)+>

Element 'UL' ima oba tag-a i jedan ili više 'LI' elemenata.

<!ELEMENT IMG - O EMPTY>

Element 'IMG' nema informaciju, niti završni tag.

<!ELEMENT DL - - (DT|DD)+>

Element 'DL' ima oba tag-a i jedan ili više 'DT' ili 'DD' elemenata.

<!ELEMENT OPTION - O (#PCDATA)>

Element 'OPTION' ne mora imati završni tag, a ima informaciju znakovnog niza

<!ELEMENT A - - (%inline;)* -(A)>

Element 'A' ima oba tag-a, te nijedan, jedan ili više elemenata definiranih u ENTITY

Page 3: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 3

referenci '%inline'. A element ne može u sebi uključivati (gnijezditi) drugi A element.

<!ATTLIST MAP name CDATA #IMPLIED >

Atribut elementa 'MAP' s imenom 'name' je nije obavezan i uključuje znakovni niz tipa CDATA.

1.2. HTML - osnove HTML je hipertekstualni standard koji razumiju WEB browseri, koji uz ontološku informaciju dokumenta ima i oznake (tagove) za njezin prikaz. Neki tag-ovi mogu uz ime imati i jedan ili više atributa koji mogu poprimati različite vrijednosti. Opći izgled HTML dokumenta je ovaj: <HTML>

<HEAD> zaglavlje koje može imati nekoliko podelemenata tipa: <TITLE> naslov dokumenta </TITLE> <BASE> osnovna adresa preko koje se rješava relativna;

nužna ako se dokument ne nalazi na originalnoj lokaciji. </BASE> <ISINDEX> javlja browser-u da je dokument indeksni, s kazalima na druge dokumente </ISINDEX> <LINK> pokazuje vezu između ovog dokumenta

i nekog objekta na WEB-u </LINK> <META> daje informacije o stranici, kao što su ključne riječi </META> <SCRIPT> sadrži Java ili VB skripta </SCRIPT> <STYLE> sadrži informaciju koja se koristi u CSS-u,

uzorcima stilova </STYLE> </HEAD> <BODY> tijelo dokumenta s informacijom </BODY> </HTML>

Zaglavlje (<HEAD>) opisuje informaciju koja je spremljena i posebnim tag-ovima formatirana u tijelu (<BODY>) dokumenta. Ne ulazeći u detaljan opis svakog elementa i njegovih atributa ovdje će ukratko biti predočeni samo najvažniji tagovi i njihov učinak u prikazu informacije.

Temeljni tag koji tekst čini hipertekstom je tag <A> sindra (engl. anchor) koji se postavlja na željeno mjesto u dokumentu pod nekim imenom preko atributa 'NAME', npr.

<A NAME="tu">Ovdje</A> smo stavili sidro na koje skačemo!

Na nekom drugom mjestu dokumenta moguće je ugraditi vezu (engl. link) na postavljeno sidro, također uz pomoć <A> tag-a i njegovog atributa 'HREF' (od engl. hyper reference) u kojem se navodi ime dokumenta (npr. lekcija01.html') i ime sidra na koje skačemo. Klikni <A HREF="lekcija01.html#tu"> na ovaj niz </A> da bi se čudesno prenio na drugo mjesto ...

Pritom će veza (u našem slučaju znakovi 'na ovaj niz' ) u dokumentu biti drugačije boje. Klikom na nju browser će automatski pokazati tekst kod sidra (u našem slučaju tekst 'Ovdje smo stavili sidro na koje skačemo'), a veza u dokumentu će promijeniti boju. Pretpostavljene boje za vezu su:

• plava - za tek postavljenu vezu (LINK) • crvena - za aktiviranu vezu (ALINK)

Page 4: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 4

• ljubičasta - za već posjećenu vezu (VLINK, engl. visited link)

Te boje mogu se promijeniti u elementu BODY zajedno s željenom bojom teksta (atribut TEXT) i bojom pozadine (BGCOLOR, engl. background color). Boje se zadaju preko njihovog RGB heksadecimalnog ekvivalenta, gdje je R iznos crvene (engl. red), G zelene (engl. green) i B plave (engl. blue) boje. Na primjer za tijelo dokumenta: <BODY BGCOLOR="#00000" TEXT="#FFFF00" LINK="#FF0000" VLINK="#800000" ALINK="#008000"> vrijedi da je tekst dokumenta žut (#FFFF00) na crnoj podlozi (#000000), početni link je crvene boje, aktivni link zelene, a posjećeni link zagasito crvene.

Vrstu slova (engl. font) moguće je mijenjati unutar HTML dokumenta uz pomoć <FONT> tag-a i njegovih atributa (COLOR za boju, FACE za vrstu fonta i SIZE za veličinu slova). Na primjer, na ovaj način: Ovo je obično, <FONT COLOR="#FF0000" FACE="ARIAL" SIZE="7"> a ovo je super!</FONT> napisat će se niz 'a ovo je super!' u crvenoj boji, arial fonta, veličine 7 točaka. U tablici 2.1 napisani su najčešći tagovi za obradu znakova, slika i liste podataka. Tablica 1.3.

HTML tagovi Rezultat ovo je <B> bold (pojačano) </B> ovo je bold (pojačano) ovo je <I> italic (ukošeno) </I> ovo je italic (ukošeno) ovo je <U> podvučeno (engl. underline) </UI> ovo je podvučeno (engl. underline) <IMG SRC="slika1.gif" WIDTH=90 HEIGHT=62>

umetanje slike 'slika1.gif' u dokument uz prilagodbu slike na dimenzije širine (WIDTH) i visine (HEIGHT)

<UL> <LI>XML <LI>HTML <LI>DTD <LI>CSS <LI>XSL </UL>

Tag <UL> služi za neporedano nabrajenje u listi(unordederd list):

• XML • HTML • DTD • CSS • XSL

<OL> <LI>JavaScript <LI>VB Script <LI>Java <LI>PHP <LI>C# </OL>

Tag <OL> služi za poredano nabrajenje u listi(ordederd list):

1. JavaScript 2. VB Script 3. Java 4. PHP 5. C#

<DL> <DT>PHP jezik <DD>Sličan C jeziku a namijenjen WEB-u ovaj programski jezik postao je izuzetno popularan. </DL>

Tag-ovi (DL, DT i DD) služe u definicijskim listama za nabrajenje s uvlakama: PHP jezik Sličan C jeziku a namijenjen WEB-u ovaj programski jezik postao je izuzetno popularan.

Page 5: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 5

Treba primjetiti kako HTML ne uzima u obzir prazna mjesta (razmake ili nove linije) već ih

treba eksplicitno definirati: • <BR> - skok u novi red • <P> - novi paragraf: skok u novi red sa stanovitim razmakom. • &nbsp; - jedno prazno mjesto

ili dio dokumenta staviti unutar <PRE> tag-ova kako bi se sačuvalo originalno formatiranje, sa svim razmacima i novim (praznim) redovima. Da bi se jedna cjelina odvojila od druge često se koristi ravna crta uz pomoć <HR> tag-a s pripadnim atributima ili bez njih. Na primjer,

<HR WIDTH=60% SIZE=3 ALIGN=LEFT NOSHADE> će nacrtati ravnu liniju debljine 3 točke i širine 60% zaslona (bez obzira u kojoj rezoluciji radili) koja će biti puna, bez sjene (engl. NOSHADE) i pozicionirana ulijevo. Pozicioniranje (ALIGN) nekod objekta (crte, slike, teksta i sl.) često je prisutno kao atribut mnogih tag-ova s mogućim vrijednostima:

• LEFT-ulijevo • CENTER-centrirano, u sredini • RIGHT-udesno.

Kao zanimljivost spomenimo mogućnost da crte generirimo slikom koja sadrži samo jednu točku, koja je na primjer spremljena u datoteci 'tocka.gif'. Browser će parsirajući ovaj redak:

<CENTER><IMG SRC="tocka.gif" WIDTH=2 HEIGHT=200></CENTER> na sredini zaslona nacrtati okomitu crtu dužine 200, a debljine 2 točke. Na sličan način, ako u elementu BODY atributu BACKRGOUND umjesto heksadecimalnog koda RGB boje pridružimo ime datoteke u kojoj se nalazi neka slika, onda će ona pokriti pozadinu našeg HTML dokumenta. Ako je pritom ta slika obična dužina neke boje (ili boja) onda će se ona proširiti preko čitavog zaslona. Kao što se od točke dobila dužina, tako se od dužine dobije ploha.

Page 6: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 6

1.3. HTML – tablice, okviri i forme

Posebno važno područje HTML programiranja su tablice (engl. table), koje se definiraju ovim tag-ovima: .

• <TABLE> - glavni tag, s različitim atributima, kao što su veličina, okvir, širina i sl. • <TR> - (engl TableRow) definira horizontalni red od <TD> ćelija. • <TD> - (engl. TableData) definra pojedinačni blok ili ćeliju (engl. cell) u retku tablice.

Tako će:

<TABLE BORDER=3 WIDTH=100 HEIGHT=75> <TR> <TD ALIGN=CENTER>Prva tablica</TD> </TR> </TABLE>

načiniti tablicu samo s jednom ćelijom, širine 100 i visine 75 točaka koja će imati rub debljine 3 točke, a tekst 'Prva tablica' bit će pozicioniran na sredini. Osim ALIGN atributa koji se brine za horizontalno pozicioniranje, postoji i vertikalni (VALIGN) koji može poprimiti tri vrijednosti:

• TOP - pozicioniranje na vrhu • MIDDLE - centrirano po vertikali • BOTTOM - na dnu.

Od zanimljivih atributa <TABLE> tag-a treba svakako spomenuti CELLSPACING i CELLPADDING koji se brinu o razmaku između ruba tablice i ćelije, odnosno sadržaja u ćeliji. Slično za <TD> tag treba spomenuti 'ROWSPAN' odnosno 'COLSPAN' atribute kojima se povezuje nekoliko ćelija zajedno po retku, odnosno stupcu, pa se na taj način mogu postići bilo kakvi tablični oblici:

<TABLE BORDER=3>

<TR> <TD ROWSPAN=2>Martin</TD> <TD COLSPAN=2>Vera</TD> </TR> <TR> <TD>Josip</TD> <TD>Marija</TD> </TR>

</TABLE> nacrtat će tablicu:

Vera Martin Josip Marija

U tablicu je moguće osim teksta umetnuti sliku, link, listu, kao i novu tablicu. Ako se tablični okvir učini nevidljivim (BORDER=0), onda se mogu dobiti bilo kakvi, vrlo složeni oblici HTML dokumenta.

Page 7: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 7

Proširenje tabličnog prikaza na cjelokupni zaslon postiže se tag-ovim za okvire (engl. frame). Tako će odlomak:

<FRAMESET COLS="50%,50%"> <FRAME SRC="prvi.html"> <FRAME SRC="drugi.html"> </FRAMESET>

podijeliti zaslona na dvije vertikalne polovice (COLS od engl. columns - stupci, kolone) u kojima će se nezavisno prikazivati 'prvi.html', odnosno 'drugi.html' dokument. Želimo li okvire postaviti relativno s obzirom na rezoluciju zaslona, onda uz apsulutne veličine izražene u točkama koristimo i relativne s '*' ili već opsianim '%'. Tako će:

<FRAMESET COLS="50,*,2*">

podijeliti zaslona na tri vertikalna dijela, od kojih će prvi biti širok 50 točaka, a ostatak zaslona bit će podijeljen na dva stupca, od kojih će drugi biti dvostruko širi od prvog. Iako se na ovaj način mogu dobiti najrazličitiji oblici, uobičajeno je da se zaslon podijeli na tri dijela, od kojih je jedan na vrhu po cijeloj dužini zaslona, a ispod njega su dva stupca lijevi i desni. Lijevi stupac je obično uži i u njemu se nalaze linkovi na važne teme koje se pokazuju u desnom, glavnom prozoru s informacijom:

<FRAMESET ROWS="60,*"> <FRAME SRC="gore.html" NAME="vrh"> <FRAMESET COLS="160,*"> <FRAME SRC="lijevo.html" NAME="lijevi"> <FRAME SRC="desni.html" NAME="glavni"> </FRAMESET> </FRAMESET>

Primjetite kako je svakom okviru pridruženo i ime ('vrh', 'lijevi' i 'glavni'), kako bi se kontrola

iz jednog okvira lako premještala u drugi. To se postiže uz pomoć TARGET (engl. target: cilj ili meta) atributa već poznatog <A> tag-a. Tako će:

<A HREF="novi.html" TARGET="glavni"> Novi u glavni </A> klikom na 'Novi u glavni' otvoriti datoteku 'novi.html' u desnom okviru prethodno definiranog zaslona. Postoje i posebna TARGET odredišta:

_top - otvara link u cijelom browser-ovom prozoru _blank - otvara link u novom browser-ovom prozoru _self - otvara link u istom browser-ovom prozoru ili okviru _parent - otvara link u prethodniku (roditelju) trenutačnog okvira.

Obrasci ili forme predstavljaju u HTML jeziku posebno područje. Nikad ne dolaze

samostalno, već se naslanjaju na skripta: CGI, JavaScript, VBScript, ASP, PHP ili programske jezike orijentirane WEB aplikacijama: Java ili C# . Forme služe za prikupljanje podataka od strane korisnika, bilo preko upisa podataka, bilo preko izbora ponuđenih odgovora. Forma koristi <FORM> element unutar kojeg dolazi jedan ili više <INPUT> i/ili <SELECT> elemenata:

<FORM> - početak forme <INPUT> - traži informaciju na različite načine <SELECT> - izabire informaciju na različite načine </FORM> - završetak forme

Page 8: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 8

Element <INPUT> kao osnovni atribut ima tip 'TYPE' koji može biti:

TEXT - za upis informacije PASSWORD - za upis lozinke (umjesto utipkanih znakova pojavljuju se '*'). RADIO - okrugli gumb za izbor jednog od ponuđenih CHECKBOX - kvadratni gumb za izbor više (ili nijednog) od ponuđenih FILE - za slanje (engl. upload) datoteke preko WEB-a SUBMIT - za tvorbu gumba na čiji pritisak (klik mišem) se podaci uneseni

preko forme daju skriptama na obradu IMAGE - umjesto gumba za 'SUBMIT' koristi se izabrana slika RESET - poništavanje informacije upisane u obrasce HIDDEN - za prijenos nevidljive informacije u skipta za obradu.

Osim navedenih atributa element <TYPE> obično uključuje i atribut NAME kojemu se pridružuje neko ime. To ime će, kao ime varijable, koristiti skripta koja bude obrađivala informaciju unesenu preko forme. Pritom ime za jednu skupinu RADIO gumba je isto, a za skupinu CHECKBOX-a različito (razlog je u namjeni: 'jedan od' ili 'više od'). Za pretpostavljenu vrijednost koristi se atribut, odnosno svojstvo CHECKED (označeno).

Osim INPUT elementa postoji i <TEXTAREA> element koji omogućuje unos puno više informacije nego se to preko jednoredčanog obrasca može unijeti.

Page 9: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 9

Primjer 1.4.

FORME Opis <INPUT TYPE=TEXT NAME="ADDRESS" SIZE=30 MAXLENGTH=10>

Obrazac duljine 30 znakova, u koji možemo upisati maksimalno 10 znakova, koji se spremaju pod imenom 'ADRESA'

<INPUT TYPE=PASSWORD NAME="USER PASSWORD">

Otvara obrazac poput onog poviše (mogući su isti atributi) i utipkani niz sprema pod ime 'USER PASSWORD'. Za svaki utipkani znak vidi se '*'.

Tko je tvoj najbolji prijatelj?<BR> <INPUT TYPE=RADIO NAME="NP" VALUE="Pajo" CHECKED> Pajo Patak<BR> <INPUT TYPE=RADIO NAME="NP" VALUE="Šiljo"> Šiljo <BR> <INPUT TYPE=RADIO NAME="NP" VALUE="Miki"> Miki Maus<P>

Tko je tvoj najbolji prijatelj?

Pajo Patak

Šiljo

Miki Maus

Tko su tvoji prijatelji?<BR> <INPUT TYPE=CHECKBOX NAME="Pajo" VALUE="YES" CHECKED> Pajo Patak<BR> <INPUT TYPE=CHECKBOX NAME="Šiljo" VALUE="YES"> Šiljo <BR> <INPUT TYPE=CHECKBOX NAME="Miki" VALUE="YES" CHECKED> Miki Maus<BR> <INPUT TYPE=CHECKBOX NAME="Daba" VALUE="YES"> Hromi Daba<P>

Tko su tvoji prijatelji?

Pajo Patak

Šiljo

Miki Maus

Hromi Daba

<TEXTAREA NAME="Komentar" ROWS=3 COLS=30 WRAP=PHYSICAL> </TEXTAREA>

Područje za unos informacije bit će u tri reda i 30 stupaca, a tekst će se lomiti

<INPUT TYPE=SUBMIT VALUE="Šalji obrazac!"><BR> <INPUT TYPE=RESET VALUE="Briši"><P>

Dva gumba: jedan za slanje na kojem piše 'Šalji obrazac!', a drugi za brisanje obrasca na kojem piše 'Briši'

<INPUT TYPE=HIDDEN NAME="Skriveni_1" VALUE="inačica 03-04-02">

Skrivena informacija ' inačica 03-04-02' s imenom 'Skriveni_1'.

<INPUT TYPE=FILE NAME="mydat"> Priprema datoteke 'mydat' za prijenos preko WEB-a

Page 10: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 10

Element <SELECT> brine se za popis (preko podelementa <OPTION>) i izbor ponuđenih podataka u obliku padajuće izborne ponude (menu-a). <SELECT> ima argument 'NAME' gdje se upisuje ime menu-a (potrebno za obradu), a <OPTION> argument 'VALUE' kojoj se pridjeljuje vrijednost, obično povezana s onom koja se prijavljuje. Izborom jedne od ponuđenih vrijednosti, te klikom na 'SUBMIT' gumb, šalje se pripadna vrijednost spremljena pod 'VALUE'. Program za obradu će to adekvatno protumačiti i obraditi. Primjer 1.5.

FORME Opis <SELECT NAME="Najbolji prijatelj?"> <OPTION VALUE="Pajo">Pajo Patak <OPTION VALUE="Šiljo">Šiljo <OPTION VALUE="Miki" SELECTED>Miki <OPTION VALUE="Daba">Daba </SELECT>

U padajućoj izbornoj ponudi ponuđeni su: Pajo Patak', 'Šiljo', 'Miki' i 'Daba'. U menu-u se na početku pokazuje 'Miki' kao odabrana vrijednost.

<SELECT NAME="BEST FRIEND" SIZE=4> Širina izborne ponude definira se argumentom SIZE.

Page 11: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 11

1.4. HTML oznake (tag-ovi) i atributi

Osnovne HTML oznake Oznaka (tag) Opis <html> Definira HTML dokument <body> Definira tijelo dokumenta

<h1> to <h6> Definira zaglavlje 1 do zaglavlja 6

<p> Definira odlomak <br> Umeće prazan redak <hr> Definira horizontalnu crtu <!--> Definira komentar

Oznake formatiranja teksta Oznaka (tag) Opis <b> Definira podebljani (engl. bold) tekst <big> Definira veliki (engl. big) tekst <em> Definira naglašeni (engl. emphasized) tekst <i> Definira ukošeni (engl. italic) tekst <small> Definira mali tekstovni izgled slova <strong> Definira veći, snažni (engl. strong) tekst <sub> Definira podcrtani (engl. subscript) tekst <sup> Definira nadccrtani (engl. superscript) tekst <ins> Definira umetnuti (engl. insert) tekst <del> Definira izbrisani (engl. delete) tekst Računalu orjentirani tekst <code> Definira tekst računalnog izvornog kôda <kbd> Definira tekst tipkovnice <samp> Definira uzorak računalnog kôda <tt> Definira teletype (stari oblik pisača) tekst <var> Definira varijable <pre> Definira preformatirani tekst Citiranja, navođenja i definicijske oznake <abbr> Definira kratice <acronym> Definira akronime <address> Definira adresne elemente <bdo> Definira smjer teksta <blockquote> Definira dugo navođenje <q> Definira ratko navođenje <cite> Definira citiranje <dfn> Definira članove definicije

Page 12: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 12

Najčešće znakovne oznake Rezultat Opis Svojstveno ime Svojstveni broj praznina &nbsp; &#160; < manje nego &lt; &#60; > više nego &gt; &#62; & i &amp; &#38; " navodnik &quot; &#34; ' apostrof &apos; (ne radi u IE) &#39; ¢ cent &cent; &#162; £ funta &pound; &#163; ¥ jen &yen; &#165; § odlomak (section) &sect; &#167; © copyright &copy; &#169; ® registered trademark &reg; &#174; × množenje &times; &#215; ÷ dijeljenje &divide; &#247;

Oznake za svezu (engl. link) Oznaka (tag) Opis <a> Definira sidro (engl. anchor)

Oznake za okvire (engl. frame) Oznaka (tag) Opis <frameset> Definira skup okvira <frame> Definira okvir (podprozor) <noframes> Definira područje bez okvira, za preglednike koji ne podržavaju okvire <iframe> Definira podprozor (frame) u liniji (engl. inline sub window)

Oznake tablica Oznaka (tag) Opis <table> Definira tablicu <th> Definira zaglavlje tablice <tr> Definira redak tablice <td> Definira ćeliju tablice <caption> Definira table caption <colgroup> Definira skupinu stupaca tablice <col> Definira the attribute values for one or more stupaca in tablici <thead> Definira zaglavlje tablice <tbody> Definira tijelo tablice <tfoot> Definira podnožje (engl. footer) tablice

Page 13: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 13

Oznake listina, popisa Oznaka (tag) Opis <ol> Definira poredane (uređene) liste (hrv. listine, popis) <ul> Definira neporedane liste <li> Definira člana liste <dl> Definira definicijsku listu <dt> Definira definicijski član <dd> Definira definicijski opis

Oznake formi (obrazaca, formulara) Oznaka (tag) Opis <form> Definira formu za korisnikov ulaz (interakcijski obrazac) <input> Definira ulazno polje <tekstarea> Definira tekstovno područje (višelinijski tekstovni unos) <label> Definira oznaku (niz znakova, naslov) <fieldset> Definira postavno polje (za legendu) <legend> Definira oznaku (caption) za postavno polje <select> Definira izbornu listu (engl.drop-down box) <optgroup> Definira skupinu kontrola (engl. option group) <option> Definira opciju, mogućnost u listi <button> Definira gumb (engl. push button)

Oznake slike Oznaka (tag) Opis <img> Definira sliku <map> Definira slikovnu kartu <area> Definira clickable area inside image map Ova tablica pokazuje rezultat miješanja crvenog, zelenog i plavog (RGB: Red, Green, Blue) izvora svjetla:

Boja HEX boja RGB boja #000000 rgb(0,0,0) #FF0000 rgb(255,0,0) #00FF00 rgb(0,255,0) #0000FF rgb(0,0,255) #FFFF00 rgb(255,255,0) #00FFFF rgb(0,255,255) #FF00FF rgb(255,0,255) #C0C0C0 rgb(192,192,192) #FFFFFF rgb(255,255,255)

Page 14: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 14

Imena boja

Skupina imena boja podržana je od većine preglednika (engl. browser-a).

Primjedba: Samo 16 imena boja podržano je sa W3C HTML 4.0 standardom (aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow). Za sve ostale boje, potrebno je koristiti vrijednost HEX boja polja.

Boja HEX boja Ime boje #F0F8FF AliceBlue #FAEBD7 AntiqueWhite #7FFFD4 Aquamarine #000000 Black #0000FF Blue #8A2BE2 BlueViolet #A52A2A Brown

Tablica sigurnih Web boja

Budući da su sva računala već od 1980. godine podržavala barem 256 različitih boja, popis od 216 Web sigurnih boja preporučen je kao Web standard. Ova paleta od 216 boja zamišljena je da bi sva računala koja imaju barem osnovnu paletu boja, jednoznačno i bez obzira na platformu (računalo i operacijski sustav) prikazala istu boju.

000000 000033 000066 000099 0000CC 0000FF 003300 003333 003366 003399 0033CC 0033FF 006600 006633 006666 006699 0066CC 0066FF 009900 009933 009966 009999 0099CC 0099FF 00CC00 00CC33 00CC66 00CC99 00CCCC 00CCFF 00FF00 00FF33 00FF66 00FF99 00FFCC 00FFFF 330000 330033 330066 330099 3300CC 3300FF 333300 333333 333366 333399 3333CC 3333FF 336600 336633 336666 336699 3366CC 3366FF 339900 339933 339966 339999 3399CC 3399FF 33CC00 33CC33 33CC66 33CC99 33CCCC 33CCFF 33FF00 33FF33 33FF66 33FF99 33FFCC 33FFFF 660000 660033 660066 660099 6600CC 6600FF 663300 663333 663366 663399 6633CC 6633FF 666600 666633 666666 666699 6666CC 6666FF 669900 669933 669966 669999 6699CC 6699FF 66CC00 66CC33 66CC66 66CC99 66CCCC 66CCFF 66FF00 66FF33 66FF66 66FF99 66FFCC 66FFFF 990000 990033 990066 990099 9900CC 9900FF 993300 993333 993366 993399 9933CC 9933FF 996600 996633 996666 996699 9966CC 9966FF

Page 15: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 15

999900 999933 999966 999999 9999CC 9999FF 99CC00 99CC33 99CC66 99CC99 99CCCC 99CCFF 99FF00 99FF33 99FF66 99FF99 99FFCC 99FFFF CC0000 CC0033 CC0066 CC0099 CC00CC CC00FF CC3300 CC3333 CC3366 CC3399 CC33CC CC33FF CC6600 CC6633 CC6666 CC6699 CC66CC CC66FF CC9900 CC9933 CC9966 CC9999 CC99CC CC99FF CCCC00 CCCC33 CCCC66 CCCC99 CCCCCC CCCCFF CCFF00 CCFF33 CCFF66 CCFF99 CCFFCC CCFFFF FF0000 FF0033 FF0066 FF0099 FF00CC FF00FF FF3300 FF3333 FF3366 FF3399 FF33CC FF33FF FF6600 FF6633 FF6666 FF6699 FF66CC FF66FF FF9900 FF9933 FF9966 FF9999 FF99CC FF99FF FFCC00 FFCC33 FFCC66 FFCC99 FFCCCC FFCCFF FFFF00 FFFF33 FFFF66 FFFF99 FFFFCC FFFFFF

16 milijuna različitih boja

Kombinacija crvene, zelene i plave vrijednosti koja se mijenja od 0 do 255 daje ukupno oko16 milijuna boja (256 x 256 x 256). Zasloni računala mogu prikazati barem 16384 različitih boja.

Ime boje HEX boja Boja AliceBlue #F0F8FF AntiqueWhite #FAEBD7 Aqua #00FFFF Aquamarine #7FFFD4 Azure #F0FFFF Beige #F5F5DC Bisque #FFE4C4 Black #000000 BlanchedAlmond #FFEBCD Blue #0000FF BlueViolet #8A2BE2 Brown #A52A2A BurlyWood #DEB887 CadetBlue #5F9EA0 Chartreuse #7FFF00 Chocolate #D2691E Coral #FF7F50 CornflowerBlue #6495ED Cornsilk #FFF8DC Crimson #DC143C Cyan #00FFFF

Page 16: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 16

DarkBlue #00008B DarkCyan #008B8B DarkGoldenRod #B8860B DarkGray #A9A9A9 DarkGreen #006400 DarkKhaki #BDB76B DarkMagenta #8B008B DarkOliveGreen #556B2F Darkorange #FF8C00 DarkOrchid #9932CC DarkRed #8B0000 DarkSalmon #E9967A DarkSeaGreen #8FBC8F DarkSlateBlue #483D8B DarkSlateGray #2F4F4F DarkTurquoise #00CED1 DarkViolet #9400D3 DeepPink #FF1493 DeepSkyBlue #00BFFF DimGray #696969 DodgerBlue #1E90FF Feldspar #D19275 FireBrick #B22222 FloralWhite #FFFAF0 ForestGreen #228B22 Fuchsia #FF00FF Gainsboro #DCDCDC GhostWhite #F8F8FF Gold #FFD700 GoldenRod #DAA520 Gray #808080 Green #008000 GreenYellow #ADFF2F HoneyDew #F0FFF0 HotPink #FF69B4 IndianRed #CD5C5C Indigo #4B0082 Ivory #FFFFF0 Khaki #F0E68C Lavender #E6E6FA LavenderBlush #FFF0F5 LawnGreen #7CFC00 LemonChiffon #FFFACD

Page 17: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 17

LightBlue #ADD8E6 LightCoral #F08080 LightCyan #E0FFFF LightGoldenRodYellow #FAFAD2 LightGrey #D3D3D3 LightGreen #90EE90 LightPink #FFB6C1 LightSalmon #FFA07A LightSeaGreen #20B2AA LightSkyBlue #87CEFA LightSlateBlue #8470FF LightSlateGray #778899 LightSteelBlue #B0C4DE LightYellow #FFFFE0 Lime #00FF00 LimeGreen #32CD32 Linen #FAF0E6 Magenta #FF00FF Maroon #800000 MediumAquaMarine #66CDAA MediumBlue #0000CD MediumOrchid #BA55D3 MediumPurple #9370D8 MediumSeaGreen #3CB371 MediumSlateBlue #7B68EE MediumSpringGreen #00FA9A MediumTurquoise #48D1CC MediumVioletRed #C71585 MidnightBlue #191970 MintCream #F5FFFA MistyRose #FFE4E1 Moccasin #FFE4B5 NavajoWhite #FFDEAD Navy #000080 OldLace #FDF5E6 Olive #808000 OliveDrab #6B8E23 Orange #FFA500 OrangeRed #FF4500 Orchid #DA70D6 PaleGoldenRod #EEE8AA PaleGreen #98FB98 PaleTurquoise #AFEEEE

Page 18: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 18

PaleVioletRed #D87093 PapayaWhip #FFEFD5 PeachPuff #FFDAB9 Peru #CD853F Pink #FFC0CB Plum #DDA0DD PowderBlue #B0E0E6 Purple #800080 Red #FF0000 RosyBrown #BC8F8F RoyalBlue #4169E1 SaddleBrown #8B4513 Salmon #FA8072 SandyBrown #F4A460 SeaGreen #2E8B57 SeaShell #FFF5EE Sienna #A0522D Silver #C0C0C0 SkyBlue #87CEEB SlateBlue #6A5ACD SlateGray #708090 Snow #FFFAFA SpringGreen #00FF7F SteelBlue #4682B4 Tan #D2B48C Teal #008080 Thistle #D8BFD8 Tomato #FF6347 Turquoise #40E0D0 Violet #EE82EE VioletRed #D02090 Wheat #F5DEB3 White #FFFFFF WhiteSmoke #F5F5F5 Yellow #FFFF00 YellowGreen #9ACD32

Atributi fonta Atribut Primjer namjena size="number" size="2" Definira veličinu fonta size="+number" size="+1" Povećava veličinu fonta size="-number" size="-1" Smanjuje veličinu fonta face="face-name" face="Times" Definira ime fonta

Page 19: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

______________________________________________________________________________________ M. Essert: WEB programiranje 19

color="color-value" color="#eeff00" Definira boju fonta color="color-name" color="red" Definira boju fonta

Oznake stilova Oznaka (tag) Opis <style> Definira stil <link> Definira referencu <div> Definira specijalan odlomak u dokumentu <span> Definira specijalan odlomak u dokumentu

Oznake zaglavlja (engl. head) Oznaka (tag) Opis <head> Definira informaciju o dokumentu <title> Definira naslov dokumenta <base> Definira baznu URL adresu za sve sveze (engl. links) na stranici <link> Definira referencu, svezu na sadržaj <meta> Definira meta informaciju Oznaka (tag) Opis <!DOCTYPE> Definira tip dokumenta. Ovaj tag dolazi ispred <html> taga.

URL sheme Schemes Access file Datoteka (engl. file), lokalno na PCu ftp Datoteka na FTP serveru http Datoteka na World Wide Web Serveru gopher Datoteka na Gopher server news Usenet news skupina telnet Telnet veza WAIS Datoteka na WAIS serveru

Skriptne oznake Oznaka (tag) Opis <script> Definira skriptu <noscript> Definira tekst koji se ispisuje, ako se skripta ne može izvesti <object> Definira umetnuti objekt <param> Definira parametre objekta koji se u čitaju u radu skripte <applet> Kao <object>, za Java programe

Page 20: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 1

M. Essert: WEB PROGRAMIRANJE

2. predavanje

2. CSS • CSS je kratica za uzorke stilova (Cascading Style Sheets) • Stilom se definira kako prikazati HTML elemente • Stilovi se obično spremaju u stilske uzorke, predloške (Style Sheets) • Stilovi su dodani od inačice HTML 4.0 kako bi riješili probleme prikaza • Vanjski uzorci stilova (External Style Sheets) mogu uvelike olakšati posao • Vanjski uzorci stilova spremaju se u CSS datoteke • Višestruke definicije stilova umeću se (cascade) jedni u druge

2.1. Stilovi

Da bi se izbjegla poplava tag-ova načinjenih od strane tvrtki vodećih preglednika Netscape (danas Mozzila) i Internet Explorer-a, svjetski konzorcij World Wide Web Consortium (W3C) - neprofitna udruga, postavila je novi standard STYLES kao dodatak standardiziranom HTML 4.0. Od tada su i Netscape 4.0 i Internet Explorer 4.0 podržali ovaj pristup stilskih uzoraka -Cascading Style Sheets.

Stilovi u HTML 4.0 definirali su kako se HTML elementi prikazuju, poput font taga ili color atributa u HTML ver. 3.2. Stilovi se obično spremaju u datoteke izvan HTML dokumenta kojeg opisuju. Vanjski uzorci stilova omogućuju promjenu enable pojavljivanja i izgleda na Weba, jednostavnim editiranjem samostalnog CSS dokumenta. Na primjer, ako se želi promijeniti boja svih naslova na napisanoj Web stranici, potrebno je ne mijenjajući HTML dokument promijeniti samo jedan redak u CSS datoteci. To će itekako olakšati i ubrzati rad. Promjenom samo jednog stila automatski će se promijeniti mnogo elemenata na WEB stranici.

2.1.1. Višestruki stilovi mogu se gnijezditi jedni unutar drugih

Uzorci stilova dopuštaju specificiranje informacije na različite načine. Stilovi se mogu definirati unutar pojedinačnog HTML elementa, unutar <head> elementa od HTML stranice, ili u vanjskoj CSS datoteci. Ćak i višestruki vanjski uzorci stilova mogu se referencirati unutar pojedinačnog HTML dokumenta.

2.1.2. Kaskadni poredak

Općenito govoreći stilovi se mogu poredati kaskadno, unutar novog 'virtualnog' stilskog uzorka s pomoću sljedećih pravila, u kojima broj ćetiri ima najviši prioritet:

1. Pretpostavljena vrijednost preglednika (Browser default) 2. Vanjski stilski uzorak (External Style Sheet) 3. Nutarnji stilski uzorak (Internal Style Sheet), unutar <head> tag-a 4. Linijski stil (Inline Style), unutar nekog HTML elementa

Page 21: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 2

2.2. Sintaksa

CSS sintaksa se sastoji od tri dijela: selektora, svojstva i vrijednosti:

selector {property: value}

Selekor je obično HTML element/tag kojeg se želi definirati, svojstvo je atribut koji se želi promijeniti, a svako svojstvo može poprimiti vrijednost. Svojstvo i vrijednost su odijeljeni dvotočkom i obuhvaćeni vitičastim zagradama:

body {color: black}

Ako je vrijednost višestruki niz riječi, onda se na vrijednost obuhvaća navodnicima:

p {font-family: "sans serif"}

Primjedba: Ako se definira više vrijednosti, onda se svako svojstvo odjeljuje znakom ; (točka-zarez):

p {text-align:center;color:red}

Da bi se stilske definicije načinile što više čitljive, svako svojstvo se može definirati u posebnoj liniji, retku:

p { text-align: center; color: black; font-family: arial }

2.2.1. Skupljanje, grupiranje

Selektori se mogu skupiti, povezati, a međusobno se odjeljuju zarezom.

h1,h2,h3,h4,h5,h6 { color: green }

2.2.2. Atribut 'class'

Sa class atributom mogu se definirati različiti stilovi za isti HTML element. Pretpostavimo dva različita tipa odlomaka u dokumentu, jedan koji je desno, a drugi središnje postavljen (centriran udesno ili na sredinu). U tom slučaju stilovi preko atributne klase izgledali bi ovako:

p.right {text-align: right} p.center {text-align: center}

Page 22: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 3

Unutar HTML dokumenta, ovi bi se atributi pozvali ovako:

<p class="right"> This paragraph will be right-aligned. </p> <p class="center"> This paragraph will be center-aligned. </p>

Primjedba: Samo jedna klasa smije se definirati za pojedinačni HTML element!

U selektoru klasnog atributa moguće je izostaviti ime, kako bi se definirao stil koji će moći koristiti bilo koji HTML element kojemu se pridruži ta klasa:

.center {text-align: center}

Gornju klasu može koristiti i <h1> element, a također i <p> element kojima pridružimo klasu "center". To znači da će oba elementa (ili više njih, ako želimo) slijediti pravila postavljena u ".center" selektoru:

<h1 class="center"> This heading will be center-aligned </h1> <p class="center"> This paragraph will also be center-aligned. </p>

2.2.3. Atribut 'id'

Atribut 'id' može se definirati na dva načina: da djeluje na sve HTML elemente s pojedinačnim, definiranim, id-atributom ili da djeluje na samo jedan HTML element s pripadnim id-atributom.

<p id="intro"> This paragraph will be right-aligned. </p>

U ovom primjeru id-atribut će se primjeniti na sve HTML elemente sa id="intro":

#intro { font-size:110%; font-weight:bold; color:#0000ff; background-color:transparent }

Page 23: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 4

U ovom primjeru id-atribut će se primjeniti samo na p-elemente sa id="intro":

p#intro { font-size:110%; font-weight:bold; color:#0000ff; background-color:transparent }

2.2.4. CSS komentari

Moguće je umetnuti CSS komentare u CSS kako bi se protumačio napisani kod, što je vrlo korisno u naknadnim promjenama koda. Preglednik će ignorirati komentar. CSS komentar počonje sa "/*", i završava sa "*/", kao u primjeru:

/* This is a comment */ p { text-align: center; /* This is another comment */ color: black; font-family: arial }

Page 24: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 5

2.3. Kako umetnuti stilski uzorak

Kad preglednik (browser) učita stilski uzorak, načinit će formatiranje dokumenta prema pravilima zapisanim u uzorku. Postoje tri načina umetanja stilskog uzorka:

2.3.1. Vanjski stilski uzorak (external style sheet)

Vanjski stilski uzorak je idealan za primjenu stila na mnogo web stranica, tj. moguće je promijeniti izgled čitavog Web site-a mijenjajući samo jednu datoteku. Pritom svaka stranica WEB site-a mora se povezati sa stilskim uzorkom (vanjskom datotekom) koristeći <link> tag. Ovaj se tag nalazi unutar zaglavlja (head section):

<head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head>

Prema gornjem primjeru, preglednik će pročitati stilska pravila iz datoteke 'mystyle.css' i prema njima će formatirati HTML dokument.

Vanjski stilski uzorak može se napisati s pomoću bilo kojeg text editora (Notepad, UltraEdit i sl.). U slučaju pisanja datoteke s pomoću naprednih editora, npr. Wordpad ili WORD-a, treba paziti da se spremanje načini u jednostavnom, tekstovnom (ASCII) kodu. Naime, datoteke s dodatnim kontrolnim oznakama (npr. doc ili rtf format) neće se moći ispravno interpretirati unutar preglednika. Datoteka ne smije sadržavati html tag-ove. Stilski uzorak treba se spremiti sa .css proširenjem (extension):

hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")}

2.3.2. Nutarnji stilski uzorak (Internal Style Sheet)

Nutarnji stilski uzorak može se koristiti kad pojedini dokument ima jedinstveni stil. Nutarnji stil se definira u zaglavlju, koristeći <style> tag:

<head> <style type="text/css"> hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} </style> </head>

Preglednik će učitati stilske definicije i prema njima formatirati dokument.

Page 25: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 6

Primjedba: Preglednik obično ignorira nepoznate tagove. To znači da stari preglednici ne podržavaju stilove pa će ignorirati <style> tag, ali će nažalost sadržaj unutar <style> tag-ova prikazat će se na stranici. Moguće je spriječiti stare preglednike da prikazuju sadržaj, sakrivajući ga unutar HTML komentara:

<head> <style type="text/css"> <!-- hr {color: sienna} p {margin-left: 20px} body {background-image: url("images/back40.gif")} --> </style> </head>

2.3.3. Linijski stilovi (Inline Styles)

Linijski stil gubi mnogo od dosad opisanih CSS prednosti jer povezuje predstavljanje dokumenta s njegovim sadržajem. Zato treba ovu mogućnost koristiti samo rijetko, kad se primjenjuje na samo jedan ili par pojavaka elementa kojeg želimo posebno prikazati. Linijski stil koristi style atribut u odgovarajućem tag-u. Stilski atribut može sadržavati bilo koje CSS svojstvo. Slijedi primjer koji pokazuje kako promijeniti boju i lijevu marginu odlomka:

<p style="color: sienna; margin-left: 20px"> This is a paragraph </p>

2.3.4. Višestruki silski uzorci

Akoje neko svojstvo postavljneo za isti selektor u različitim stilskim uzorcima, naslijedit će se vrijednosti iz svih uzoraka, vodeći računa o prioritetu.

Na primjer, ako neki vanjski stilski uzorak ima ovakva svojstva za h3 selector:

h3 { color: red; text-align: left; font-size: 8pt }

Neka je i nutarnji stilski uzorak također definirao h3 selector:

h3 { text-align: right; font-size: 20pt }

Page 26: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 7

Ako stranica s nutarnjim stilskim uzorkom također povezuje vanjski stilski uzorak, svojstva za <h3> tag bit će:

color: red; text-align: right; font-size: 20pt

Boja je naslijeđena iz vanjskog stilskog uzorka, a poravnavanje teksta i veličina fonta zamijenjena je s nutarnjim stilom, jer on ima veći prioritet.

Page 27: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 8

2.4. CSS svojstva

Svojstva su opisana tablicama u kojima vrijede sljedeće kratice:

NN: Netscape (Mozzila), IE: Internet Explorer, W3C: Web Standard

CSS pozadina (background)

Background svojstvo upravlja pozadinskom bojom elementa, postavlja sliku u pozadinu, ponavlja pozadinsku sliku vertikalno i horizontalno, te pozicionira sliku na stranici.

Property Opis Vrijednosti NN IE W3C

background Kratica svojstva za postavljanje svih pozadinskih svojstava u jednoj deklaraciji .

background-color background-image background-repeat background-attachment background-position

6.0 4.0 CSS1

background-attachment Postavlja pozadinsku sliku kao stalnu (fixed) ili pomičnu (scroll) s obzirom na ostatak stranice.

scroll fixed

6.0 4.0 CSS1

background-color Postavlja pozadinsku boju elementa.

color-rgb color-hex color-name transparent

4.0 4.0 CSS1

background-image Postavlja sliku kao pozadinu. url none

4.0 4.0 CSS1

background-position Postavlja početnupoziciju pozadinske slike.

top left top center top right center left center center center right bottom left bottom center bottom right x-% y-% x-pos y-pos

6.0 4.0 CSS1

background-repeat Postavlja hoće li se i kako pozadinska slika ponavljati.

repeat repeat-x repeat-y no-repeat

4.0 4.0 CSS1

Page 28: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 9

CSS Text

Tekstovno svojstvo služi za upravljanje teksta koji se pojavljuje na stranici. Moguće je mijenjanje boje teksta, povećanje ili smanjivanje prostora između znakova u tekstu, poravnavanje teksta, ukrašavanje teksta, uvlačenje prve linije i drugo.

Svojstvo Opis Possible Vrijednosti NN IE W3C

color Postavlja boju teksta color 4.0 3.0 CSS1

direction Postavlja smjer ispisa teksta ltr rtl

CSS2

letter-spacing Povećava ili smanjuje razmak znakova u tekstu

normal length

6.0 4.0 CSS1

text-align Pravnava tekst u elementu left right center justify

4.0 4.0 CSS1

text-decoration Ukrašava tekst none underline overline line-through blink

4.0 4.0 CSS1

text-indent Uvlači prvu liniju teksta length %

4.0 4.0 CSS1

text-shadow none color length

text-transform Upravlja slovima u elementu none capitalize uppercase lowercase

4.0 4.0 CSS1

unicode-bidi normal embed bidi-override

5.0 CSS2

white-space Postavlja razmake unutar elementa

normal pre nowrap

4.0 5.5 CSS1

word-spacing Povećava ili smanjuje razmak između riječi

normal length

6.0 6.0 CSS1

CSS Fonts

Svojstva fonta određuju obitelj fonta (font family), težinu (boldness), veličinu (size) i stilove teksta. Fontovi se razlikuju po imenu definiranom u CSS1. Ako preglednik ne podržava font koji je specificiran, onda će koristiti pretpostavljeni font.

Page 29: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 10

Svojstvo Opis Vrijednosti NN IE W3C

font Kratica svojstva za postavljanje svih svojstava za font u jednoj deklaraciji

font-style font-variant font-weight font-size/line-height font-family caption icon menu message-box small-caption status-bar

4.0 4.0 CSS1

font-family Lista prioritetnih obiteljskih imena fontova i/ili generičkih obiteljskih imena fontova

family-name generic-family

4.0 3.0 CSS1

font-size Postavlja veličinu fonta xx-small x-small small medium large x-large xx-large smaller larger length %

4.0 3.0 CSS1

font-size-adjust Određuje odnosnu vrijednost (aspect value) za element koji će sačuvati x-visinu (x-height) od prvo izabranog fonta

none number

CSS2

font-stretch Zgušnjuje ili proširuje trenutačnu familiju fonta

normal wider narrower ultra-condensed extra-condensed condensed semi-condensed semi-expanded expanded extra-expanded ultra-expanded

CSS2

font-style Postavlja fontni stil normal italic oblique

4.0 4.0 CSS1

font-variant Prikazuje tekst u malim ili u normalnim slovima

normal small-caps

6.0 4.0 CSS1

font-weight Postavlja težinu fonta normal bold bolder lighter 100

4.0 4.0 CSS1

Page 30: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 11

200 300 400 500 600 700 800 900

CSS okviri, međe (borders)

Svojstva okvira dopuštaju definiranje stila, boje i širine okvira elemenata stranice. U HTML-u koriste se tablice da bi se stvorili okviri oko teksta, ali sa CSS svojstvima okvira moguće je stvoriti vrlo lijepe efekte koji se mogu primijeniti na bilo koji element.

Svojstvo Opis Vrijednosti NN IE W3C

border Kratica svojstva za postavljanje svih svojstava za četiri dijela okvira (gore, dolje, lijevo i desno) u jednoj deklaraciji

border-width border-style border-color

4.0 4.0 CSS1

border-bottom Kratica svojstva za postavljanje svih svojstava donjeg dijela okvira u jednoj deklaraciji

border-bottom-width border-style border-color

6.0 4.0 CSS1

border-bottom-color Postavlja boju donjeg dijela okvira

border-color 6.0 4.0 CSS2

border-bottom-style Postavlja stil donjeg dijela okvira

border-style 6.0 4.0 CSS2

border-bottom-width Postavlja širinu donjeg dijela okvira

thin medium thick length

4.0 4.0 CSS1

border-color Postavlja boju četiri dijela okvira i to od zajedničke do pojedinačnih

color 6.0 4.0 CSS1

border-left Kratica svojstva za postavljanje svih svojstava lijevog dijela okvira u jednoj deklaraciji

border-left-width border-style border-color

6.0 4.0 CSS1

border-left-color Postavlja boju lijevog dijela okvira

border-color 6.0 4.0 CSS2

border-left-style Postavlja stil lijevog dijela okvira

border-style 6.0 4.0 CSS2

border-left-width Postavlja širinu lijevog dijela okvira

thin medium thick length

4.0 4.0 CSS1

border-right Kratica svojstva za postavljanje border-right-width 6.0 4.0 CSS1

Page 31: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 12

svih svojstava desnog dijela okvira u jednoj deklaraciji

border-style border-color

border-right-color Postavlja boju desnog dijela okvira

border-color 6.0 4.0 CSS2

border-right-style Postavlja stil desnog dijela okvira

border-style 6.0 4.0 CSS2

border-right-width Postavlja širinu desnog dijela okvira

thin medium thick length

4.0 4.0 CSS1

border-style Postavlja stil za četiri okvirne linije, od svih zajedno do pojedinačne

none hidden dotted dashed solid double groove ridge inset outset

6.0 4.0 CSS1

border-top Kratica svojstva za postavljanje svih svojstava gornjeg dijela okvira u jednoj deklaraciji

border-top-width border-style border-color

6.0 4.0 CSS1

border-top-color Postavlja boju gornjeg dijela okvira

border-color 6.0 4.0 CSS2

border-top-style Postavlja stil gornjeg dijela okvira

border-style 6.0 4.0 CSS2

border-top-width Postavlja širinu gornjeg dijela okvira

thin medium thick length

4.0 4.0 CSS1

border-width Postavlja širinu za četiri okvirne linije, od svih zajedno do pojedinačne

thin medium thick length

4.0 4.0 CSS1

CSS Margine

Svojstvo margina (Margin properties) definira prostor oko elementa. Moguće je uzeti i negativne vrijednosti kako bi se sadržaj preklapao. Vrh (top), desno (right), dolje (bottom) i lijevo (left) može se mijenjati za svako pojedinačno svojstvo određene margine. Kartica margin može se također iskoristiti za promjenu svih margina odjednom.

Svojstvo Opis Vrijednosti NN IE W3C

margin Kratica svojstva za postavljanje svojstava margina u jednoj deklaraciji

margin-top margin-right margin-bottom margin-left

4.0 4.0 CSS1

Page 32: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 13

margin-bottom Postavlja donju marginu elementa

auto length %

4.0 4.0 CSS1

margin-left Postavlja lijevu marginu elementa

auto length %

4.0 3.0 CSS1

margin-right Postavlja desnu marginu elementa

auto length %

4.0 3.0 CSS1

margin-top Postavlja gornju marginu elementa

auto length %

4.0 3.0 CSS1

CSS podstavljanje (padding)

Svojstvo podstavljanja (Padding properties) definira razmak između okvira elementa i njegovog sadržaja. Negativne vrijednosti nisu dopuštene. Gornja, desna, donja i lijeva podstava mogu se nezavisno mijenjati, koristeći odvojena svojstva. Kratica 'padding' može upravljati višestrukim stranama odjednom.

Svojstvo Opis Vrijednosti NN IE W3C

padding Kratica svojstva za postavljanje svih svojstava podstave u jednoj deklaraciji

padding-top padding-right padding-bottom padding-left

4.0 4.0 CSS1

padding-bottom Postavlja donju podstavu elementa

length %

4.0 4.0 CSS1

padding-left Postavlja lijevu podstavu elementa

length %

4.0 4.0 CSS1

padding-right Postavlja desnu podstavu elementa

length %

4.0 4.0 CSS1

padding-top Postavlja gornju podstavu elementa

length %

4.0 4.0 CSS1

Svojstvo lista (List Properties):

Svojstvo Opis Vrijednosti NN IE W3C

list-style Kratica svojstva za postavljanje svih svojstava za liste u jednoj deklaraciji

list-style-type list-style-position list-style-image

6.0 4.0 CSS1

list-style-image Postavlja sliku kao marker člana liste

none url

6.0 4.0 CSS1

list-style-position Postavlja marker člana liste u listi

inside outside

6.0 4.0 CSS1

Page 33: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 14

list-style-type Postavlja tip markera za članove liste

none disc circle square decimal decimal-leading-zero lower-roman upper-roman lower-alpha upper-alpha lower-greek lower-latin upper-latin hebrew armenian georgian cjk-ideographic hiragana katakana hiragana-iroha katakana-iroha

4.0 4.0 CSS1

marker-offset auto length

CSS2

Svojstva dimenzije (Dimension Properties):

Svojstvo Opis Vrijednosti NN IE W3C

height Postavlja visinu elemente auto length %

6.0 4.0 CSS1

line-height Postavlja razmak između linija normal number length %

4.0 4.0 CSS1

max-height Postavlja maksimalnu visinu elementa

none length %

CSS2

max-width Postavlja maksimalnu širinu elementa

none length %

CSS2

min-height Postavlja minimalnu visinu elementa

length %

CSS2

min-width Postavlja minimalnu širinu elementa

length %

CSS2

width Postavlja širinu elementa auto % length

4.0 4.0 CSS1

Page 34: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 15

Klasifikacijska svojstva (classification properties):

Svojstvo Opis Vrijednosti NN IE W3C

clear Postavlja strane elemenata gdje plivajući (floating) elementi nisu dopušteni

left right both none

4.0 4.0 CSS1

cursor Specificira tip kursora koji će se prikazati

url auto crosshair default pointer move e-resize ne-resize nw-resize n-resize se-resize sw-resize s-resize w-resize text wait help

6.0 4.0 CSS2

display Postavlja kako i ako uopće će se neki element prikazati

none inline block list-item run-in compact marker table inline-table table-row-group table-header-group table-footer-group table-row table-column-group table-column table-cell table-caption

4.0 4.0 CSS1

float Postavlja gdje će se slika ili tekst pojaviti na drugom elementu

left right none

4.0 4.0 CSS1

position Postavlja element u statičku, relativnu, apsolutnu ili stalnu, fiksnu poziciju

static relative absolute fixed

4.0 4.0 CSS2

visibility Postavlja vrijednost hoće li element biti vidljiv ili neće

visible hidden collapse

6.0 4.0 CSS2

Page 35: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 16

CSS pozicioniranje (positioning)

Svojstva pozicioniranja dopuštaju definiranje lijeve, desne, gornje i donje pozicije elementa. Ona također definiraju oblik elementa, postavljanje jednog elementa iza ili ispred drugog i određuju što će se dogoditi kad je sadržaj elementare velik za pripravljeno područje.

Svojstvo Opis Vrijednosti NN IE W3C

bottom Postavlja koliko je donji rub elementa iznad ili ispod donjeg ruba drugog elementa.

auto % length

6.0 5.0 CSS2

clip Postavlja oblik elementa. Element se uvlači u ovaj oblik i prikazuje

shape auto

6.0 4.0 CSS2

left Postavlja koliko je lijevi rub elementa desno ili lijevo od lijevog ruba drugog, roditeljskog, elementa.

auto % length

4.0 4.0 CSS2

overflow Postavlja što se događa ako sadržaj elementa premašuje zadano područje

visible hidden scroll auto

6.0 4.0 CSS2

right Postavlja koliko je desni rub elementa desno ili lijevo od desnog ruba drugog, roditeljskog, elementa

auto % length

5.0 CSS2

top Postavlja koliko je gornji rub elementa ispod ili iznad od gornjeg ruba drugog, roditeljskog, elementa

auto % length

4.0 4.0 CSS2

vertical-align Postavlja vertikalno podešavanje elementa

baseline sub super top text-top middle bottom text-bottom length %

4.0 4.0 CSS1

z-index Postavlja složajni raspored elementa

auto number

6.0 4.0 CSS2

Page 36: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 17

2.5. Pseudo klase

Sintaksa pseudo-klasa izgleda ovako:

selector:pseudo-class {property: value}

CSS klase mogu se također koristiti sa pseudo klasama:

selector.class:pseudo-class {property: value}

2.5.1. Pseudo klase sidra (anchor)

Linkili sveza koji je aktivan, posjećen, neposjećen ili kad se kazalo miša nalazi nad linkom, može se s pomoću CSS-a prikazati na različite načine:

a:link {color: #FF0000} /* unvisited link */ a:visited {color: #00FF00} /* visited link */ a:hover {color: #FF00FF} /* mouse over link */ a:active {color: #0000FF} /* selected link */

Primjdbe:

o 'a:hover' MORA doći iza 'a:link' i 'a:visited' u CSS definiciji da bi bio djelotvoran!! o 'a:active' MORA doći iza 'a:hover ' u CSS definiciji da bi bio djelotvoran!! o Pseudo-class imena nisu ovisna o velikim i malim slovima (not case sensitive!).

2.5.2. Pseudo-klase i CSS klase

Pseudo-klase mogu se kombinirati sa CSS klasama:

a.red:visited {color: #FF0000} <a class="red" href="css_syntax.asp">CSS Syntax</a>

Ako je link u gornjem primjeru posjećen, bit će prikazan u crvenoj boji.

2.5.3. CSS2 – pseudo klasa ':first-child'

Pseudo klasa ':first-child' podudara se s definiranim elementom koji je prvo dijete (first child) od nekog drugog elementa.

U ovom primjeru selektor pronalazi bilo koji 'p' element koji je prvo dijete od 'div' elementa, te uvlači prvi odlomak unutar 'div' elementa:

Page 37: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 18

div:first-child p { text-indent:25px }

Ovaj selektor će pronaći prvi odlomak unutar 'div' elementa u sljedećem HTML dokumentu:

<div> <p> First paragraph in div. This paragraph will be indented. </p> <p> Second paragraph in div. This paragraph will not be indented. </p> </div>

ali neće pronaći odlomak u ovom HTML dokumentu:

<div> <h1>Header</h1> <p> The first paragraph inside the div. This paragraph will not be indented. </p> </div> U ovom primjeru selekotr pronalazi bilo koji 'em' element koji je prvo dijete od 'p' elementa, te postavlja težinu fonta na 'bold' za prvi 'em' element unutar 'p' elementa: p:first-child em { font-weight:bold } Na primjer, element 'em' u donjem HTML dokumentu je prvo dijete odlomka: <p>I am a <em>strong</em> man.</p> U ovom primjeru, selektor pronalazi bilo koji element koji je prvo dijete bilo kojeg elementa i postavlja tekstovno ukrašavanje u ništa (none), tj. ukida ukrašavanje teksta: a:first-child { text-decoration:none }

Page 38: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 19

Na primjer, prvi 'a' u HTML dokumentu ispod je prvo dijete odlomka i neće biti podcrtano. Ali drugo 'a' u odlomku nije prvo dijete, pa ća odlomak biti podvučen. <p> Visit <a href="http://www.w3schools.com">W3Schools</a> and learn CSS! Visit <a href="http://www.w3schools.com">W3Schools</a> and learn HTML! </p>

2.5.4. CSS2 – pseudo klasa ':lang'

Pseudo-klasa ':lang' dopušta autoru specificiranje jezika koji će se koristiti u dokumentu ili u određenom elementu.

U primjeru ispod, pravilo postavlja tip oznaka za navodnike za HTML dokument koji je pisan u Norveškom jeziku:

html:lang(no) { quotes: '« ' ' »' }

U idućem primjeru pravilo postavlja tip oznaka za navodnike u označenom (blockquote)elementu koji je pisan u Norveškom jeziku:

blockquote:lang(no) { quotes: '« ' ' »' }

2.5.5. Popis pseudo klasa:

Pseudo-classes NN IE W3C Purpose

active 4.0 CSS1 Adds special style to a selected link

hover 4.0 CSS1 Adds special style to a link when you mouse over it

link 4.0 3.0 CSS1 Adds special style to an unvisited link

visited 4.0 3.0 CSS1 Adds special style to a visited link

:first-child CSS2 Adds special style to an element that is the first child of some other element

:lang CSS2 Allows the author to specify a language to use in a specified element

Page 39: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 20

2.6. Pseudo-elementi

Sintaksa pseudo-elementa:

selector:pseudo-element {property: value}

CSS klase mogu se također koristiti sa pseudo-elementima:

selector.class:pseudo-element {property: value}

2.6.1. Pseudo-element prve linije (first-line pseudo-element)

"First-line" pseudo-element se koristi kad se želi dodati poseban stil prvoj liniji teksta u selektoru:

p {font-size: 12pt} p:first-line {color: #0000FF; font-variant: small-caps} <p>Some text that ends up on two or more lines</p>

Izlaz bi mogao ovako izgledati:

some text that ends up on two or more lines

Gdje će preglednik presjeći liniju ovisi o veličini preglednikovog prozora.

Primjedba: "first-line" pseudo-element može se korisitit samo u naredbama blokovne razine (npr. odlomci, tekst i sl.).

Sljedeća svojstva primjenjuju se na "first-line" pseudo-element:

• font properties • color properties • background properties • word-spacing • letter-spacing • text-decoration • vertical-align • text-transform • line-height • clear

2.6.2. Pseudo-element prvog slova (first-letter pseudo-element)

"First-letter" pseudo-element se koristi da se dade poseban stil prvom slovu teksta u selektoru:

Page 40: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 21

p {font-size: 12pt} p:first-letter {font-size: 200%; float: left} <p>The first words of an article.</p>

Izlaz bi mogao izgledati ovako:

___ | he first | words of an article.

Primjedba: "first-letter" pseudo-element može se korisitit samo u naredbama blokovne razine (npr. odlomci, tekst i sl.).

Sljedeća svojstva primjenjuju se na "first-letter" pseudo-element:

• font properties • color properties • background properties • margin properties • padding properties • border properties • text-decoration • vertical-align (only if 'float' is 'none') • text-transform • line-height • float • clear

2.6.3. Pseudo-elementi i CSS klase

Pseudo-elementi mogu se kombinirati sa CSS klasama:

p.article:first-letter {color: #FF0000} <p class="article">A paragraph in an article</p>

Ovaj gornji primjer načinit će crvenim prvo slovo svih odlomaka sa klasom class="article".

2.6.4. Višestruki pseudo-elementi

Više pseudo-elemenata može se međusobno kombinirati:

p {font-size: 12pt} p:first-letter {color: #FF0000; font-size: 200%} p:first-line {color: #0000FF} <p>The first words of an article</p>

Page 41: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 22

Izlaz bi mogao izgledati ovako:

___ | he first | words of an article.

U gornjem primjeru prvo slovo odlomka bit će crveno s fontom veličine 24pt. Ostatak prve linije bit će blave boje, dok će ostatak odlomka biti pretpostavljene boje.

2.6.5. CSS2 – pseudo element ' :before'

":before" pseudo-element može se koristiti za umetanje nekog sadržaja ispred nekog elementa.

Stil ispod će odsvirati 'beep.wav' prije svakog pojavka naslova <h1> elementa.

h1:before { content: url(beep.wav) }

2.6.6. CSS2 - pseudo element ':after'

":after" pseudo-element može se koristiti za umetanje nekog sadržaja iza nekog elementa.

Stil ispod će odsvirati 'beep.wav' nakon svakog pojavka naslova <h1> elementa.

h1:after { content: url(beep.wav) }

2.6.7. Popis pseudo elemenata:

Pseudo-elementi NN IE W3C Namjena

first-letter 5.5 CSS1 Dodaje specijalan stil prvom slovu teksta

first-line 5.5 CSS1 Dodaje specijalan stil prvoj liniji teksta

:before CSS2 Umeće neki sadržaj ispred elementa.

:after CSS2 Umeće neki sadržaj iza elementa.

Page 42: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 23

2.7. Medijski tipovi (media types)

Medijski tipovi dopuštaju definiranje izgleda dokumenta kako će biti prikazan u različitim medijima. Dokument će se različito prikazati na zaslonu, papiru, projektoru i sl.

Neka CSS svojstva su projektirana samo za određene medije. Tako su, na primjer, zvučna "voice-family" svojstva projektirana za 'aural user agents'. Neka druga svojstva mogu se koristiti u različitim tipovima medija. Na primjer, "font-size" svojstvo može se koristitii za zaslone i za print medije, ali možda s različitim vrijednostima. Dokument obično treba veću veličinu fonta za prikaz na zaslonu nego za ispis na papiru. Slično se sans-serif fontovi lakše čitaju na zaslonu, dok se serif fontovi lakše čitaju na papiru.

2.7.1. @media pravilo

@media pravilo dopušta različita stilska pravila za različite medije u istom stilskom uzorku. Stil u primjeru ispod govori pregledniku da prikaže 14 točkica (pixels) u Verdana fontu na zaslonu, ali ako se ispisuje na papir, onda neka to bude 10 točkica u Times fontu. Dobro je zamjetiti kako je težina fonta stavljena na 'bold' i za zaslon i za papir.

<html> <head> <style> @media screen { p.test {font-family:verdana,sans-serif; font-size:14px} } @media print { p.test {font-family:times,serif; font-size:10px} } @media screen,print { p.test {font-weight:bold} } </style> </head> <body> .... </body> </html>

Page 43: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 24

2.7.2. Different Media Types

Primjedba: imena media tipova nisu ovisna o veličini slova (not case-sensitive).

Media tip Opis NN IE

all Korisi se za sve uređaje medijskih tipova 4.0

aural Korisi se za sinettizatore glasa i zvuka

braille Korisi se za braillove dodirne uređaje (za slijepe osobe)

embossed Korisi se za braillove printere (za slijepe osobe)

handheld Korisi se za male ili ručne naprave

print Korisi se za printere (štampače) 4.0

projection Korisi se za projekcijske prezentacije, kao što su slajdovi

screen Korisi se za računalne zaslone 4.0

tty Korisi se za medije koje koriste znakovni raster, kao što su teleprinteri i terminali

tv Korisi se za naprave televizijskog tipa

Page 44: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

M. Essert: WEB PROGRAMIRANJE 3. predavanje

3. XML

3.1. Standardizacija Interneta Engleska riječ 'site' predstavlja kraticu za mjesto gdje se pohranjuje adekvatno pripravljena

informacija (web stranice) za javni (Internet) ili ograničeni, lokalni (Intranet) pristup. Ako se stranice u fazi testiranja objavljuju na računalu koje nije spojeno na mrežu, ali ima server, onda se takvo mjesto zove local site, za razliku od web site-a ili remote (udaljenog) site-a.

Protokol za razmjenu dokumenata između računala u mreži razvijen je 80-tih godina u CERN-u (Conseil Europèene pour la Recherche Nuclèaire), europskoj organizaciji za nuklearni razvitak. Taj TCP/IP protokol, postat će poznat kao HTTP (Hypertext Transfer Protocol) protokol, jer će prenositi dokumente kodirane u HTML (HyperText Markup Language) jeziku između računala povezanih u jedinstvenu svjetsku mrežu zvanu Internet. Među zaslužnim pojedinincima za njegov razvoj spominju se Doug Engelbart - 1960: "NLS - oNLine System" s preglednikom i e-mailom, Ted Nelson - 1965: uvodi pojam "hypertext"-a za prijenos informacije među računalima, te Berners-Lee - 1980: "Enquire-Within-Upon-Everything" s koncepcijom svjetskog WEB-a i univerzalnog adresiranja dokumenata preko URL-a (Universal Resource Locator).

Ideja jezika za označavanje podataka je da se korisni sadržaj uokviri odgovarajućim oznakama. Oznake bi trebale biti jednostavno čitljive i razumljive i čovjeku koji ih gleda u bilo kojem programu za uređivanje teksta, a i računalni programi koji parsiraju taj sadržaj trebali bi moći na jednostavan način izvaditi određene podatke.

3.1.1. Generalized Markup Language (GML) 60ih godina 20. stoljeća IBM je imao velik problem s ogromnom količinom različite tehničke

dokumentacije koja se za svaku posebnu namjenu morala prepisivati i nanovo uređivati za što su trošili ogromnu količinu ljudskih resursa. Ideja do koje su došli bila je prvi šire korišteni jezik za označavanje podataka. Korisni sadržaj uokvirio bi se određenim oznakama koje ce ga opisivati. Nakon što se to učini, za određene namjene jednostavno će se povlačiti sadržaji određenog tipa. GML oznake opisivale su određene dijelove dokumenta kao npr. poglavlja, važna poglavlja, manje važna poglavlja, liste, tablice itd. Korištenjem GMLa iz istog sadržaja mogla se dobiti ispisanu različita dokumentacija, tehnička, ali i korisnička.

3.1.2. Standard Generalized Markup Language (SGML)

GML se pokazao kao uspješan proizvod tako da je razvoj u tom smjeru nastavljen. 80ih godina 20. stoljeća American National Standards Institute (ANSI) radio je na razvoju standarda jezika za označavanje podataka. Zahtjevi kojima su autori pokušali zadovoljiti bili su da nastali proizvod bude dovoljno formaliziran da može jamčiti vjernost dokumenta izvorniku, dovoljno strukturiran da se može nositi s kompleksnim dokumentima i dovoljno otvoren da može podržati rukovanje velikim količinama podataka. Nastali jezik nazvan je Standard Generalized Markup Language (SGML) i 1986. objavljen je kao međunarodna norma ISO 8879. Problem SGMLa, kao i mnogih sličnih proizvoda koji su razvijani na takav način, od strane organizacija za standardizaciju je što je bio golem. Autori su pokušali pokriti svaku moguću primjenu jezika i nastali proizvod je bio opširan, složen za korištenje te zbog toga skup u upotrebi. Zbog tih osobina SGML nije bio jako raširen u praksi i korisnici SGMLa bile su uglavnom velike kompanije, državne službe i znanstvene institucije.

Page 45: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 2

3.1.3. HyperText Markup Language (HTML)

HTML je nastao kada je Tim Berneres Lee izabrao jedan mali skup oznaka iz SGML skupa koji je korišten na CERNu i primjenio ih na formatiranje dokumenata. HTML je imao mali skup oznaka koje su opisivale osnovne dijelove dokumenta. Programi koji su tumačili strukturu takvih dokumenata bili su HTML preglednici.

3.1.4. Extensible Markup Language (XML)

Problem HTMLa je što ima mali skup zadanih oznaka. Kada se želi proširiti s novim oznakama mora se mijenjati standard što ga čini nepraktičnim. Osim toga, iako je HTML izvorno zamišljen kao jezik za opisivanje sadržaja, zbog potreba i želja tržišta te razvoja pregledničkih tehnologija (naročito za vremena "pregledničkog rata" između Microsofta i Netscapea proširivan je nestandardnim oznakama koje su prvenstveno služile za formatiranje sadržaja u smislu njegovog prikaza u internet pregledniku. Za opisivanje sadržaja SGML je bolji izbor od HTMLa, ali ima veliki nedostatak što je preglomazan za korištenje i izvršavanje unutar internet preglednika. Zbog toga je trebalo kreirati jezik koji će s jedne strane biti dovoljno malen i jednostavan da se može izvršavati unutar internet preglednika, a s druge strane dovoljno prilagodljiv da se može proširivati korisničkim oznakama. Posla izrade specifikacije takvog jezika prihvatio se početkom 90ih godina 20. stoljeća World Wide Web Consortium. Željeli su razviti jezik koji će objediniti jednostavnost HTMLa i izražajnu snagu SGMLa. Na početku su odredili su 10 ciljeva kojih su se u razvoju trudili pridržavati:

1. XML mora biti izravno primjenjiv preko interneta. 2. XML mora podržavati širok spektar primjena. 3. XML mora biti kompatibilan s SGML-om. 4. Mora biti lako pisati programe koji procesiraju (parsiraju) XML dokumente. 5. Broj slobodnih značajki u XML-u mora biti apsolutno minimalan, u idealnom slučaju

jednak nuli. 6. XML dokumenti moraju biti čitljivi ljudima, te u razumnoj mjeri jednostavni 7. Standard mora biti specificiran što prije 8. Dizajn XML-a mora biti formalan i precizan 9. Kreiranje XML dokumenata mora biti jednostavno 10. Sažetost kod označavanja dokumenta XML-om je od minimalnog značaja.

World Wide Web Consortium je 10. veljače 1998. objavio prvu verziju XML preporuke. Danas je XML jezik vrlo raširen i koristi se za različite namjene: odvajanje podataka od prezentacije, razmjenu podataka, pohranu podataka, povećavanje dostupnosti podataka i izradu novih specijaliziranih jezika za označavanje. XML je standardizirani jezik i za njegovu standardizaciju brine se World Wide Web Consortium.

3.2. Elementi i atributi XML dokument sastoji se od jednog ili više elemenata. Element se sastoji od niti jednog, jednog

ili više znakova informacije omeđenog(-ih) s dvije oznake, engleski tag-a. Tag se sastoji od imena tag-a omeđenog znakovima manje '<' i više '>'. Ime tag-a mora početi slovom, podvučenom crticom '_' ili dvotočkom ':', nakon čega može slijediti jedan više slova, znamenki i posebnih znakova (povlake '-', podvlake '_', točke '.' ili dvotočke ':'). Napomena: jednostruki navodnici (')ovdje služe samo zato da se znak odvoji od opisa, te ne čine dio znaka. U imenu tag-a ne smije se pojavljivati niz 'xml' u bilo kojem rasporedu velikih ili malih slova.

Početni i završni (dočetni) tag XML elementa imaju (identički) jednako ime, s tim što završni tag ima desnu kosu crtu '/' ispred svog imena. Ako element nema niti jednog znaka informacije, onda se dva tag-a mogu sažeti u jedan, koji ispred svoje zadnje međe '>' ima desnu kosu crtu '/'. Element može imati jedan ili više atributa koji se dopisuju nakon imena prvog tag-a, a služe za dodatni opis informacije

Page 46: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 3

elementa. Atribut ima ime kojem je znakom jednakosti '=' pridružena neka vrijednost omeđena dvostrukim navodnicima ' " '. Unutar tag-a mogu se slobodno koristiti prazna mjesta (razmaci , tabulatori ili novi redovi), pa se obično tag koji ima više atributa zbog bolje preglednosti piše u nekoliko redaka.

Korištenje posebnih znakova i onih koji se koriste kao međe tag-ova unutar informacije koju tag-ovi omeđuju postiže se uporabom znaka '&' na početku i znaka ';' na kraju opisne kratice. Tako na primjer znak '<' u XML informaciji pišemo kao '&lt;' (dakako, bez jednostrukih navodnika), dok za '>' imamo ekvivlanetno '&gt;', za jednostruki navodnik (') pišemo '&apos;', dvostruke navodnike zamjenjujemo sa '&quote;', a znak '&' sa '&amp;'. Posebni znakovi umeću se u XML informaciju preko njihovog heksadecimalnog ekvivalenta kojem prethode znakovi '#x', npr. umjesto znaka © koji označuje 'Copyright' pišemo '&#xA9', gdje je heksadecimalni broj 'A9' ekvivalent ASCII znaka ©. Primjer 3.1

Primjer XML elementa Opis <naslov> Uvod u XML </naslov> Ispravan XML element, s tagom imena 'naslov' i

informacijom 'Uvod u XML' <nema_informacije></nema_informacije>

ili <nema_informacije/>

Ispravan XML element bez informacije

<cijena tečaj="kn"> 102.45 </cijena> Ispravan XML element s atributom 'tečaj' i pridružene vrijednosti 'kn'

<poruka broj="10" datum="2002-06-30" od="Đuro Sudeta" > Kućice u cvijeću , &#xA9; by Zipm </poruka>

Ispravan XML element s više atributa formatiranih zbog bolje preglednosti; u informaciji poseban znak ©

<adresa> Ilica 512 Neispravan XML element: nedostaje dočetni tag

<moja boja> Ljubičasta </moja boja>

Neispravan XML element: ime tag-a ne smije imati razmak

<ime> Petar Hektorović </Ime> Neispravan XML element: XML je osjetljiv na velika i mala slova u imenu tagova

<primjer_xmL-a slova="mala-i-velika" brojke=da> Sintaktički pogrešan primjer 123 <primjer_xmL-a>

Neispravan XML element: u imenu tag-a ne smije biti niz 'xml', vrijednost atributa treba biti unutar dvostrukih navodnika, dočetni tag mora ispred imena imati '/'

XML elementi se mogu gnijezditi (engl. nested), što znači da unutar jednog XML elementa može

postojati jedan ili više drugih XML elemenata, od kojih svaki može sadržavati nove elemente. Na taj način XML dokument predstavlja stablenu (engl. tree) strukturu elemenata. Temeljni element u kojem se nalaze svi ostali zove se korjenski (engl. root) element. U takvoj strukturi XML elementi se često zovu i čvorovi (engl. nodes), a njihov međusobni odnos izražava se pojmovima iz obiteljskog stabla: roditelj (engl. parent), dijete (engl. children), unuci (engl. grandchildren) i sl. ili se koriste pojmovi prethodnika (engl. ancestor) ili sljedbenika (engl. descendant).

Prilikom gnježdenja elemenata treba paziti da se tag-ovi elemenata ne smiju preklapati: početni tag zadnje gnježdenog elementa mora se zatvoriti s pripadajućim dočetnim tagom istog elementa prije nego se zatvori dočetni tag elementa prethodnika (LIFO struktura: last in - first out).

Page 47: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 4

3.3. Namespace – prostor imena Budući da se više XML dokumenata može međusobno povezati u jedinstveni XML dokument,

bilo je potrebno otkloniti mogućnost podudaranja imena tag-ova koji u različitim dokumentima mogu imati različit smisao, atribute i čvorno mjesto. Stoga je uveden pojam prostora imena (engl. namespace), koji se kao prefiks odvojen dvotočkom dodaje početnom imenu tag-a. Tako će se tag-ovi <Fsb:knjiga> i <FER:knjiga> razlikovati - ime 'knjiga' dobit će dva nova prostora. U dočetnom tag-u ne navodi se prostor imena.

XML dokument počinje naredbom <?xml ... ?> koji može imati nekoliko argumenata. XML dokument može imati i komentar koji ima oblik posebnog tag-a: <!-- ovo je komentar --> i koji u svojoj relevantnoj informaciji zbog očevidnog razloga ne smije imati dvije crtice '--' u nizu. Komentar se ne smije gnijezditi unutar tag-ova elemenata, a ne smije doći ni ispred početne XML naredbe.

Primjer 3.2.

Primjer gnježdenih XML elemenata Opis <knjiga> <naslov> Uvod u XML </naslov> <izdavač> FSB Zagreb </izdavač> </knjiga>

Ispravan XML element, s tagom imena 'knjiga' u koji su uglavljeni (ugnježdeni) tag-ovi 'naslov' i 'izdavač' s pripadanom informacijom

<?xml version="1.0"> <FSB:knjiga ISBN="1-12345-678-9" > <FSB:naslov> Uvod u XML </naslov> <FSB:Slika src="logo.gif"/> <FSB:izdavač godina="2002"> FSB Zagreb </izdavač> </knjiga>

Ispravan XML element s početnom naredbom i gnježdenim elementima s prostorom imena. Neki tagovi ('knjiga', 'izdavač', 'Slika' ) imaju atribute, s tim da je jedan ('Slika') prazan (nema eksplicitnu informaciju).

<!-- ovo je preuranjeni komentar --> <?xml version="1.0"> <b> <i>ovo je bold italic tekst </b> </i>

Neispravno ispreplitanje HTML tagova, koji su također i XML tagovi. Pogrešan je i komentar, koji je prije XML naredbe.

Da se isti prefiks prostora imena ne bi morao prečesto pisati, ponavljati u tag-ovima elemenata,

postoji način njegovog zadavanja i to preko atributa 'xmlns:' (kratica od XML NameSpace) kojemu se uz prikladno ime pridužuje najčešće URL adresa s kojeg potječe dokument. Na taj način se postiže najsigurnija jednoznačnost elemenata XML dokumenta. Dopušteno je definirati više od jednog prostora imena, pa neka imena tag-ova mogu imati jedan (pretpostavljeni, engl. default), a druga drugi prostor imena. Konačno, ako ne želimo da se pretpostavljena vrijednost prostora imena koristi za neki(-e) element(-e), onda atributu 'xmnls' pridružimo prazan niz znakova.

Primjer 3.3.

Primjer prostora imena Opis <knjige xmlns='http://zrno.fsb.hr/' xmlns:FSB='http://www.fsb.hr/'> <knjiga> <naslov> Uvod u XML </naslov> <ISBN>1-12345-678-9</ISBN> </knjiga> <FSB:izdavač> FSB Zagreb </FSB:izdavač> </knjige>

Ispravan XML dokument, s dva prostora imena. Pretpostavljeni se odnosi na elemente 'knjiga', 'naslov' i 'ISBN', dok se prostor imena 'FSB' primjenjuje na element 'izdavač'.

Page 48: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 5

<stavka xmlns=' ' xmlns:COMA='http://zrno.fsb.hr/' xmlns:FSB='http://www.fsb.hr/' > <naslov> Uvod u XML </naslov> <Slika src="logo.gif"/> <cijena> 505.- </cijena> </stavka>

Ispravan XML dokument s više prostora imena. Budući da je pretpostavljeni prostor imena prazan, tag-ovi 'naslov', 'slika' i 'cijena' nemaju pretpostavljeni (niti ikakav) prostor imena.

3.4. Provjera ispravnosti XML dokumenta Da bi se XML dokumenti mogli programski obrađivati potrebno je da budu valjani (engl. valid).

Ta se valjanost ne odnosi na sintaktičku ispravnost (ispunjavanje zadanih XML pravila) koja je do sada razmatrana (engl. well-formed), već na logičku povezanost elemenata, atributa i informacije koju opisuju. Logička valjanost definira se novim pravilima koja su zapisanu u posebnoj datoteci ili su unutar samog dokumenta. Postoje dva pristupa istom problemu: preko DTD (Document Type Definition) pravila ili noviji preko XML shema (XDR - XML Data Reduced ili XSD - XML Schema Definition).

Shema određuje koje elemente smije sadržavati XML dokument te redoslijed i broj tih elemenata. Ispravnost provjerava se u odnosu na određenu Document Type Definition (DTD) ili XML schemu. Dokument sheme navodi se u zaglavlju XML dokumenta.

Povezivanje XML dokumenta s DTD shemom:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poruka SYSTEM "PorukaPodsjetnik.dtd"> <poruka> <zaKoga>Pero</zaKoga> <odKoga>Kate</odKoga> <naslov>Podsjetnik</naslov> <tijelo>Otiđi kupiti kruh</tijelo> </poruka>

Povezivanje XML dokumenta s XML shemom:

<?xml version="1.0" encoding="UTF-8"?> <poruka xmlns="http://hr.wikipedia.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="poruka.xsd"> <poruka> <zaKoga>Pero</zaKoga> <odKoga>Kate</odKoga> <naslov>Podsjetnik</naslov> <tijelo>Otiđi kupiti kruh</tijelo> </poruka>

3.5. XML i HTML XML i HTML sintaksno su slični, iako su razvijeni s različitim namjenama. XML je prvenstveno

razvijen za opisivanje podataka. XML ne radi ništa osim što opisuje podatke. Oznake kod XMLa su slobodne i korisnici ih moraju sami smisliti i kreirati. U HTMLu postoji predefinirani skup oznaka koje uglavnom služe za prikazivanje sadržaja u internet pregledniku na odgovarajući način. Sintaksna pravila XMLa vrlo su stroga i ako dokument nije formatiran u skladu s njima, računalni program neće moći pročitati XML dokument. S druge strane HTML dokument koji je sintaksno neispravan većina internet preglednika će uredno pročitati i pokušati protumačiti na najbolji mogući način iz ispravnih informacija. EXtensible HyperText Markup Language (XHTML) je novi standard razvoja HTML jezika u skladu sa strožim pravilima XMLa. Namjena tog jezika je da s vremenom u potpunosti zamjeni stari HTML standard.

Page 49: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 6

3.5.1. Prikaz XMLa na web stranicama XML je jezik namijenjen opisu podataka i u sebi ne nosi informacije o tome na koji način se

određeni podaci trebaju prikazati. To se može napraviti pomoću odgovarajućih atributa, ali u tom slučaju potreban je poseban računalni program koji će na odgovarajući način protumačiti te atribute. Kada se XML dokument gleda u internet pregledniku prikazuje se kao običan tekstualni dokument. Neki internet preglednici prikazuju stablo na kojem se klikom na odgovarajući čvor njemu podređene grane mogu prikazati ili sakriti od prikazivanja. Želimo li prikazati sadržaj u odgovarajućem formatu, to možemo napraviti na nekoliko načina:

o pozvati XML sadržaj unutar HTML dokumenta. U Internet Explorer internet pregledniku pomoću neslužbene <xml></xml> oznake moguće je unutar HTML dokumenta umetnutu sadržaj XML dokumenta (tzv. podatčani otoci (data islands). U drugim internet preglednicima moguće je učitati sadržaj pomoću JavaScript programa.

o u XML dokumentu navesti naziv CSS datoteke koja ga formatira na odgovarajući način. Povezivanje se radi unutar zaglavlja XML dokumenta.

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/css" href="poruka.css"?> <poruka> <zaKoga>Pero</zaKoga> <odKoga>Kate</odKoga> <naslov>Podsjetnik</naslov> <tijelo>Otiđi kupiti kruh</tijelo> </poruka>

o u XML dokumentu navesti naziv XSLT datoteke koja ga formatira na odgovarajući način

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="poruka.xslt"?> <poruka> <zaKoga>Pero</zaKoga> <odKoga>Kate</odKoga> <naslov>Podsjetnik</naslov> <tijelo>Otiđi kupiti kruh</tijelo> </poruka>

3.6. Korištenja XMLa

3.6.1. Odvajanje podataka od prezentacije Unutar HTML dokumenta sadržaj se može odvojiti od prezentacije. Na takav način web dizajneri

imaju veću slobodu u formatiranju i promjenama izgleda web stranica. Kada se promjeni izgled web stranice, ne mora se mijenjati njezin sadržaj. Sadržaj bi se čuvao unutar XML dokumenta, a HTML dokument služio bi za prezentaciju toga sadržaja.

3.6.2. Razmjena podataka XML dokument je obična tekstovna datoteka. Njezin sadržaj je vidljiv i pristupačan čovjeku, bez

ikakvog posebnog programa kao i svakom računalnom programu koji može čitati tekstovne datoteke. Razmjena između sustava na različitim platformama najčešće ide na način da jedan sustav ispiše svoje podatke u dogovorenom formatu u tekstovnu datoteku, a drugi sustav ih pročita. Format tih datoteka obično je bio pozicijski (svi podaci u jednom retku, a svaki podatak ima određenu duljinu) ili delimiterski (podaci razdvojeni posebnim znakom – razdjeljnikom, delimiterom npr. zarez ili točka-zarez). Problem kod toga je što je za svaku posebnu razmjenu potrebno raditi novi format prema dogovoru strana u razmjeni. osim toga ti formati su neintuitivni. Kada pogledate tekstovnu datoteku u pozicijskom formatu bez dokumentacije toga formata nećete moći niti naslutiti kakvi podaci se u njoj nalaze. XML omogućuje da svaka strana opiše podatke koje ima, odnosno one koje im trebaju odgovarajućim oznakama koje su čitljive i čovjeku i koje dosta dobro opisuju podatak koji se unutar određene oznake nalazi.

Page 50: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 7

3.6.3. Pohrana podataka XML dokument opisuje sadržaj i kao takav može se koristiti za njegovu pohranu.

Najjednostavniji način je izravna pohrana u tekstualne datoteke koje se spremaju na disk. Podaci iz datoteka mogu se čitati izravno, korištenjem običnog programa za uređivanje teksta ili korištenjem nekog od posebnih programa za rad s XML podacima. Nešto napredniji način pohrane je da se XML elementi pohranjuju u relacijsku bazu podataka. Nedostatak tog pristupa je da relacijska struktura baze ne odgovara hijerarhijskom pristupu XML dokumenata. Zbog toga su se počele kreirati posebne XML baze podataka koje su svojim načinom rada posebno prilagođene pohrani i radu s XML podacima.

3.6.4. Povećavanje dostupnosti podataka XML podatke pohranjuje u običnu tekstovnu datoteku koja je čitljiva gotovo na svakoj platformi.

Format je jasno vidljiv i jednostavno je napraviti računalni program koji će na odgovarajući način interpretirati podatke. Postoji nekoliko inicijativa s idejom da se za pohranu podataka umjesto zatvorenih binarnih formata (npr. doc, xls,...) za pohranu podataka koristi XML format. Danas sve više računalnih programa koristi taj format za pohranu podataka.

3.6.5. Izradu novih specijaliziranih jezika za označavanje o XML je jezik ali i platforma koja služi za stvaranje novih, specijaliziranih jezika za

označavanje. Neki od jezika koji su kreirani iz XMLa o Wireless Markup Language (WML) je jezik koji se koristi u WAP mrežama za pristup

internetu s prijenosnih uređaja (mobitela, ručnih računala,...) o MathML je jezik koji omogućuje jednostavno kodiranje matematičkih izraza s ciljem

jednostavne razmjene, prikazivanje i korištenje na web stranicama o User Interface Markup Language (UIML) je jezik namijenjen modeliranju korisničkih

sučelja računalnih programa o Chemical Markup Language (CML) je jezik namijenjen prikazu kemijskih formula o HelpML (Help Markup Language) je jezik namijenjen opisu dokumenata pomoći.

3.7. XML proširenja i tehnologije o XPath je jezik koji omogućuje jednostavnije pretraživanje sadržaja u XML dokumentu. o XQuery je upitni jezik za pretraživanje XML dokumenta. On je za XML isto ono što je

SQL za relacijske baze podataka o XSLT je jezik koji omogućuje transformacije XML dokumenata iz jednog formata u

drugi (npr. iz XMLa u XHTML) o XSL-FO je jezik koji služi za formatiranje izlaznog rezultata XML dokumenta o XML Linking Language je jezik koji opisuje standardni način kreiranja hiperlinkova u

XML dokumentima o XML Pointer Language je jezik koji opisuje standardni način na koji hiperlinkovi

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

programima pristup i ažuriranje sadržaja i strukture XML dokumenta o SOAP je jednostavan protokol baziran na XMLu koji omogućuje aplikacijama razmjenu

podataka u tekstualnom obliku preko HTTP protokola o Web Services Description Language (WSDL) je jezik baziran na XMLu koji

omogućuje opis web servisa i sučelja za njihovo korištenje o Really Simple Syndication (RSS) je način za distribuciju sadržaja s jednog web-a na

druge pomoću XMLa o Wireless Application Protocol (WAP) je protokol razvijen s namjerom pristupa

internetskim sadržajima pomoću prijenosnih uređaja (mobitela, ručnih računala i sl.) o XML Signature definira sintaksu i pravila za kreiranje digitalnog potpisa XML sadržaja o XML Encryption definira sintaksu i pravila za šifriranje XML sadržaja

Page 51: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 8

3.8 Prednosti i nedostaci XMLa

Prednosti o jednostavno je čitljiv i čovjeku u običnom tekstualnom editoru i računalu o 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

o podržava Unicode i omogućuje prikaz teksta na svim danas poznatim jezicima o format je samodokumentirajući. Oznake opisuju sadržaj koji se nalazi unutar njih. o ima stroga sintaksna pravila tako da je jednostavno kontrolirati ispravnost nastalog

dokumenta. Računalni programi koji obrađuju dokument zbog toga mogu jednostavno obrađivati XML sadržaj

o međunarodno prihvaćen standard. Mnogi proizvođači programa su ga prihvatili i koriste u svojim proizvodima

o hijerarhijska struktura je pogodna za opisivanje mnogih sadržaja (ali ne i svih!) o kompatibilan je sa SGMLom koji se koristi od 80ih godina 20. stoljeća, a za SGML

postoji dosta računalnih programa koji ga mogu obrađivati, pa kada je XML standard objavljen već je postojala određena baza korisnika koji nisu gotovo ništa morali učiti o novom jeziku niti kreirati nove programe već su ga jednostavno usvojili

Nedostaci o sintaksa je redundantna i opširna što može zamarati i zbunjivati osobu koja čita XML

dokument. računalni program koji obrađuje dokument morati će obraditi veliku količinu podataka što će ga djelomično usporiti

o da bi dokument bio dovoljno dobro "samoopisan" nazivi oznaka moraju biti dovoljno precizni što dovodi do dugih "kobasičastih" naziva (npr. u nekom dokument 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

o redundancija i velika količina podataka stvaraju velike zahtjeve za propusnosti mreže (iako to danas uglavnom više nije problem)

o programi koji obrađuju XML podatke su dosta složeni jer moraju obrađivati velike količine ugniježđenih podataka u više razina

o 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

o 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

o

3.9. Verzije XMLa Postoje 2 verzije XMLa. Prva XML 1.0 inicijalno je stvorena 1998. godine. Do danas je imala

nekoliko manjih revizija. Širom je prihvaćena i još i danas se preporučuje za korištenje. Verzija XML 1.0 bazira se na filozofiji da je sve što nije dozvoljeno zabranjeno. S razvojem drugih standarda na koje se oslanja (prvenstveno Unicode koji je u međuvremenu s verzije 2.0 došao do verzije 4.0 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. Druga verzija XML 1.1 inicijalno je objavljena 2004. godine i ima određena svojstva koja olakšavaju rad programima na velikim računalima. 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

Page 52: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 9

računalnim serverima koji imaju problema s ograničenjima verzije XML 1.0 uglavnom su prešli na korištenje verzije XML 1.1.

3.10. DTD Namjera DTD pravila je opisati svaki element koji se koristi u razmatranom XML dokumentu,

kao i međusobne odnose tih elemenata. Kako element može imati atribute, potrebno je posebnim pravilima opisati i njihov sadržaj i odnose.

Svaki element opisuje se <!ELEMENT .... > deklaracijom, koja u općem slučaju glasi: <!ELEMENT ime_elementa pravilo>

Najjednostavnija i najopćenitija deklaracija elementa pretpostavlja da između početnog i dočetnog njegovog tag-a može biti bilo što (engl. ANY) tj. novi (ugnježdeni) tagovi ili znakovni podaci, informacija:

<!ELEMENT ime_elementa ANY> . Ako želimo istaknuti da element ima sao podatke, a ne i nove tag-ove, onda koristimo kraticu PCDATA (od engl. parsed character data):

<!ELEMENT ime_elementa (#PCDATA)> . Za element koji nema inforacijskog sadržaja unutar svojih tag-ova koristi se oznaka EMPTY u opisu elementa:

<!ELEMENT ime_elementa EMPTY> .

U slučaju gniježdenih elemenata, 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:

Operator pojavljivanja Opis ? bez pojavljivanja ili jedanput

(0 ili 1 put) + barem jedanput

(1 ili više puta) * nijednom ili bilo koliko puta

(0, 1 ili više) Argumenat 'standalone' početne XML naredbe <?xml version="1.0"> govori o mjestu spremljenih DTD pravila, pa će <?xml version="1.0" standalone="yes"> DTD pravila uključivati na početku tog istog XML dokumenta, dok će <?xml version="1.0" standalone="no"> značiti da se DTD pravila nalaze u posebnoj datoteci određenoj preko <!DOCTYPE .... > naredbe:

<!DOCTYPE ime_root_elementa SYSTEM "URL"> gdje URL predstavlja adresu dokumenta na izvorišnom stroju u mreži. Ako se DTD objavljuje za opću uporabu, onda umjesto 'SYSTEM' stoji 'PUBLIC' sa svojim jedinstvenim imenom.

Page 53: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 10

Primjer 3.4

Primjer DTD pravila Opis <?xml version="1.0" standalone="yes"> <!-- DTD definicije --> <!DOCTYPE knjiga [ <!ELEMENT knjiga (naslov, izdavač) > <!ELEMENT naslov (#PCDATA)> <!ELEMENT izdavač (#PCDATA)> ]> <!-- XML dokument --> <knjiga> <naslov> Uvod u XML </naslov> <izdavač> FSB Zagreb </izdavač> </knjiga>

Budući da je XML 'standalone' (samostojna) aplikacija, u istoj datoteci spremljena su i DTD pravila i XML dokument. Prvo je opisan root element 'knjiga' koja ima dva elementa od kojih prvo dolazi 'naslov', a potom 'izdavač'. Svaki od ta dva elementa sadrže čiste znakove podataka (PCDATA).

<!DOCTYPE knjiga [ <!ELEMENT knjiga (naslov | izdavač) > <!ELEMENT naslov (#PCDATA)> <!ELEMENT izdavač (#PCDATA)> ]>

U ovom slučaju XML dokument u svom elementu mogao bi imati ili element 'naslov' ili element 'izdavač', ali nikako oboje.

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

U ovom slučaju XML dokument bi mogao imati jedan ili više pregleda, ili jedan ili više nizova elemenata ('naslov', 'autor','izdavač'), navedenima u tom (i samo tom) rasporedu ali nikako istodobno (i 'pregled' i grupa elemenata). Element 'autor' može imati jedan ili više elemenata 'ime_autora'. Na sličan način izdavač se može, a ne mora pojaviti i to sa znakovnim opisom (PCDATA) ili elementom 'logo' koji je prazan (što vrijedi npr. za elemente tipa slika).

Atributi se u DTD pravilima definiraju preko ATTLIST-e koja uz ime elementa i ime njegovog atributa definira atributski tip podatka i eventualnu pretpostavljenu vrijednost ili ključnu riječ umjesto nje. Postoji više tipova podataka koji se koriste u opisu atributa nekog XML elementa. Najčešći su obični znakovni podaci (CDATA), kao i nizovi vrijednosti od kojih se jedno izabire (engl. enumerated types). Ostali (ENTITY, ID, NMTOKEN, NOTATION) sa svojim varijantama zahtijevaju poseban opis. Pretpostavljene vrijednosti modifikatora u opisu atributa su:

Pretpostavljeni modifikatori

Opis

#REQUIRED Atributna vrijednost mora se specificirati s elementom.

#IMPLIED Atributna vrijednost može ostati nespecificirana u XML dokumnetu, ali se u DTD opisu mora

navesti. #FIXED Atributna vrijednost je fiksna i ne može se

mijenjati od strane korisnika

Page 54: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 11

Svaki opis atributa mora sadržavati jedan modifikator, kao opću pretpostavljenu vrijednost. Opći oblik DTD naredbe za opis atributa je:

<!ATTLIST odredišni_element ime_atributa atributni_tip pretpostavljena_vrijednost> Primjer 3.5.

Atributne deklaracije Opis <!ATTLIST cijena tečaj CDATA #REQUIRED "kn">

U elementu 'cijena' postoji atribut 'tečaj' koji se mora, zahtijeva (eng. reguired) da bude naveden, a pretpostavljena vrijednost (ako u XML dokumentu izostane) mu je 'kn'.

<!ATTLIST datum godina CDATA #FIXED "2002">

U elementu 'datum' postoji atribut 'godina' koji se ne mora navesti u XML dokumentu. U tom slučaju XML parser za vrijednost tog atributa uzet će fiksnu vrijednost '2002'.

<!ATTLIST osoba spol (muško | žensko) "žensko">

U elementu 'osoba' postoji atribut 'spol' koji se može poprimiti dvije vrijednosti ('muško' ili 'žensko'), a ako nje specificirano pretpostavlja se 'žensko'.

<!ATTLIST osoba bračno_stanje (sam | sama | oženjen | udata | rastavljen | rastavljena | udovac | udovica) #IMPLIED>

U elementu 'osoba' postoji atribut 'bračno_stanje' koji poprima jednu od nabrojenih vrijednosti.

ID, IDREF i IDREFS atributni tipovi podataka dopuštaju definiranje atributa kao jedinstvenih identifikatora elemenata. Oni su korisni za povezivanje različitih dijelova dokumenta, kao i referenciranje drugih ID-ova. Primjer 3.6.

ID, IDREF Opis <?xml version="1.0" standalone="yes" ?> <!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>

Ovaj XML dokument ima vanjsku DTD datoteku 'odjel.dtd'. Elementi 'zaposlenik' koriste ID atribut 'zapid', a neki i ID atribut 'šef'. Ovaj element 'odjel' ima četiri elementa 'zaposlenik'.

<!-- odjel.dtd datoteka --> <!ELEMENT odjel (zaposlenik*)> <!ELEMENT zaposlenik (#PCDATA)> <!ATTLIST zaposlenik zapid ID #REQUIRED> <!ATTLIST zaposlenik šef IDREF #IMPLIED>

U DTD datoteci opisani su elementi i atributi prethodnog XML dokumenta. ID tip podatka govori da atribut 'zapid' mora biti jednoznačan identifikator. IDREF tip podatka govori da atribut 'šef' pokazuje na neki ID i ne mora (#IMPLIED) biti uključen.

IDREFS proširuje tip IDREF na više, prazninom odijeljenih, IDREF atributnih tipova podataka. Ovi identifikatori postaju posebno zanimljivi u radu s XLink i XPointer procesorima.

Page 55: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 12

NMTOKEN i NMTOKENS opisuju atribute koji deklariraju XML ime (token). Takav XML token je podskup od #PCDATA jer sadrži pojedinačnu riječ (ne smije biti razmak u nizu znakova), a znakovi koji se smiju koristiti su standardni alfanumerički (velika i mala slova i znamenke) znakovi uključujući i one iz ostalih alfabeta (Grčki, Arapski, Hebrejski, ...) i ideograma (Kineski, Japanski, Koreanski). Od znakova interpunkcije dozvoljeni su samo: dvotočka ':', točka '.', crtica '-' i podvlaka '_'. XML token mora početi ili slovom ili podvakom '_'. Takva ograničenja na niz podataka u atributima koristimo najčešće u prebrojivim ključnim riječima programskih jezika, ali također i u svakodnevnoj uporabi, npr. za opis atributa koji obrađuje telefonske brojeve:

<!ATTLIST poruka tel NMTOKEN #REQUIRED>

Ključne riječi NOTATION i NOTATIONS dolaze u atributnoj listi neposredno povezane s DTD deklaracijom <!NOTATION> koja se poput <!DOCTYPE ... > ili neke druge DTD naredbe nalazi u opisu XML dokumenta. Primjer 3.7.

NOTATION Opis <!NOTATION jpg SYSTEM "ACDSee.exe"> <!NOTATION gif SYSTEM "imaging.exe"> <!NOTATION bmp SYSTEM "paint.exe"> <!NOTATION png SYSTEM "netscape.exe"> <!ATTLIST mm gledaj NOTATIONS (jpg | gif | png) #REQUIRED>

Element 'mm' može za svoj atribut 'gledaj' odabrati jednu od tri vrste programa. Primjetite, da iako deklariran 'png' tip, ipak 'gledaj' ne može imati 'netscape.exe' kao vrijednost argumenta.

Unutar DTD-a moguće je preko ENTITY deklaracije povezati niz znakova s prikladnim imenom koje se potom na bilo kojim mjestima unutar XML dokumenta može koristiti kao refenca, bez ponovnog ispisa (općenito) duže niza znakova. To odgovara 'macro' naredbi u programskim jezicima. Opći oblik deklaracije izgleda ovako:

<!ENTITY ime "znakovi_koje_zamjenjujemo_imenom"> a referenca u XML dokumentu se koristi kao '&ime;'. Reference već definiranih zamjenskih imena u ENTITY deklaraciji mogu se koristiti unutar novo definiranog niza nove ENTITY deklaracije, ali samo u slučaju da ne nastanu cirkularne reference bez čvrstog početnog niza. Na sličan način, upotrebom ključne riječi SYSTEM moguće je deklarirati vanjsku cjelinu (XML datoteku na nekoj lokaciji), koja se potom uz referentno ime uključuje (presnimava, kopira) u dokument.

<!ENTITY ime SYSTEM "http://adresa/datoteka.xml"> Ova deklaraciju moguće je proširiti i na sadržaje koji nisu XML dokumenti (npr. slike), upotrebom ključne riječi NDATA (engl. notation data) i specifikacijom tipa podatka preko NOTATION deklaracije. Za upotrebu referentnog imena unutar DTD deklaracija koristi se drugi oblik ENTITY deklaracije:

<!ENTITY % ime "znakovi_koje_zamjenjujemo_imenom"> dakle, ispred zamjenskog imena nalazi se znak postotka '%', koji služi i kao prefiks reference imena tj. '%ime;' unutar DTD bloka. I ovdje također nije dozvoljeno činiti cirkularne reference u deklaracijama, a niti se zamjenska referenca smije napisati prije nego što je deklarirana (što je u prvom obliku ENTITY deklaracije bilo moguće).

Page 56: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 13

Primjer 3.8.

ENTITY Opis <!-- ovo je DTD deklaracija --> <!ENTITY FSB "Fakultet strojarstva i brodogradnje"> <!-- a ovo je XML dokument --> <ustanova> Gdje je &FSB bio nekad uvaženi fakultet. </ustanova>

Referencom &FSB u XML dokument se upisuje puni naziv kratice, tj. 'Fakultet strojarstva i brodogradnje'.

<!-- ovo je DTD deklaracija --> <!ENTITY dodatak SYSTEM "http://zrno.fsb.hr/daj.xml"> <!-- ovo je XML dokument --> <ustanova> Gdje je nekad uvaženi fakultet imao i &dodatak; znanja. </ustanova>

U XML dokument pod element 'ustanova' preko reference '&dodatak;' umeće se cijeli dokument s mreže spremljen pod imenom 'daj.xml'.

<!-- ovo je DTD deklaracija --> <!ENTITY slika SYSTEM "http://zrno.fsb.hr/daj.gif" NDATA GIF89a> <!NOTATION GIF89a SYSTEM "-//CompuServe//NOTATION Graphics Interchange Format 89a //EN"> <!-- ovo je XML dokument --> <ustanova> Gdje je nekad uvaženi fakultet imao i <image src="&slika;"> adekvatan image. </ustanova>

U XML dokument pod element 'ustanova' preko reference '&slika;' umeće se slika s mreže spremljena pod imenom 'daj.gif' čiji je format opisan NOTATION tipom podatka u 'NOTATION' deklaraciji.

<!ENTITY A "Kolo sreće &B;"> <!ENTITY B "se okreće">

Dopuštena referenca.

<!ENTITY A "Kolo sreće &B;"> <!ENTITY B "&Ase okreće">

Nedopuštena cirkularna referenca.

Unutar DTD-a moguće je grupirati više naredbi koje se preko INCLUDE naredbe aktiviraju, a preko IGNORE zanemaruju u interpretaciji XML sadržaja. Opći oblik grupiranja DTD naredbi je:

<! [ (IGNORE | INCLUDE) [ DTD naredbe ..... ] ]>

koji se najčešće povezuje s uvjetovanim uključivanjem, preko reference.

Page 57: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 14

Primjer 3.9.

INCLUDE, IGNORE Opis <!ENTITY % akoref "INCLUDE"> <! [ %akoref; [ <!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)> ]] >

Referencom '%ako;' u DTD dokument se upisuje skupina DTD deklaracija, ovisno o referenci koja se mijenja na jednom (ENTITY) mjestu. Ako je referenci 'akoref' pridružena ključna riječ 'INCLUDE' skupina će se obraditi, a ako je pridružena riječ 'IGNORE' skupina će se zanemariti.

3.11. XML schema XML Schema 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 Scheme 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.

3.11.1. Sintaksna pravila 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. Korijenski <schema> element mora se navesti u svakom XML Schema dokumentu. Taj element, kao i svi drugi može imati odgovarajuće atribute.

3.11.2. Tipovi podataka Jednostavni tipovi podataka ugrađeni su u XML Schema specifikaciju. Jednostavni tipovi podataka

mogu se proširivati specifičnim skupovima, ovisno o određenoj namjeni XML dokumenta koji se opisuje. Npr. kod XML dokumenata koji opisuju strukturu baze podataka postoje jednostavni tipovi podataka identični svim tipovima podataka koje određena baza može imati. Prednost korištenje jednostavnih tipova podataka je u tome što sve kontrole i provjere ispravnosti podataka vrši sam XML program i nije potrebno pisati posebne kontrolne procedure. Neki od jednostavnih tipova podataka su:

o numerički tipovi podataka ("byte", "float", "long") o tipovi podataka za opis datuma vremena i trajanja ("time", "date", "timeinstant",

"timeduration") o logički tip podataka ("boolean" – može imati vrijednost "true" ili "false") o tip podataka za unos binarnih brojeva ("binary") o oznaka jezika koja se koristi ("language" – npr. "en-US") o oznaka web adrese ("uri-reference" – npr. "http://www.w3c.org/")

Page 58: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 15

3.11.3. Tipovi elemenata

U XML Schemi mogu se koristiti jednostavni i složeni tipovi elemenata.

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

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

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

Složeni tipovi elemenata

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

o prazni elementi ne smiju imati sadržaj već samo atribute. Prazni elementi imaju samo početnu oznaku.

<artikal sifra="1234"/>

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

o elementi koji sadrže samo tekst sadrže samo tekst i stributem, a ne smiju unutar sebe imati sadržane druge elemente.

<racunalo type="rucno">Palm</racunalo>

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

3.11.4. Atributi elemenata

Atributi detaljnije opisuju elemente i opcionalni su te se ne moraju navoditi. Vrijednost atributa navodi se pod znakovima navodnika. Atribut "name" opisuje naziv atributa ili elementa, a atribut "type" njegov dozvoljeni tip. Tip podatka može biti jednostavan ili složen.

Prebrojivost elemenata

Kardinalnost podataka definirana je atributima "minOccurs" i "maxOccurs". Minimalni broj pojavljivanja određenog elementa postavljen je u osnovi na "1". Ako se želi navesti neki drugi broj, npr. da se element ne mora niti jednom pojaviti, potrebno je u vrijednost tog atributa upisati "0". Atribut "maxOccurs" navodi maksimalni broj puta što se može pojaviti vrijednost određenog elementa. Ako se neki element može pojaviti neograničen broj puta kao vrijednost se treba postaviti "*". Ako je broj puta što se element smije pojaviti fiksiran, potrebno je kao vrijednost atributa navesti taj broj.

Page 59: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 16

Ograničenja elemenata

Odgovarajućim elementima i atributima mogu se precizno odrediti odgovarajuća ograničenja na vrijednost XML elemenata. Element <restriction> koristi se za ograničavanje vrijednosti određenog elementa na određene vrijednosti. Primjer ograničenja podatka starosti koje mora upasti u interval između 0 i 110: <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>

Primjer ograničenja podatka vrsta automobila koji mora biti jedan od ponuđenih tipova: <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>

Primjer ograničenja na niz slova engleske abecede: <xs:element name="slovo"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>

Primjer ograničenja duljine podatka: <xs:element name="jmbg"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="13"/> </xs:restriction> </xs:simpleType> </xs:element>

Ostala svojstva elemenata

Osim prebrojivosti i ograničenja podataka postoji niz predefiniranih svojstava koja se mogu koristiti prilikom opisa svakog elementa. Ta predefinirana svojstva nazivaju se "facets". Neki od najčešće korištenih su precision, scale, encoding, whiteSpace, totalDigits, fractionDigits i pattern.

3.12. Primjer upotrebe

XML dokument

Dokument studenti.xml <?xml version="1.0" encoding="UTF-8"?> <Studenti xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="studenti.xsd">

Page 60: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 17

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

XSD dokument

Dokument studenti.xsd <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> <xsd:element name='Osoba'> <xsd:complexType> <xsd:sequence> <xsd:element ref='Ime'/> <xsd:element ref='Prezime' minOccurs='0' maxOccurs='1'/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name='Ime' type='xsd:string'> </xsd:element> <xsd:element name='Prezime' type='xsd:string'> </xsd:element> <xsd:element name='Studij' type='xsd:string'> </xsd:element> <xsd:element name='Adresa'> <xsd:complexType> <xsd:sequence> <xsd:element ref='Ulica' minOccurs='0' maxOccurs='1'/> <xsd:element ref='Broj' minOccurs='0' maxOccurs='1'/> <xsd:element ref='Grad' minOccurs='0' maxOccurs='1'/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name='Ulica' type='xsd:string'> </xsd:element> <xsd:element name='Broj' type='xsd:string'> </xsd:element> <xsd:element name='Grad' type='xsd:string'> </xsd:element> <xsd:element name='KontaktPodaci'> <xsd:complexType> <xsd:sequence> <xsd:element ref='Telefon' minOccurs='0' maxOccurs='unbounded'/> <xsd:element ref='Email' maxOccurs='unbounded'/> <xsd:element ref='KorisnickoIme' maxOccurs='unbounded'/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name='KorisnickoIme' type='xsd:string'>

Page 61: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_________________________________________________________________________________________ M. Essert: WEB programiranje 18

</xsd:element> <xsd:element name='Telefon' type='xsd:string'> </xsd:element> <xsd:element name='Email' type='xsd:string'> </xsd:element> </xsd:schema>

3.12.1. Prednosti i nedostaci korištenja XML Scheme Prednost korištenja XML Scheme je što se sam XML Schema dokument XML dokument i stvara

se prema istim pravilima. Time nije potrebno učiti pravila 2 različita jezika, a i sami programi koji provjeravaju ispravnost XML dokumenta mogu se koristiti za provjeru formalne ispravnosti Schema dokumenta.

Osim toga 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 iz razloga jer tip podataka datum programi bi trebali interpretirati na ispravan način, ovisno o lokalnim datumskim postavkama odgovarajuće zemlje.

Nedostatak korištenja XML Schema dokumenta je u dosta složenoj sintaksi koju je potrebno svladati kako bi se stvorili dokumenti.

Izvor: Wikipedija, w3school

Page 62: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

M. Essert: WEB PROGRAMIRANJE

4. predavanje

XML Schema je na XML utemeljena alternativa za DTD.

XML Schema opisuje strukturu XML dokumenta.

XML Schema jezik se označuje kao XML Schema Definition (XSD).

XML Schema:

• definira elemente koji se mogu pojaviti u dokumentu • definira atribute koji se mogu pojaviti u dokumentu • definira koji elementi su djeca (child) elementi • definira redoslijed djece (child) elemenata • definira broj djece (child) elemenata • definira je li element prazan ili uključuje tekst • definira tipove podataka za elemente i atribute • definira pretpostavljenu i fiksnu vrijednosti za elemente i atribute

XML Schema je nasljednik od DTD-a

XML Schema se koristi u većini Web aplikacija kao nadomjestak za DTD. Ovdje su neki razlozi za to:

• XML Schema su proširive za buduće dodatke • XML Schema are bogatije i korisnije od DTD-a • XML Schema se pišu u XML-u • XML Schema podržavaju tipove podataka • XML Schema podržavaju prostor imena (namespaces)

XML Schema je prvotno preporučio Microsoft, ali je postala službeni standard od strane W3C ureda u lipnju 2001. Specifikacija standarda je stabilna i nadgleda se od W3C članstva.

XML Schema podržava tipove podataka

Jedan od najvećih dosega XML Schema je podržavanje tipove podataka, čime se postiže:

jednostavan opis dopustivog sadržaja dokumenta jednostavna provjera ispravnosti podataka jednostavan rad s podacima iz baza podataka (database)

Page 63: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 2

jednostavno je definirati obličja podataka (data facets) (restrikcije na podacima)

jednostavno definiranje uzoraka, formata podataka (data patterns, data formats)

jednostavnija pretvorba podataka između različitih tipova podataka

XML Schema-e koriste XML sintaksu

Drugi veliki doseg XML Schema je da su one napisane u XML-u, što znači:

Ne mora se učiti neki drugi jezik Koristi se isti XML editor da se editiraju Schema datoteke Može se koristiti XML parser za parsiranje (izvlačenje podataka iz) schema Moguće je obraditi schemu sa XML DOM Može se transformirati schema sa XSLT

XML Schema-e daje sigurnost prijenosu podataka

Kada se podaci šalju od pošiljatelja primatelju, važno je da obje strane imaju ista „očekivanja“ o sadržaju. Sa XML Schema-ma pošiljatelj može opisati podatke na način na koji će ih primatelj razumjeti.

Datum kao 1999-03-11 može se (u nekim zemljama) interpretirati kao 3. studenoga ili (kao u drugim zemljama) kao 11. ožujka, ali kao XML element s tipom podataka kao:

<date type="date">1999-03-11</date>

garantira međusobno razumijevanje sadržaja, jer XML tip podataka za datum zahtijeva format CCYY-MM-DD.

XML Schema su proširive

XML Schema su proširive, baš kao i XML, budući da su pisane u XML-u pa je moguće:

Ponovno korištenje jedne schema-e u drugim schema-ma Stvoriti vlastite tipove podataka izvedene iz standardnih tipova Referencirati višestruke schema-e iz istog dokumenta

Dobro formatirano (Well-Formed) nije dovoljno

Dobro formatirani XML dokument je dokument koji prihvaćaju XML sinaksna pravila:

• Mora početi sa XML deklaracijom

Page 64: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 3

• Mora imati jedan jedincati korijenski (root) element • Svi početni tag-ovi moraju imati pridružene krajnje-tagove • XML tag-ovi su osjetljivi na velika i mala slova • svi elementi moraju biti zatvoreni • svi elementi moraju biti ispravno ugnježdeni, bez međusobnog preklapanja • svi atributne vrijednosti moraju biti unutar navodnika • XML entities moraju se koristiti za specijalne znakove

Čak ako su dokumenti dobro formatirani oni još uvijek mogu sadržavati pogreške, oni mogu još uvijek sadržavati pogreške, koje mogu imati ozbiljne posljedice. Sa XML schema-ma, većinu ovih pogrešaka moguće je otkriti s pomoću software-a za provjeru valjanosti.

XML dokumenti mogu imati reference na DTD ili na XML schema-e.

Jednostavni XML dokument

Pretpostavimo jednostavni XML dokument nazvan "note.xml":

<?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Jednostavni DTD

Ovo je jednostavna DTD datoteka nazvana "note.dtd" koja definira elemente od gornjeg XML dokumenta ("note.xml"):

<!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

Linija 1 definira note element koji ima četiri elementa: "to, from, heading, body". Linija 2-5 definira to element da bude tipa "#PCDATA", from element da bude tipa "#PCDATA", i tako dalje ...

Jednostavna XML schema

Ovo je jednostavna XML schema datoteka nazvana "note.xsd" koja definira elemente od XML dokumenta iznad ("note.xml"):

Page 65: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 4

<?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="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

note element se kaže da je složeni tip (complex type) budući da sadrži ostale druge elemente. Za ostale elemente (to, from, heading, body) kaže se da su jednostavni tipovi (simple types) budući da oni ne sadrže druge elemente.

Referenca na DTD

Ovaj XML dokument ima referencu na DTD:

<?xml version="1.0"?> <!DOCTYPE note SYSTEM "http://www.w3schools.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Referenca na XML schema-u

Ovaj XML dokument ima referencu na XML schema-u:

<?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.w3schools.com/schema/note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading>

Page 66: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 5

<body>Don't forget me this weekend!</body> </note>

<schema> element je korijen (root) element svake XML schema-e!

<schema> element

<schema> element je korijenski element svake XML schema-e:

<?xml version="1.0"?> <xs:schema> ... ... </xs:schema>

<schema> element može sadržavati neke atribute. Deklaracija schema-e često izgleda poput ove:

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

Sljedeći fragment:

xmlns:xs="http://www.w3.org/2001/XMLSchema"

pokazuje da elementi i tipovi podataka korišteni u schemi (shema, element, complexType, sequence, string, boolean, itd.) dolaze iz "http://www.w3.org/2001/XMLSchema" prostora imena. Ono također određuje da elementi i tipovi podataka koji dolaze s adrese: "http://www.w3.org/2001/XMLSchema" prostora imena trebaju imati prefix od xs: !!

Ovaj fragment:

targetNamespace="http://www.w3schools.com"

pokazuje da elementi definirani s ovom shem-om (note, to, from, heading, body.) dolaze iz "http://www.w3schools.com" prostora imena.

Ovaj fragment:

xmlns="http://www.w3schools.com"

Page 67: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 6

pokazuje da je pretpostavljeni prostor imena "http://www.w3schools.com".

Ovaj fragment:

elementFormDefault="qualified"

pokazuje da bilo koji element korišten sa XML instancom dokumenta koji je deklariran u ovoj schema-i mora biti označen, kvalificiran s prostorom imena.

Referenciranje schema-e u XML dokumentu

Ovaj XML dokument ima referencu na XML Schema:

<?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Sljedeći fragment:

xmlns="http://www.w3schools.com"

specificira pretpostavljenu deklaraciju prostora imena. Ova deklaracija govori programu za provjeru (schema-validator) da se svi elementi korišteni u ovom XML dokumentu deklariraju u "http://www.w3schools.com" prostoru imena.

U trenutku kad se ima XML schema instanca prostora imena:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

može se koristiti schemaLocation atribut. This atribut ima dvije vrijednosti. Prva vrijednost je prostor imena koji se koristi, a druga vrijednost je lokacija XML schema-e koja se koristi za taj prostor imena:

xsi:schemaLocation="http://www.w3schools.com note.xsd"

XML Schema-e definiraju elemente od XML datoteka.

Jednostavni (simple) element

Page 68: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 7

Jednostavni element je XML element koji sadrži samo tekst. On ne može sadržavati neki drugi element ili atribut.

Tekst pritom može imati više različitih tipova podataka. On može biti jedan od tipova podataka koji su uključeni u XML schema definiciju (boolean, string, date, itd.), ili može biti poseban tip podatka kojeg korisnik sam definira.

Moguće je također dodati restrikcije (facets) na tipove podataka da bi se ograničio njihov sadržaj ili zahtijevati podudaranje podatka s definiranim uzorkom.

Sintaksa za definiranje jednostavnog elementa je:

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

gdje je xxx ime elementa, a yyy je tip podatka tog elementa.

Ovdje su neki XML elementi:

<lastname>Refsnes</lastname> <age>34</age> <dateborn>1968-03-27</dateborn>

A ovdje su odgovarajuće definicije jednostavnih elemenata:

<xs:element name="lastname" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/>

XML schema ima puno ugrađenih (built-in) tipove podataka. Ovdje je lista najčešćih tipova:

xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

Deklaracija pretpostavljenih i fiksnih vrijednosti za jednostavne elemente

Pretpostavljenu vrijednost se automatski pridružuje elementu kad se ne specificira druga vrijednost. U sljedećem primjeru pretpostavljena vrijednost je "red":

<xs:element name="color" type="xs:string" default="red"/>

Page 69: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 8

Fiksne vrijednosti se također automatski pridružuju elementu. Nije moguće specificirati neku drugu vrijednost. U sljedećem primjeru fiksna vrijednost je "red":

<xs:element name="color" type="xs:string" fixed="red"/>

Atribut

Jednostavni elementi ne mogu imati atribute. Ako element ima atribute, onda se on promatra kao složeni tip (complex type). Pritom se atribut sam za sebe uvijek deklarira kao jednostavni tip..

Sintaksa za definiranje atributa je:

<xs:atribut name="xxx" type="yyy"/>

gdje je xxx ime atributa, a yyy je tip podatka tog atributa.

Ovdje je jedan XML element s atributom:

<lastname lang="EN">Smith</lastname>

A ovdje odgovarajuća jednostavna definicija atributa:

<xs:atribut name="lang" type="xs:string"/>

Deklaracija pretpostavljenih i fiksnih vrijednosti za atribute

Atributi mogu imati pretpostavljenu ili fiksnu vrijednost.

Pretpostavljenu vrijednost se automatski pridružuje atributu kad se ne specificira druga vrijednost. U sljedećem primjeru pretpostavljena vrijednost je "EN":

<xs:atribut name="lang" type="xs:string" default="EN"/>

Fiksne vrijednosti se također automatski pridružuju atributu. Nije moguće specificirati neku drugu vrijednost. U sljedećem primjeru fiksna vrijednost je "EN":

<xs:atribut name="lang" type="xs:string" fixed="EN"/>

Pretpostavlja se da su svi atributi proizvoljni. Da se eksplicitno izrazi kako je atribut proizvoljan (optional), koristi se "use" atribut:

<xs:atribut name="lang" type="xs:string" use="optional"/>

A ako se atribut zahtijeva piše se „required“:

Page 70: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 9

<xs:atribut name="lang" type="xs:string" use="required"/>

Restrikcije na sadržaj

Kad XML element ili atribut ima definiran tip, onda je automatski postavljena restrikcija na elementni ili atributni sadržaj. Ako je XML element tipa "xs:date" i sadrži string poput "Hello Mother", onda element neće proći provjeru valjanosti (validation).

Osim toga moguć je XML schema-ma dodati vlastite restrikcije na XML elemente i atribute. Ove restrikcije se zovu obličja (facets).

Restrikcije na vrijednosti

Ovaj primjer definira element nazvan "age" sa restrikcijom. Vrijednost elementa „age“ ne može biti manje od 0 ili veće od 100:

<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element>

Restrikcije na skup vrijednosti

Ograničiti sadržaj XML element na skup prihvatljivih vrijednosti, moguće je upotrebom „enumeration“ ograničenja.

Ovaj primjer definira element nazvan "car":

<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "car" je jednostavni tip s restrikcijom. Dopuštene vrijednosti su: Audi, Golf, BMW.

Gornji primjer može se također napisati ovako:

Page 71: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 10

<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>

Primjedba: U ovom slučaju tip "carType" može se koristiti i od strane drugog elemente budući da nije dio "car" elementa.

Restrikcije na niz vrijednosti

Ograničiti sadržaj XML elementa da smije definirati samo niz brojeva ili slova, postiže se preko uzorka s ograničenjem.

Ovaj primjer definira element nazvan "letter":

<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "letter" je jednostavan tip sa restrikcijom. Jedina dopustiva vrijednost je JEDAN od MALIH slova iz popisa a do z.

Sljedeći primjer definira element nazvan "initials":

<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "initials" je jednostavan tip sa restrikcijom. Jedina dopustiva vrijednost su TRI VELIKA slova iz popisa A do Z.

Sljedeći primjer definira element nazvan "initials":

<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>

Page 72: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 11

</xs:restriction> </xs:simpleType> </xs:element>

Element "initials" je jednostavan tip sa restrikcijom. Jedina dopustiva vrijednost su TRI MALA ili VELIKA slova iz popisa a do z, odnosno A do Z.

Sljedeći primjer definira element nazvan "choice":

<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "choice" je jednostavan tip sa restrikcijom. Jedina dopustiva vrijednost JEDAN od sljedećih slova: x, y, ili z.

Sljedeći primjer definira element nazvan "prodid":

<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "prodid" je jednostavan tip sa restrikcijom. Jedine dopustive vrijednosti su PET znamenki u nizu, a svaka znamenka mora biti u području od 0 do 9.

Ostale restrikcije na niz vrijednosti

Ovaj primjer definira element nazvan "letter":

<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "letter" je jednostavan tip sa restrikcijom. Dopustive vrijednosti su nula ili više pojavaka malih slova od a do z.

Ovaj primjer također definira element nazvan "letter":

Page 73: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 12

<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "letter" je jednostavan tip sa restrikcijom. Dopustive vrijednosti su jedan ili više pojavaka parova malog slova nakon kojeg slijedi veliko, iz skupa slova od a do z, odnosno, A do Z.

Sljedeći primjer definira element nazvan "gender":

<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "gender" je jednostavan tip sa restrikcijom. Jedine dopustive vrijednosti su male ILI female.

Sljedeći primjer definira element nazvan "password":

<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "password" je jednostavan tip sa restrikcijom. Mora biti točno 8 znakova u retku i ti znakovi moraju biti mala ili velika slova od a do z ili znamenke od 0 do 9.

Restrikcije na znakove praznina

Da bi se specificiralo kako će se obraditi praznine, potrebno je koristiti whiteSpace ograničenje.

Sljedeći primjer definira element nazvan "address":

<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/>

Page 74: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 13

</xs:restriction> </xs:simpleType> </xs:element>

Element "address" je jednostavan tip s restrikcijom. Ograničenje whiteSpace je postavljeno na "preserve", što znači da XML procesor NEĆE maknuti bilo koju prazninu ili prazni redak.

Ovaj primjer takodjer definira element nazvan address":

<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "address" je jednostavan tip s restrikcijom. Ograničenje whiteSpace je postavljeno na "replace", što znači da će XML procesor zamijeniti bilo koje znakove praznina (line feeds, tabs, spaces, i carriage returns) s prazninama, razmacima.

Ovaj primjer takodjer definira element nazvan address":

<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>

Element "address" je jednostavan tip s restrikcijom. Ograničenje whiteSpace je postavljeno na "collapse", što znači da ĆE XML procesor izbaciti sve znakove praznina (line feeds, tabs, spaces, i carriage returns) i reducirati ih na jedan razmak. Razmaci iza ili ispred znakova (leading i trailing spaces) će jednostavno nestati.

Restrikcije na duljinu

Ograničenje duljine neke vrijednosti elementa, upravlja se ograničenjima: length, maxLength i minLength.

Ovaj primjer definira element nazvan "password":

<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction>

Page 75: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 14

</xs:simpleType> </xs:element>

Element "password" je jednostavan tip s restrikcijom. Vrijednost mora biti točno 8 znakova duga.

Ovaj primjer definira još jedan element nazvan "password":

<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>

Ovaj element "password" je jednostavan tip s restrikcijom. Vrijednost mora biti najmanje 5, a najviše 8 znakova duga.

Restrikcije za tipove podataka

Ograničenje Opis enumeration Definira popis dopuštenih vrijednosti fractionDigits Specificira maksimalan broj dopuštenih decimalnih mjesta. Mora biti

jednak ili veći od nule. length Specificira točan broj dopuštenih znakova ili članova popisa. Mora biti

jednak ili veći od nule. maxExclusive Specificira gornju među za numeričke vrijednosti (vrijednost mora biti

manja od ove vrijednosti) maxInclusive Specificira gornju među za numeričke vrijednosti (vrijednost mora biti

manja ili jednaka od ove vrijednosti) maxLength Specificira maksimalan broj dopuštenih članova popisa. Mora biti jednak

ili veći od nule. minExclusive Specificira donju među za numeričke vrijednosti (vrijednost mora biti

veća od ove vrijednosti) minInclusive Specificira donju među za numeričke vrijednosti (vrijednost mora biti

veća ili jednaka od ove vrijednosti) minLength Specificira maksimalan broj dopuštenih članova popisa. Mora biti jednak

ili veći od nule. pattern Definira točan broj dopuštenih znakova. totalDigits Specificira točan broj dopuštenih znamenki. Mora biti veći od nule. whiteSpace Specificira kako će se dohvaćati prazna mjesta (line feeds, tabs, spaces,

i carriage returns)

Page 76: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 15

Složeni element

Složeni element je XML element koji sadrži elemente i/ili atribute.

Postoje četiri vrste složenih elemenata:

• prazni elementi • elementi koji sadrže samo druge elemente • elementi koji sadrže samo tekst • elemente koji sadrže i druge elemente i tekst

Primjedba: Svaki od ovih elemenata mogu također sadržavati atribute!

Primjeri složenih XML elemenata

Složeni XML element, "product", koji je prazan:

<product pid="1345"/>

Složeni XML element, "employee", koji sadrži samo druge elemente:

<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

Složeni XML element, "food", koji sadrži samo tekst:

<food type="dessert">Ice cream</food>

Složeni XML element, "description", koji sadrže i druge elemente i tekst:

<description> It happened on <date lang="norwegian">03.03.99</date> .... </description>

Definiranje složenih elemenata

Neka se promotri složeni XML element, "employee", koji sadrži samo druge elemente:

<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

Page 77: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 16

U XML schema-i složeni elementi mogu se definirati na različite načine:

1. "employee" element može se deklarirati direktno imenujući element, kao na ovaj način:

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

Ako se koristi gore opisana metoda, onda samo "employee" element može koristiti specificirani složeni type. Treba primijetiti da su djeca elementi (child elements), "firstname" i "lastname", su okruženi sa <sequence> indikatorom. To znači da se djeca elementi moraju pojaviti u istom redoslijedu kako su deklarirani: prvo "firstname", a onda "lastname".

2. Element "employee" može imati tipski atribut koji referencira ime složenog tipa koji se koristi:

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

Ako se koristi gore opisana metoda, onda se nekoliko elemenata može referencirati na isti složeni tip, na primjer ovako:

<xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>

Moguće je također utemeljiti složeni tipski element na postojećem složenom tipu i dodati neke elemente, kao na primjer:

<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/>

Page 78: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 17

<xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>

Definiranje složenih tipova za prazne elemente

Prazni složeni element može sadržavati atribut; ali on ne može imati neki sadržaj između otvorenih i zatvorenih tag-ova.

Prazan XML element:

<product prodid="1345" />

Element "product", definiran poviše, uopće nema sadržaj. Definirati tip bez sadržaja, mora se s tipom koji dopušta samo elemente u svom sadržaju, ali bez stvarnog deklariranja bilo kojeg elementa, kao na primjer:

<xs:element name="product"> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:integer"> <xs:atribut name="prodid" type="xs:positiveInteger"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element>

U gornjem primjeru definiran je complexType koji ima complexContent, tj. samo elemente. Element complexContent element poručuje da se namjerava sažeti ili proširiti sadržaj modela složenog tipa i da restrikcija cijelog broja deklarira jedan atribut, ali ne uvodi sadržaj nekog elementa.

Međutim, moguće je deklarirati element 'product' zgusnutije, poput:

<xs:element name="product"> <xs:complexType> <xs:atribut name="prodid" type="xs:positiveInteger"/> </xs:complexType>

Page 79: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 18

</xs:element>

Moguće je dati i complexType element ime, i pustiti da "product" element ima tip atributa koji se referira na ime od complexType (ako se koristi ova metoda, onda nekoliko elemenata može referencirati isti složeni tip):

<xs:element name="product" type="prodtype"/> <xs:complexType name="prodtype"> <xs:atribut name="prodid" type="xs:positiveInteger"/> </xs:complexType>

Definirati složeni Tip samo s elementom

Jedan "samo element" složeni tip sadrži element koji u sebi ima samo druge elemente.

XML element "person" sadrži samo druge elemente:

<person> <firstname>John</firstname> <lastname>Smith</lastname> </person>

To se može definirati kao "person" element u schema-i na ovaj način:

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

Primijetite <xs:sequence> tag. On znači da se definirani elementi ("firstname" i "lastname") moraju pojaviti u takvom redoslijedu unutar "person" elementa.

Moguć je zadati complexType elementu ime i načiniti da "person" element ima tip atributa koji se referencira na complexType ime (ako se koristi ova metoda, onda nekoliko elemenata može referencirati isti složeni tip):

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

Page 80: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 19

Definirati složeni Text-Only element (element sa samim tekstom)

To je složeni tekst element koji može sadržavati i atribute i tekst.

Ovaj tip sadrži samo jednostavni sadržaj (tekst i atribute), pa stoga dodajemo simpleContent element oko sadržaja. Kad se koristi jednostavni sadržaj, mora se definirati proširenje ILI unutar simpleContent elementa, kao ovdje:

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

ILI

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

Preporuka: Treba koristiti proširujući element za proširenje osnovnog jednostavnog tipa, a onda koristiti restriktivni element da se ograniči osnovni tip za element.

Ovdje je primjer XML elementa, "shoesize", koji sadrži text-only element:

<shoesize country="france">35</shoesize>

Sljedeći primjer deklarira complexType, "shoesize". Sadržaj se definira kao cjelobrojni tip podatka i "shoesize" element koji također sadrži element nazvan "country":

<xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:atribut name="country" type="xs:string" /> </xs:extension>

Page 81: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 20

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

Moguće je također complexType elementu dati ime, neka to bude "shoesize" element koji ima tipni atribut koji se referencira na ime complexType elementa (ako se koristi ova metoda,onda nekoliko elemenata može referencirati isti složeni tip):

<xs:element name="shoesize" type="shoetype"/> <xs:complexType name="shoetype"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:atribut name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType>

Definirati složene tipove s mješovitim sadržajem

Mješoviti složeni tipni elementi mogu sadržavati atribute, elemente i tekst.

XML element "letter", sadrži i elemente i tekst:

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

Primijetite da se tekst pojavljuje između elemenata. "name", "orderid", i "shipdate" su sve djeca od elementa letter. Sljedeće schema deklarira "letter" element:

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

Primjedba: Omogućiti znakovne podatke da se pojavljuju između elemenata djece od elementa letter, znači da mixed atribut treba bit postavljen u istinu (true). Tag

Page 82: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 21

<xs:sequence> znači da se elementi (name, orderid i shipdate) moraju pojavljivati u tom redoslijedu unutar "letter" elementa.

Može se također dati complexType elementu ime i načiniti da "letter" element ima atribut koji referencira ime od complexType (ako se koristi ova metoda,onda nekoliko elemenata može referencirati isti složeni tip):

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

Indikatori

S indikatorima se upravlja KAKO se elementi koriste u dokumentima.

Ima nekoliko vrsta indikatora:

Indikatori poretka:

• All • Choice • Sequence

Indikatori pojavka:

• maxOccurs • minOccurs

Indikatori skupine:

• Group name • atributGroup name

Indikatori poretka

Indikatori poretka koriste se za definiranje kako se elementi trebaju pojavljivati.

„All“ Indikator

Page 83: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 22

<all> indicator specificira pretpostavljenu vrijednost da elementi djece mogu se pojavljivati u bilo kojem rasporedu i da svaki element djeteta može se pojaviti jednom i samo jednom:

<xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>

Primjedba: kad se koristi<all> indikator može se postaviti <minOccurs> indikator na 0 ili 1, a <maxOccurs> indikator može se postaviti samo na 1

„Choice“ indikator

<choice> indikator određuje hoće li se jedan ili drugi element djeteta pojaviti:

<xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>

„Sequence“ indikator

<sequence> indikator specificira da se elementi djeteta mogu pojaviti u zadanom redoslijedu:

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

Page 84: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 23

„Occurrence“ indikatori

Indikatori poretka se koristi za definiranje kako ćesto se element pojavljuje.

Primjedba: Za sve "Order" i "Group" indikatore (any, all, choice, sequence, group name i group reference) pretpostavljena vrijednost za maxOccurs i minOccurs je 1!!!!!

„maxOccurs“ indikator

<maxOccurs> indikator specificira maximalni broj puta pojavljivanja elementa:

<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"/> </xs:sequence> </xs:complexType> </xs:element>

Gornji primjer pokazuje da se "child_name" element može najmanje jednom pojaviti (pretpostavljena vrijednost za minOccurs je 1), a najviše deset puta pojaviti u elementu "person".

„minOccurs“ indikator

<minOccurs> indikator specificira minimalni broj pojavaka nekog elementa:

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

Gornji primjer pokazuje da se "child_name" element može najmanje niti jednom pojaviti, a najviše deset puta pojaviti u elementu "person".

Da se dopusti nekom elementu pojavak neograničen broj puta, treba koristiti naredbu maxOccurs="unbounded".

Page 85: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 24

Radni primjer:

XML datoteka nazvana "Myfamily.xml":

<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Hege Refsnes</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>Tove Refsnes</full_name> <child_name>Hege</child_name> <child_name>Stale</child_name> <child_name>Jim</child_name> <child_name>Borge</child_name> </person> <person> <full_name>Stale Refsnes</full_name> </person> </persons>

Gornja XML datoteka sadrži korjenski element nazvan "persons". Unutar ovog korjenskog elementa definirano je nekoliko "person" elemenata. Svaki "person" element mora sadržavati "full_name" element djeteta i može sadržavati do pet "child_name" elemenata djeteta.

Ovdje je datoteka schema-e "family.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Page 86: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

_____________________________________________________________________________ M. Essert: WEB programiranje 1

M. Essert: WEB PROGRAMIRANJE

5. predavanje XSLT

XSL je kratica od EXtensible Stylesheet Language.

World Wide Web Consortium (W3C) započela je razvitak XSL jer postoji potreba za XML-utemeljenom jeziku stilskog uzorka.

XSL = XML Style Sheets

XML ne koristi unaprijed definirane tago-ove, pa njihovo značenje nije lako razumjeti.

Na primjer, <table> element može značiti tag od HTML tablice, komad namještaka ili nešto sasvim drugo, pa preglednik (browser) ne zna kako će to prikazati.

XSL opisuje kako će se XML document trebati prikazati i kakve elemente posjeduje!

XSL – je više od jezika stilskog uzorka

XSL sastoji se od tri dijela:

• XSLT – jezika za transformaciju XML dokumenata • XPath - jezika za pozicioniranje (navigaciju) u XML dokumentima • XSL-FO - jezika za formatiranje XML dokumenata

XSLT je jezik za transformaciju XML dokumenata u XHTML dokumente ili za druge XML dokumente.

XPath je jezik za navigaciju u XML dokumentu.

What is XSLT?

• XSLT znači XSL Transformations • XSLT je najvažniji dio od XSL • XSLT stableno transformira XML dokument u drugi XML dokument (npr. XHTML) • XPath za navigaciju u XML dokumentima • XSLT je W3C preporuka

Page 87: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 2

U transformacijskom procesu, XSLT koristi XPath da bi definirao dijelove izvornog dokumenta koji odgovaraju jednom ili više unaprijed definiranh uzoraka (predefined templates). Kad se odgovarajući uzorak podudara, XSLT će transformirat taj dio izvornog dokumenta u rezultirajući dokument.

XSLT je Web Standard

XSLT je nastao W3C preporukom od 16. studenoga 1999.

Svi današnji pregledici (browsers) podržavaju XML i XSLT.

Ispravna deklaracija stilskog uzorka

Korijenski (root) element koji deklarira dokument da bude XSL stilski uzorak je <xsl:stylesheet> ili <xsl:transform>. To su dva potpuna sinonima.

Ispravan način za deklaraciju po preporuci W3C je:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

ili:

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Da bi se pristupilo XSLT elementima, atributima i značajkama potrebno je deklarirati prostor XSLT imena na vrhu dokumenta.

Ako se koristi ovaj prostor imena, onda se mora također uključiti i atribut version="1.0".

XML Dokument

Ako se želi transformirati sljedeći XML dokument ("cdcatalog.xml") u XHTML:

<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year>

Page 88: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 3

</cd> . . . </catalog>

Gledanje XML datoteke u Firefox i Internet Explorer pregledniku: Otvoriti XML datoteku (uobičajeno je klikomna link, poveznicu) - XML dokument će se prikazati u boji označenim korijenom i njegovim eleemntima, djecom (child elements). Znak plusa (+) ili minusa (-) s lijeve strane elementa može se klikom ekspandirati (razvući) ili zgusnuti u strukturu elementa. Gledanje izvornog koda, čistog teksta, bez + i – znakova, postiže se izborom "View Page Source" ili "View Source" iz preglednikove padajućih ponuda.

Stvaranje XSL stilskog uzorka

Neka XSL stilski uzorak ("cdcatalog.xsl") bude transformacijski predložak:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Povezivanje XSL stilskog uzorka s XML dokumentom

Treba dodati XSL referencu unutar XML dokumenta ("cdcatalog.xml"):

<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> <catalog>

Page 89: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 4

<cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> . . . </catalog>

Ako se gleda kroz preglednik koji podržava XSLT dogodit će se vrlo lijepa pretvorba XML-a XHTML.

XSL stilski uzorak sastoji se od jednog ili više skupova pravila koji se zovu predlošci (templates).

Svaki predložak sadrži pravila koja će se primijeniti na određenom čvoru u stablu dokumenta, koji odgovarate čvoru u uzorku.

<xsl:template> Element

<xsl:template> element se koristi u gradnji predložaka (templates).

Atribut podudaranja (match atribute) koristi se za pridruživanje predloška XML elementu. Atribut podudaranja se također može definirati za čitav XML dokument. Vrijednost match atributa je XPath izraz (npr. match="/" definira cijeli dokument).

Pojednostavljena verzija XSL datoteke prethodnog primjera:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <tr> <td>.</td> <td>.</td> </tr>

Page 90: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 5

</table> </body> </html> </xsl:template> </xsl:stylesheet>

Budući da je XSL stilski uzorak jedan XML dokument on uvijek počinje sa XML deklaracijom, npr.: <?xml version="1.0" encoding="ISO-8859-1"?>.

Sljedeći element, <xsl:stylesheet>, definira da je ovaj dokument XSLT stilski predložak document (along with the version number and XSLT namespace attributes).

Element <xsl:template> definira predložak. Podudaranje match="/" atribut pridružuje predložak korijenu XML izvornog dokumenta.

Sadržaj unutar <xsl:template> elementa definira neke HTML elemente koji se ispisuju na izlaz.

Posljednje dvije linije definiraju kraj predloška i konac stilskog uzorka.

Resultat ove transformacije izgledat će ovako:

My CD Collection

Title Artist

. .

Resultat ovog primjera je malo razočaravajući, budući da nema snimanja podataka iz XML dokumenta na izlaz.

<xsl:value-of> element

Element <xsl:value-of> služi za izlučivanje, vađenje, vrijednosti izabranog čvora u stalblu XML dokumenta.

Neka se doda <xsl:value-of> elementa za vađenje vrijednosti nekog XML element i načini transformacija na izlaz:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th>

Page 91: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 6

</tr> <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Primjedba: vrijednost select atributa je XPath izraz. XPath izraz radi slično kao nagicaja u datotečnom sustavu (file system) gdje se sa znakom udesno kose crte (forward slash (/)) selektiraju podmape (subfolders, subdirectories).

Rezultat transformacije izgledat će ovog puta ovako:

My CD Collection

Title Artist

Empire Burlesque Bob Dylan

Rezultat je i opet malo razočaravajući, jer se u izlazni dokument presnimila samo jedan podatak ulaznog XML dokumenta.

<xsl:for-each> element

Element <xsl:for-each> dopušta izvođenje petlje u XSLT-u.

XSL element <xsl:for-each> može se koristiti za selektiranje i postavljanje svakog XML elementa određenog čvora:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr>

Page 92: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 7

</xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Rezultat transformacije izgledat će ovog puta ovako:

My CD Collection

Title Artist

Empire Burlesque Bob Dylan

Hide your heart Bonnie Tyler

Greatest Hits Dolly Parton

Still got the blues Gary More

Eros Eros Ramazzotti

One night only Bee Gees

Sylvias Mother Dr.Hook

Maggie May Rod Stewart

Romanza Andrea Bocelli

When a man loves a woman Percy Sledge

Black angel Savage Rose

1999 Grammy Nominees Many

For the good times Kenny Rogers

Big Willie style Will Smith

Tupelo Honey Van Morrison

Soulsville Jorn Hoel

The very best of Cat Stevens

Stop Sam Brown

Bridge of Spies T`Pau

Private Dancer Tina Turner

Midt om natten Kim Larsen

Pavarotti Gala Concert Luciano Pavarotti

The dock of the bay Otis Redding

Picture book Simply Red

Red The Communards

Unchain my heart Joe Cocker

Page 93: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 8

Filtriranje izlaza

Također je moguće filtrirati izlaz iz XML datoteke dodavajući kriterij za odabiranje atributa u <xsl:for-each> elementu.

<xsl:for-each select="catalog/cd[artist='Bob Dylan']">

Dopušteni filterski operatori su:

• = (equal) • != (not equal) • &lt; less than • &gt; greater than

Podešavanjem XSL stilskog uzorka:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> dobit će se ovakav rezultat transformacije:

My CD Collection

Title Artist

Empire Burlesque Bob Dylan

Page 94: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 9

Element <xsl:sort> služi za slaganje, sortiranje izlaza.

Za slaganje izlaza treba jednostavno dodati <xsl:sort> element unutar <xsl:for-each> elementa u XSL datoteku:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Primjedba: select atribut pokazuje koji XML element se sortira.

Rezultat transformacije izgledat će ovako:

My CD Collection

Title Artist

Romanza Andrea Bocelli

One night only Bee Gees

Empire Burlesque Bob Dylan

Hide your heart Bonnie Tyler

The very best of Cat Stevens

Greatest Hits Dolly Parton

Sylvias Mother Dr.Hook

Eros Eros Ramazzotti

Still got the blues Gary Moore

Page 95: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 10

Unchain my heart Joe Cocker

Soulsville Jorn Hoel

For the good times Kenny Rogers

Midt om natten Kim Larsen

Pavarotti Gala Concert Luciano Pavarotti

1999 Grammy Nominees Many

The dock of the bay Otis Redding

When a man loves a woman Percy Sledge

Maggie May Rod Stewart

Stop Sam Brown

Black angel Savage Rose

Picture book Simply Red

Bridge of Spies T`Pau

Red The Communards

Private Dancer Tina Turner

Tupelo Honey Van Morrison

Big Willie style Will Smith

<xsl:if> element

Element <xsl:if> se koristi za stavljanje uvjetne provjere na sadržaj XML datoteke.

Sintaksa je ovakva: <xsl:if test="expression"> ... ...some output if the expression is true... ... </xsl:if>

<xsl:if> element dodaje se unutar <xsl:for-each> elementa u XSL datoteci:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1">

Page 96: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 11

<tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:if test="price &gt; 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Primjedba: Vrijednost zahtijevanog test atributa sadrži izraz koji se izračunava.

Ovako napisani kod proslijedit će na izlaz samo elemente s naslovom i autorom od Cd-a kojima je cijena veća od 10.

Rezultat transformacije izgledat će ovako:

My CD Collection

Title Artist

Empire Burlesque Bob Dylan

Still got the blues Gary Moore

One night only Bee Gees

Romanza Andrea Bocelli

Black Angel Savage Rose

1999 Grammy Nominees Many

<xsl:choose> element

Element <xsl:choose> koristi se u sprezi sa elementima <xsl:when> i <xsl:otherwise> da bi se izrazili višestruki test uvjeti.

Sintaksa je ovakva: <xsl:choose> <xsl:when test="expression"> ... some output ... </xsl:when> <xsl:otherwise>

Page 97: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 12

... some output .... </xsl:otherwise> </xsl:choose>

Umetanje višestrukog uvjetnog testa u XML datoteku izgleda ovako:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price &gt; 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

S ovakvim kodom načinit će se tranformacija koja će s ljubičastom pozadinom obojiti stupac "Artist" kada (WHEN) je cijena CD-a veća od 10.

Rezultat transformacije izgledat će ovako:

My CD Collection

Title Artist

Empire Burlesque Bob Dylan

Hide your heart Bonnie Tyler

Greatest Hits Dolly Parton

Still got the blues Gary Moore

Page 98: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 13

Eros Eros Ramazzotti

One night only Bee Gees

Sylvias Mother Dr.Hook

Maggie May Rod Stewart

Romanza Andrea Bocelli

When a man loves a woman Percy Sledge

Black angel Savage Rose

1999 Grammy Nominees Many

For the good times Kenny Rogers

Big Willie style Will Smith

Tupelo Honey Van Morrison

Soulsville Jorn Hoel

The very best of Cat Stevens

Stop Sam Brown

Bridge of Spies T`Pau

Private Dancer Tina Turner

Midt om natten Kim Larsen

Pavarotti Gala Concert Luciano Pavarotti

The dock of the bay Otis Redding

Picture book Simply Red

Red The Communards

Unchain my heart Joe Cocker

Sljedeći primjer

Slijedi još jedan primjer koji sadrži dva <xsl:when> elementa:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose>

Page 99: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 14

<xsl:when test="price &gt; 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:when test="price &gt; 9"> <td bgcolor="#cccccc"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Taj kod će načiniti isto kao prethodni sa stupcima u kojima je cijena CD-a veća od 10, a sa sivom podlogom označit će stupce kada je cijena CD-a veća od 9, a manja od 10.

Rezultat transformacije izgledat će ovako:

My CD Collection

Title Artist

Empire Burlesque Bob Dylan

Hide your heart Bonnie Tyler

Greatest Hits Dolly Parton

Still got the blues Gary Moore

Eros Eros Ramazzotti

One night only Bee Gees

Sylvias Mother Dr.Hook

Maggie May Rod Stewart

Romanza Andrea Bocelli

When a man loves a woman Percy Sledge

Black angel Savage Rose

1999 Grammy Nominees Many

For the good times Kenny Rogers

Big Willie style Will Smith

Tupelo Honey Van Morrison

Soulsville Jorn Hoel

The very best of Cat Stevens

Page 100: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 15

Stop Sam Brown

Bridge of Spies T`Pau

Private Dancer Tina Turner

Midt om natten Kim Larsen

Pavarotti Gala Concert Luciano Pavarotti

The dock of the bay Otis Redding

Picture book Simply Red

Red The Communards

Unchain my heart Joe Cocker

<xsl:apply-templates> element

Element <xsl:apply-templates> primjenjuje predložak na trenutačni element ili na čvorove djece (child nodes) trenutačnog elementa.

Ako se doda atribut za selektiranje na <xsl:apply-templates> element on će obraditi samo djecu elementa koji sde podudara s vrijednosti atributa. Selekt atribut se koristi da se specificira redoslijed po kojem se čvorovi s djecom elementa obrađuju.

Neka se promotri sljedeći XSL uzorak:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="cd"> <p> <xsl:apply-templates select="title"/> <xsl:apply-templates select="artist"/> </p> </xsl:template> <xsl:template match="title"> Title: <span style="color:#ff0000"> <xsl:value-of select="."/></span> <br /> </xsl:template> <xsl:template match="artist"> Artist: <span style="color:#00ff00"> <xsl:value-of select="."/></span> <br />

Page 101: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 16

</xsl:template> </xsl:stylesheet>

Rezultat transformacije izgledat će ovako:

My CD Collection

Title: Empire Burlesque Artist: Bob Dylan

Title: Hide your heart Artist: Bonnie Tyler

Title: Greatest Hits Artist: Dolly Parton

Title: Still got the blues Artist: Gary Moore

Title: Eros Artist: Eros Ramazzotti

Title: One night only Artist: Bee Gees

Title: Sylvias Mother Artist: Dr.Hook

Title: Maggie May Artist: Rod Stewart

Title: Romanza Artist: Andrea Bocelli

Title: When a man loves a woman Artist: Percy Sledge

Title: Black angel Artist: Savage Rose

Title: 1999 Grammy Nominees Artist: Many

Title: For the good times Artist: Kenny Rogers

Title: Big Willie style Artist: Will Smith

Page 102: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 17

Title: Tupelo Honey Artist: Van Morrison

Title: Soulsville Artist: Jorn Hoel

Title: The very best of Artist: Cat Stevens

Title: Stop Artist: Sam Brown

Title: Bridge of Spies Artist: T`Pau

Title: Private Dancer Artist: Tina Turner

Title: Midt om natten Artist: Kim Larsen

Title: Pavarotti Gala Concert Artist: Luciano Pavarotti

Title: The dock of the bay Artist: Otis Redding

Title: Picture book Artist: Simply Red

Title: Red Artist: The Communards

Title: Unchain my heart Artist: Joe Cocker

Ako preglednik to podržava, XSLT se može koristiti za transformaciju XML dokumenta u XHTML unutar preglednika.

XML i XSLT datoteka

Ako se pogleda XML dokument:

<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist>

Page 103: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 18

<country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> . . . </catalog>

I pripadni XSL stilski uzorak:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title" /></td> <td><xsl:value-of select="artist" /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

Primjećuje se da XML datoteka nema referencu na XSL datoteku.

Važno: To znači da se XML datoteka može transformirati koristeći različite XSL stilske uzorke.

Transformacija XML u XHTML na Serveru

Ovdje je ASP source kod potreban za transformaciju XML datoteke u XHTML na serveru:

<% 'Load XML set xml = Server.CreateObject("Microsoft.XMLDOM") xml.async = false

Page 104: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 19

xml.load(Server.MapPath("cdcatalog.xml")) 'Load XSL set xsl = Server.CreateObject("Microsoft.XMLDOM") xsl.async = false xsl.load(Server.MapPath("cdcatalog.xsl")) 'Transform file Response.Write(xml.transformNode(xsl)) %>

XML Editor

Danas je XML važna technologija i razvitak projekata koji koriste na XML-utemeljenim tehnologijama poput:

• XML Schema za definiranje XML struktura i tipova podataka • XSLT za transformaciju XML podataka • SOAP za razmjenu XML podataka među različitim aplikacijama • WSDL za opis web servisa • RDF za opis web izvorišta (resources) • XPath i XQuery za pristup XML podacima • SMIL za definiciju grafike

Da bi se napisao XML dokument bez pogreški, potrebno je koristiti dobar XML editor!

Profesionalni XML editori omogućuju:

• Automatsko dodavanje završnih tag-ova na sve otvorene tag-ove • Usmjeruje na pisanje valjanog XML-a • Provjerava XML prema DTD • Provjerava XML prema Schemi • Bojom označuje XML sintaksu

XSL uključuje 3 jezika: XSLT, XPath i XSL-FO.

XPath

XPath se koristi za navigaciju kroz elemente i attribute u XML dokumentu.

XPath je glavni element u W3C-u za XSL standard. Razumijevanje Xpath-a je temelj za napredno korištenje XML-a.

Bez znanja Xpath-a, ne može se načiniti XSLT dokument.

XSL-FO

XSL-FO opisuje formatiranje XML podataka za izlaz na zaslon, papir ili neki drugi medij.

Page 105: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 20

XSL-FO dokument su XML datoteke za informaciju o vanjskom izgledu i vanjskom sadržaju.

XSLT elementi

Elementi Opis IE N apply-imports Applies a template rule from an imported style sheet 6.0 apply-templates Applies a template rule to the current element or to the

current element's child nodes 5.0 6.0

attribute Adds an attribute 5.0 6.0 attribute-set Defines a named set of attributes 6.0 6.0 call-template Calls a named template 6.0 6.0 choose Used in conjunction with <when> and <otherwise> to

express multiple conditional tests 5.0 6.0

comment Creates a comment node in the result tree 5.0 6.0 copy Creates a copy of the current node (without child nodes and

attributes) 5.0 6.0

copy-of Creates a copy of the current node (with child nodes and attributes)

6.0 6.0

decimal-format Defines the characters and symbols to be used when converting numbers into strings, with the format-number() function

6.0

element Creates an element node in the output document 5.0 6.0 fallback Specifies an alternate code to run if the processor does not

support an XSLT element 6.0

for-each Loops through each node in a specified node set 5.0 6.0 if Contains a template that will be applied only if a specified

condition is true 5.0 6.0

import Imports the contents of one style sheet into another. Note: An imported style sheet has lower precedence than the importing style sheet

6.0 6.0

include Includes the contents of one style sheet into another. Note: An included style sheet has the same precedence as the including style sheet

6.0 6.0

key Declares a named key that can be used in the style sheet with the key() function

6.0 6.0

message Writes a message to the output (used to report errors) 6.0 6.0 namespace-alias Replaces a namespace in the style sheet to a different

namespace in the output 6.0

number Determines the integer position of the current node and formats a number

6.0 6.0

otherwise Specifies a default action for the <choose> element 5.0 6.0 output Defines the format of the output document 6.0 6.0 param Declares a local or global parameter 6.0 6.0

Page 106: M. Essert: WEB PROGRAMIRANJE 1. predavanjedownload.tutoriali.org/Tutorials/Web_Aplikacije/Web_Programiranje.pdfM. Essert: WEB programiranje 1 M. Essert: WEB PROGRAMIRANJE, 1. predavanje

____________________________________________________________________________ M. Essert: WEB programiranje 21

preserve-space Defines the elements for which white space should be preserved

6.0 6.0

processing-instruction Writes a processing instruction to the output 5.0 6.0 sort Sorts the output 6.0 6.0 strip-space Defines the elements for which white space should be

removed 6.0 6.0

stylesheet Defines the root element of a style sheet 5.0 6.0 template Rules to apply when a specified node is matched 5.0 6.0 text Writes literal text to the output 5.0 6.0 transform Defines the root element of a style sheet 6.0 6.0 value-of Extracts the value of a selected node 5.0 6.0 variable Declares a local or global variable 6.0 6.0 when Specifies an action for the <choose> element 5.0 6.0 with-param Defines the value of a parameter to be passed into a

template 6.0 6.0

XQuery 1.0, XPath 2.0, i XSLT 2.0 dijele istu funkcijsku knjižnicu.

XSLT Functions

XSLT uključuje preko 100 ugrađenih (built-in) funkcija. Postoje funkcije za string vrijednosti, numeričke vrijednosti, usporedbu datuma i vremena, manipulaciju nizovima, Boolove vrijednosti i drugo.

Name Description current() Returns the current node document() Used to access the nodes in an external XML document element-available() Tests whether the element specified is supported by the XSLT

processor format-number() Converts a number into a string function-available() Tests whether the function specified is supported by the XSLT

processor generate-id() Returns a string value that uniquely identifies a specified node key() Returns a node-set using the index specified by an <xsl:key>

element system-property() Returns the value of the system properties unparsed-entity-uri() Returns the URI of an unparsed entity