xml i multimedija

49
XML i multimedija Goran Repinc Antonija Malenica Goran Ljubej Jurica Levatić Ilija Pavlic

Upload: rupert

Post on 04-Jan-2016

66 views

Category:

Documents


7 download

DESCRIPTION

XML i multimedija. Goran Repinc Antonija Malenica Goran Ljubej Jurica Levatić Ilija Pavlic. Uvod. HTML tagovi i semantika – pretraživanje Proširenje skupa tagova Standard Generalized Markup Language (SGML) koristi se u izdavačkoj industriji složeno parsiranje - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: XML i multimedija

XML i multimedija

Goran RepincAntonija Malenica

Goran LjubejJurica Levatić

Ilija Pavlic

Page 2: XML i multimedija

Uvod

• HTML tagovi i semantika – pretraživanje• Proširenje skupa tagova• Standard Generalized Markup Language

(SGML) – koristi se u izdavačkoj industriji– složeno parsiranje

• XML – podskup SGML-a prilagođen za internet

Page 3: XML i multimedija

XML

• Omogućava kreiranje vlastitih skupova elemenata

• Oslobađa web stranice od ograničenja HTML-a

Page 4: XML i multimedija

XML kao temelj za markup jezike

• XML Document Type Definition – DTD• XML 1.0 World Wide Web Consortium

Recommendation početkom 1998.

Page 5: XML i multimedija

XML sintaksa

• Tag – zatvaranje, pravilno gniježđenje• Atribut – imena, vrijednosti u navodnicima• Ampersand (&) – escape znak• “well-formed” – sintaktička ispravnost

Page 6: XML i multimedija

DTD

• Document Type Definition• Specifikacija skupa dopuštenih elemenata,

njihovih atributa i popisa elemenata koje mogu sadržavati

Page 7: XML i multimedija

DTD

• Kada je dokument u skladu sa DTDom – ima dobro definitanu strukturu (well-defined)

• Primjer:– XHTML je podskup od XML-a koji je u skladu s

DTD-om

Page 8: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

XML deklaracija

Markup deklaracija

Deklaracija atributa

Page 9: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Regularni izrazi

Page 10: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Page 11: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Redoslijed elemenata

Page 12: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Page 13: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Parametri

Page 14: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Page 15: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Defaultna vrijednost

Page 16: XML i multimedija

Primjer<?xml version='1.0'?>

<!ELEMENT naslov (#PCDATA)* ><!ELEMENT autor (#PCDATA)* ><!ELEMENT editor (#PCDATA)* ><!ELEMENT izdavac (#PCDATA)* >

<!ELEMENT cijena EMPTY ><!ATTLIST cijena

kuna CDATA #REQUIREDeura CDATA #IMPLIED >

<!ELEMENT zaliha EMPTY ><!ATTLIST zaliha

trenutno CDATA #REQUIREDnaruceno CDATA "0" >

<!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)><!ATTLIST knjiga

id ID #REQUIRED >

<!ELEMENT knjige (knjiga+) >

Page 17: XML i multimedija

NamespacesDTD je nužan za provjeru valjanosti XML dokumenta, ali XML dokument se može procesirati i bez DTD-a.

Tada se može koristiti bilo koji skup imena za elemente i atribute.

Razni autori koriste ista imena u različite svrhe.

Page 18: XML i multimedija

Namespaces<lecturer>

<title>Dr</title><forename>Froederick</forename><surname>Frankenstein</surname>

</lecturer> <paper>

<title>On the use of brains</title><author> F. Frankenstein</author>

</paper>

Korištenje imena title u oba slučaja ima smisla.Ima smisla i da se oba fragmenta pojave u istom dokumentu.

Page 19: XML i multimedija

NamespacesDa bi se olakšalo stvaranje jedinstvenih imena XML namespaces definira dvorazinski sustav imenovanja. Ime elementa ili atributa ispred sebe može imati prefiks odvojen od imena dvotočkomNa ta način možemo koristiti prefiks bbl za bibliografske podatke ( bbl:title ), a prefiks ppl za osobne podatke (ppl:title)

<ppl:lecturer><ppl:title>Dr</ppl:title><ppl:forename>Froederick</ppl:forename><ppl:surname>Frankenstein</ppl:surname>

</ppl:lecturer>

Page 20: XML i multimedija

NamespacesSamo po sebi, korištenje prefiksa ne rješava problem jedinstvenosti imena – samo ga prebacuje na problem jedinstvenosti prefika.No XML namespaces omogućava povezivanje prefikasa sa URL-om. Postoje mehanizmi koji osiguravaju jedinstvenost URL-a, pa bi korištenje URL-a kao prefiksa riješilo problem. Namespaces omogućava da se umjesto dugog URL-a koristi kratak prefiks.Povezivanje prefikasa sa URL-om služi samo za osiguravanje jedinstvenosti. Namespace URL ne mora pokazivati na ništa.

Page 21: XML i multimedija

Deklaracija

Da bi se deklarirao namespace u dokumentu, URL se dodjeljuje atributu čije ime se sastoji od prefiksa xmlns: i imena prefiksa namespaces-a.Ako želimo deklarirati namespace bbl s URL-om http://www.digitalmultimedia.org/biblio koristiomo:

xmlns:bbl = “http://www.digitalmultimedia.org/biblio “

Page 22: XML i multimedija

DosegNamespace se može deklarirati u bilo kojem elementu i pripada dosegu tog elementa.Doseg elementa uključuje i otvarajući tag pa se definirani prefiks može koristi u imenu elemenat koji ga je deklarirao.Namespace se obično deklarira u korijenskom elementu da bi se mogao koristiti u cijelom dokumentu.Neka se korijenski element zove books.

<bbl:books xmlns:bbl = “http://www.digitalmultimedia.org/biblio “ >

Page 23: XML i multimedija

Defaultni namespace

Ako se prilikom deklariranja namespace-a ne zada prefiks, deklarira se defaultni namespace.Za sva imena bez prefiksa smatra se da pripadaju defaultnom namespace-u.Ovo se koristi kada sva imena u dokumentu pripadaju istom namespace-u pa nije potrebno navoditi prefiks ispred svakog imena.

<html xmlns = “http://www.w3.org/TR/xhtml1”>

Page 24: XML i multimedija

Namespaces i DTD

Namespace se ne može deklarirati unutar DTD-a.Međutim, prefiksi se koriste unutar DTD-a da bi procesirani dokument bio valjan.

<!ELEMENT bbl:book (bbl:title, (bbl:author+|bbl:editor+), bbl:price, bbl:publisher, bbl:numberinstock) ><!ATTLIST bbl:books id ID #REQUIRED >

Page 25: XML i multimedija

Stylesheets

XML ne nudi nikakve mogućnost kontroliranja prezentacije podataka.Budući da skup imena u XML nije fiksan, nema smisla pokušati definirati defaultni prikaz.Ako se XML koristi za razmjenu podataka to nije važno.Zato se, ako se sadržaj želi prikazati na ljudima prihvatljiv način, prezentacija sadržaja mora zadati u nekoj vanjskoj datoteci.

Page 26: XML i multimedija

Stylesheets

Ako je način prikaza podataka zadan u datoteci books.css onda se ta datoteka povezuje s XML-om tako da se u XML dokument stavi instrukcija:

<?xml.stylesheet href=''books.css'' type=''text/css'' ?>

CSS se može ali i ne mora koristiti. Bilo koji stylesheet kojeg preglednik podržava se može koristiti i to se mora navesti u atributu type.

Page 27: XML i multimedija

CSS i XML

Korištenje CSS-a za XML je generalizacija korištenja CSS-a za HTML. Za svaki tip elementa se definiraju pravila prikazivanja.

book { display: block;width: 360px;margin: 15px 35px 2 px;text-indent: 15 px;font-family: Verdana,Ariel,Helvetica,sans-serif;font-size: 14px; }

title { font-style: italic; }title:after {content: "," }publisher { text-decoration: underline; }

Page 28: XML i multimedija

CSS i XML

Ponekad se između elemenata XML dokumenta želi ubaciti neki tekst ili interpunkcija.Za to se koriste selektori :before i :after koji se nadodaju na ime elementa i svojstvo content koje određuje koji tekse će se staviti prije ili poslije prikaza elementa.Ako želimo iza svakog elementa title ubaciti zarez to radimo:

title:after { content: '','' }

Page 29: XML i multimedija

CSS i XML

Ponekad tekst koji želimo ubaciti ovisi o položaju elementa unutar XML dokumenta. CSS ne daje podršku za razlikovanje slučajeva.Stoga se ili u XML dokument moraju ubaciti dodatni elementi ili se koriste različiti tagovi za elemente na različitim pozicijama.

Page 30: XML i multimedija

CSS i XML

Ukoliko želimo prikazati vrijednost atributa X elementa Y koristimo attr(X) notaciju, gdje je X ime atributa, i content svojstvo.

Y:before { content: attr(X); }

Ako je atribut X opcionalan koristimo sljedeću notaciju:

Y[X]:before { content: attr(X); }

Page 31: XML i multimedija

CSS i XML

Ukoliko želimo selektirati samo elemente čiji atribut X ima zadanu vrijednost V, to možemo učiniti koristeći sljedeću notaciju:

Y[X=‘V’] { color #C00;}

Page 32: XML i multimedija

XSLT i XSL – FO

• Pomoću CSS ne možemo– Prikazivati elemente u redosljedu drugom nego se

pojavljuju u XML dokumentu– Obavljati bilo kakve izračune– dobiti ili formatirati sadržaj, listu ilustracija itd.

Page 33: XML i multimedija

XSL

• XSL (The Extensible Stylesheet Language) osmišljen je za prevladavanje davedenih nedostataka CSS-a

• Kompleksniji od CSS-a• Ima karakteristike funkcionalnog programskog

jezika

Page 34: XML i multimedija

XSL

• Formatiranje se odvija u dvije faze:1. strukturno stablo originalnog XML dokumenta se transformira u novo stablo, sa mogućim preslagivanjem, brisanjem ili dodavanjem čvorova2. čvorovi se interpretiraju te je dokument renderiran na ekran, papir ili drugi medij

Page 35: XML i multimedija

XSLT, XSL – FO, XPath

• U ranoj fazi XSL je podjeljen na tri komponente:– XSLT– XSL – FO– XPath

Page 36: XML i multimedija

XSLT

• XSLT (The Extensible Stylesheet Language for Transformation) je povezan sa prvom fazom formatiranja

• Npr. transformacija XML dokumenta u XHTML

Page 37: XML i multimedija

XSL - FO

• Obuhvaća formatirajuće objekte• Definira jezik baziran na XML-u koji je

pogodan za označavanje dokumenta sa tagovima koji označavaju kako treba izgledati prilikom prikazivanja

Page 38: XML i multimedija

XPath

• Koristi se za adresiranje čvorova u stablu koristeći njihovu poziciju u hijerarhiji stabla

• Lokacija (Location path) je dana kao skup instrukcija koje treba sljediti da bi došli do željene točke u dokumentu

• Za razliku od URL-a koji specificira put do file-a ili direktorija, XPath gradi skup čvorova koji zadovoljavaj u dane instrukcije

Page 39: XML i multimedija

XPath

Primjeri:• /books/book/price

– Označava skup svih čvorova price• /books/book[2]/price

– Označava cijenu druge knjige• child::book[position() = 2]

– Isto kao i prethodni primjer (“==“ = “=“)• /books/book/price[@euro > 50]

– Sve knjige čija je cijena veća od 50

Page 40: XML i multimedija

XPointer

• Kako je XML “generalizacija” HTML-a, tako je XPointer “generalizacija” URL-a

• URL: www.nekiurl.com/#naziv-elementa• XPointer: #xpointer(/books/book[2]/price)

• URL: pokazuje na eksplicitno nazvani dio dokumenta (atribut name)

• XPointer: može pokazivati na bilo koji element u dokumentu, bez prethodnog određivanja imena

Page 41: XML i multimedija

XPointer

• XPointeri se dodaju na URL iza oznake naziva “#”• Vrste XPointera:

– shorthand pointer– scheme-based pointer

• xpointer()• element()

Page 42: XML i multimedija

XPointer – shorthand pointer• Slično kao anchors u HTML-u• Sastoji se od naziva• Odnosi se na prvi element u dokumentu koji ima

atribute čija je vrsta definirana kao ID u DTD-u i čija vrijednost odgovara nazivu pointera

• Za razliku od HTML-a može se odnositi na bilo koji atribut bilo kojeg elementa, ali nam je nužan DTD

Page 43: XML i multimedija

XPointer - scheme-based• Sheme omogućuju proširivost Xpointera, jer je moguće

dodavati nove sheme• Za sada postoje dvije: xpointer(), element()• Sheme se sastoje od naziva i podataka u zagradama• xpointer() - kao podatke prima XPath izraz

– #xpointer(/books/book[2]/price) - odnosi se na element price druge knjige u dokumentu

• element() – jednostavniji način adresiranja čvorova, korištenjem nizova brojeva– #element(/1/2) – odnosi se na drugo dijete prvog dijeteta

od korijena dokumenta

Page 44: XML i multimedija

XPointer – scheme-based• Moguće je kombinirati različite sheme u jednom Xpointeru• Općenito, scheme-based pointer se može sastojati od više

dijelova pointera, koji se procesiraju s lijeva na desno• Prvi dio pointera koji zbilja pokazuje na lokaciju (i takva vrsta

je implementirana) određuje vrijednost cijelog pointera• tri različita načina pronalaženja istog elem. u XML-u:

– xpointer(/books/book[2]/price)element(perl/3)element(/1/2/3)

Page 45: XML i multimedija

XLink• XPointer daje fleksibilan način identificiranja dijelova

dokumenata, no ne daje način korištenja tih definicija • XLink čini upravo to – omogućava definiranje skupa

elemenata za povezivanje dokumenata• XLink to postiže definiranjem namespace-ova koji sadrže

kolekcije atributa• Svaki element koji koristi atribute iz XLink namespace-a će se

tretirati kao element za povezivanje dokumenata• Za XLink je potrebno uključiti deklaraciju namespace-a

xmlns:xlink = “http://www.w3.org/1999/xlink”u početni tag dokumenta

Page 46: XML i multimedija

XLink• XLink ne definira elemente, nego skup vrsta elemenata, gdje

vrsta određuje način ponašanja elementa za povezivanje• Vrstu određuje atribut xlink:type• Taj atribut može poprimiti vrijednosti simple i extended• Ako xlink:type atribut elementa ima vrijednost X, onda taj

element zovemo X-type element• Tako se elementi vrste simple nazivaju simple-type elementi• simple-type: poveznice slične onima u HTML-u• extended-type: teoretski važna generalizacija poveznica za

povezivanje više dokumenata, u praksi predstavlja implementacijske probleme i nije inuitivno najjasnija

Page 47: XML i multimedija

XLink – simple-type element

• može imati (obično ima) atribut za lociranje xlink:href čija vrijednost je URL (koji može imati XPath identifikator dijela dokumenta)

• može sadržavati druge elemente i tekst radi vizualnog prikaza poveznice

• dodatno može imati još dva atributa koji određuju što se događa kada koristi link– xlink:show– xlink:actuate

Page 48: XML i multimedija

XLink – simple-type element• xlink:show

– vrijednosti atributa:• replace – prikaz dokumenta u istom prozoru

(HTML atribut: target=“_self”)• new – prikaz dokumenta u novom prozoru

(HTML atribut: target=“_blank”)• embed

– prikaz dokumenta kao dio izvornog dokumenta– poput img taga u HTML-u, ali fleksibilnije jer ne mora biti slika

nego bilo kakav dokument– za razliku do HTML-a ovakav simple-type element se ne mora

nužno prikazivati pri učitavanju dokumenata, način ponašanja određuje vrijednost atributa xlink:actuate

Page 49: XML i multimedija

XLink – simple-type element• xlink:actuate

– Vrijednosti ovog atributa:• onLoad - link se slijedi odmah nakon učitavanja dokumenta• onRequest – link se ne slijedi do eventa, poput klika mišem

• iz ovih razloga se sljedeći element ponaša kao img element u HTML-u: <picture xlink:type=“simple” xlink:show=“embed”

xlink:actuate=“onLoad” xlink:href=“../img/img1.jpg” />• a sljedeći element se ponaša kao HTML link:

<go xlink:type=“simple” xlink:show=“replace” xlink:actuate=“onRequest” xlink:href=“books/books.xml#xpointer(/books/book[2])> Perl </go>