1 / 49

XML i multimedija

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

rupert
Download Presentation

XML i multimedija

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

E N D

Presentation Transcript


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

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

  3. XML • Omogućava kreiranje vlastitih skupova elemenata • Oslobađa web stranice od ograničenja HTML-a

  4. XML kao temelj za markup jezike • XML Document Type Definition – DTD • XML 1.0 World Wide Web Consortium Recommendation početkom 1998.

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

  6. DTD • Document Type Definition • Specifikacija skupa dopuštenih elemenata, njihovih atributa i popisa elemenata koje mogu sadržavati

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

  8. Primjer XML deklaracija <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) > Markup deklaracija Deklaracija atributa

  9. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) > Regularni izrazi

  10. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) >

  11. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) > Redoslijed elemenata

  12. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) >

  13. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) > Parametri

  14. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) >

  15. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) > Defaultna vrijednost

  16. Primjer <?xml version='1.0'?> <!ELEMENT naslov (#PCDATA)* > <!ELEMENT autor (#PCDATA)* > <!ELEMENT editor (#PCDATA)* > <!ELEMENT izdavac (#PCDATA)* > <!ELEMENT cijena EMPTY > <!ATTLIST cijena kuna CDATA #REQUIRED eura CDATA #IMPLIED > <!ELEMENT zaliha EMPTY > <!ATTLIST zaliha trenutno CDATA #REQUIRED naruceno CDATA "0" > <!ELEMENT knjiga (naslov, (autor+|editor+), cijena, izdavac, zaliha)> <!ATTLIST knjiga id ID #REQUIRED > <!ELEMENT knjige (knjiga+) >

  17. Namespaces • DTD 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.

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

  19. Namespaces Da 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čkom Na 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>

  20. Namespaces Samo 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.

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

  22. Doseg Namespace 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 “ >

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

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

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

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

  27. 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; }

  28. 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: '','' }

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

  30. 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); }

  31. 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;}

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

  33. XSL • XSL (The Extensible Stylesheet Language) osmišljen je za prevladavanje davedenih nedostataka CSS-a • Kompleksniji od CSS-a • Ima karakteristike funkcionalnog programskog jezika

  34. 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 čvorova 2. čvorovi se interpretiraju te je dokument renderiran na ekran, papir ili drugi medij

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

  36. XSLT • XSLT (The Extensible Stylesheet Language for Transformation) je povezan sa prvom fazom formatiranja • Npr. transformacija XML dokumenta u XHTML

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

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

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

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

  41. XPointer • XPointeri se dodaju na URL iza oznake naziva “#” • Vrste XPointera: • shorthand pointer • scheme-based pointer • xpointer() • element()

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

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

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

  45. 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-axmlns:xlink = “http://www.w3.org/1999/xlink”u početni tag dokumenta

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

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

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

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

More Related