XML Technologies and Applications - harjoitustyö -



Samankaltaiset tiedostot
H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

XML / DTD / FOP -opas Internal

XML, XHTML ja CSS. T Hypermediadokumentin laatiminen. Mikko Pohja

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Code Camp for Girls. Sanna Nygård. Lokakuussa

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen

Ylläpitodokumentti. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

ICT1TN004. Lomakkeet. Heikki Hietala

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

XSLT - ohjelmoinnin perusteet. Jaana Holvikivi Metropolia

2. PEHMEÄ XHTML XRAJAHTML

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

HTML ja CSS. Tästä se lähtee: portfolio-sivusto. Sivuston pääkansio, jonka sisällä on kaikki sivustoon kuuluvat alikansiot ja tiedostot.

Entiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

SISÄLLYS. Johdanto JOHDATUS XML:n PARIIN 1.1 Extensible Markup Languge XML:n edut Mitä XML:llä tehdään? 3

Proseduraalinen dokumentti: sisältö, rakenne ja ulkoasu yhdessä, esim. worddokumentti

Internetsivujen perusrakenne. Html-dokumentin keskeiset elementit ja attribuutit

EASY Tiedostopalvelin - mobiilin käyttöopas

Tee html-sivu, jossa on yllä olevat kaksi taulukkoa.

Digitaalisen median tekniikat. JSP ja XML

SALITE.fi -Verkon pääkäyttäjän ohje

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html;

DOORS Word DOORS SoftQA Pekka Mäkinen

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Hohde Consulting 2004

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

Digitaalisen median tekniikat xhtml - jatkuu

XSL-muunnokset. 9 XSL-muunnokset

XML-saatavuuskysely. XML-tiedoston kuvaus. versio

XSLT - ohjelmaesimerkkejä. Jaana Holvikivi Metropolia

Digitaalisen median tekniikat xhtml - jatkuu

DOORSin Spreadsheet export/import

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus

3 Verkkosaavutettavuuden tekniset perusteet

eportfolio ammatillisen kasvun ja oman osaamisen kuvaaminen

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Sivuston tiedotsiteoptimer.com

Extensible Stylesheet Language (XSL)

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

ARVO - verkkomateriaalien arviointiin

1 (14) Ohje. Ohje. GTK-wiki. Geologian tutkimuskeskus, Verkkosivustopalvelut

VIENET JULKAISUJÄRJESTELMÄLLÄ TOTEUTETTUJEN INTERNET-SIVUJEN YLLÄPITO-OHJE

valitsin on useimmiten html-elementti, jolle tyyli halutaan luoda

Taulukot. 1. Taulukon rakenne: ICT01D Elina Ulpovaara

Kuvat. 1. Selaimien tunnistamat kuvatyypit

M. Merikanto 2012 XML. Merkkauskieli, osa 2

EASY Tiedostopalvelin - mobiilin käyttöopas

Sivuston tiedotmysiteworthcheck.com

Ulkoasun muokkaus CSS-tiedostossa

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys:

Helsingin yliopisto/tktl XML-metakieli XSLT XSL - extensible stylesheet language XSLT

Digitaalisen median tekniikat xhtml

Digitaalisen median tekniikat xhtml Harri Laine 1

XML johdatus: DTD. Jaana Holvikivi

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

Helsingin yliopisto/tktl XML-metakieli XSL-FO XSL - extensible stylesheet language XSL-FO

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Sivuston tiedotwindowsrepublic.com.au

Helsingin yliopisto Tietojenkäsittelytieteen laitos XML-metakieli (2011) Harri Laine 1. Jäsennys ja sarjallistaminen

LoCCaM Riistakamerasovellus. Dimag Ky dimag.fi

Westiekerho.fi päätoiminnallisuudet

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

Vaalikone.fi API Presidentinvaalit 2012

Kun suunnitelma on valmiina niin itse sivuston rakentaminen on jo helpompaa. (jatketaan tätä rakentelu vaiheessa.

Sivuston tiedotakcpshop.de.websiteoutlook.com

Kotisivujen teko. Jan Lindholm Kirkkonummen kansalaisopisto Syksy koodari.eu jsbin.com

TIEDEJUTTUKURSSI FM VILLE SALMINEN

Sivuston tiedotpechaticentr.ru

PIC-koodin luominen URF-tietokantaan Participant Portal

Sivuston tiedotqbooksupportpho nenumber.com

Pika-aloitusopas. Sisältö: Projektin luominen Projektin muokkaaminen ja hallinnointi Projektin/arvioinnin tulosten tarkastelu

XML - perusteet. Ctl230: Luentokalvot Miro Lehtonen

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

SISÄLLYSLUETTELO 1 JOHDANTO META- JA MERKINTÄKIELI...2

Kuukauden kuvat kerhon galleriaan lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:

helsingintaiteilijaseura.fi WordPress-pikaohjeet

Helsingin yliopisto/tktl XML-metakieli XSL-FO XSL-FO. XSL-FO sivut

Aulikki Hyrskykari. CSS Taustaa CSS syntaksi CSS Valitsimet Kuvat verkkosivulla

1. ASIAKKAAN OHJEET Varauksen tekeminen Käyttäjätunnuksen luominen Varauksen peruminen... 4

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty:

Sivuston tiedotmp3list.pro

HTML perusteita (ei julkiseen jakeluun)

Sivuston tiedotemreemir.com

Apix Vastaanota-palvelun lisäominaisuus. Vastaanota+ Pikaohje Versio 2.0 DRAFT

Sivuston tiedotprintersupportnu mbercare.com

Sivuston tiedotwixaccounting.com

Kyläsivujen InfoWeb-ohje

Artikkelien muokkaaminen sekä sisältöeditorin peruskäyttö

opiskelijan ohje - kirjautuminen

Asiointipalvelun ohje

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

HAKUKONEMARKKINOINTI KOTISIVUJEN PÄIVITYSOHJE

Transkriptio:

XML Technologies and Applications - harjoitustyö - TURUN YLIOPISTO Informaatioteknologian laitos Tietojenkäsittelytiede Harjoitustyö Helmikuu 2009 Jyri Lehtonen (72039) jyri.lehtonen@utu.fi (yksin tehty harjoitustyö)

1. Kuvaus Kehitin aikaisemmin keväällä yhteisöllisen internet-sivuston, jossa on mahdollista jakaa opiskelijoiden/kavereiden kesken heidän itse tekemiä kuvia, ääniraitoja tai kouluraportteja/dokumentteja. Toistaiseksi tämä toimi pelkästään siten, että siirretty objekti ilmestyy latausvalikkoon pelkkänä linkkinä. Tämä oli toteutettu käytännöllisestä näkökulmasta, jotta sivuston vain saisi kylmästi toimimaan. XML Technologies and Applications -harjoitustyön on tarkoituksena mahdollisesti muuttaa tilannetta ja näyttää se, miten siirrettyjen objektien tulisi muodostua. Ratkaisu olisi mahdollista toteuttaa erilaisilla ohjelmointikielillä, mutta koska en itse ole koskaan aikaisemmin tehnyt mitään XML/XSL/DTD kokoonpanolla, oli tämä oiva mahdollisuus kehittää tuntemusta näissä, sekä kehittää yhteisösivustoani. Kun sain harjoitustyön ohjaajaltani esimerkkikappaleita siitä, millaisia töitä XML-yhdistelmillä on mahdollista tehdä, valitsin heti mediagallerian. Tämän työn tarkoituksena on siis luoda pohjaa sille, miltä yhteisösivustolleni ladatut objektit näyttävät. Jos en käytä tätä projektia suoraan sivustolle, ainakin otan sen ulkomuodosta mallia. XML:n hyötynä työssäni on varmasti se, että sitä on varmasti useasti käytetty vastaavanlaiseen toimintaan. Uskon, että XML-pohjaisia ratkaisuja mediagallerioihin on varmasti olemassa komentosarjakielien ohessa tai yhteistyössä. Itse koin ainakin sen, että tällä yhdistelmällä (XML/XSL/DTD) on vaivatonta mallintaa tietty taulukkoalue, joka tulee sisältämään erilaista dataa, ja monistaa sitä. 2. DTD (Document Type Definition) DTD alkaa ensimmäisen elementin määrittelyllä, joka on galleria. Tämä elementti sisältää gobjekti-elementtejä nolla tai enemmän. Galleria on siis korkeimman tason elementti, jonka sisältä löytyy kaikki sen toimintaan liittyvät elementit ja attribuutit. Itse galleria-elementtiin liittyy attribuutti type, joka on pakollinen ja sen on oltava jokin kolmesta vaihtoehdosta: image, audio tai text. Tämä tarkoittaa sitä, että gallerioita on mahdollista toistaiseksi kehittää kolmea tyyppiä: kuvia varten, ääniraitoja varten sekä dokumentteja varten. 1

Siirryttäessä seuraavalle tasolle, on suurin painoarvo elementin gobject määrittelyllä. Gobject (Gallery Object) on jokin tietty objeki, joka sisältyy galleriaan. Gobject sisältää seuraavat objektien määrittelyt: id, date, thumb, title, authorinfo, comment ja raiting. Elementtiin liittyvät myös kolme erikoistyyppiä, joista vain yksi voi esiintyä objektissa: resolution, length ja pages. Lisäksi elementissä ovat vielä kaksi hallinnointiin liittyvää elementtiä delete ja edit. Gobjectelementtiin liittyy myös attribuutti otype (Object Type), joka määrää sen, että attribuutin on oltava joko image, audio tai text -tyyppiä. Gobjectin sisältämät elementit ovat suhteellisen tyhjentäviä. Id määrittää objektille ainutlaatuisen numeraalisen tunnuksen, jolla tämä tietty objekti tunnistetaan. Date on se päivämäärä, jolloin kyseinen objekti ladattiin palvelimelle. Thumb on pienoiskuvake, joka on oleellisin kuvagallerioissa. Ääniraita- sekä dokumenttigallerioissa pienoiskuvakkeen lisääminen on mahdollista, tekijän halutessa personalisoida tuotostaan. Pienoiskuvakkeen on oltava tiettyä määrättyä kokoa, joka on määrätty attribuutissa width ja height. Title on objektin nimi. Authorinfo sisältää tarvittavat tiedot sen tekijästä: nimen ja sähköpostiosoitteen. Comment on tekijälle varattu kenttä, jossa hän voi kertoa työstään. Raiting on arvioijalle varattu kenttä, jossa arvioija voi antaa objektille tietyn numeraalisen arvon. Elementtiin liittyy myös attribuutti rate, joka on valinnainen, mutta oltava arvojen 0-5 väliltä. Filesize on yksinkertaisesti objektin koko kovalevyllä. Jokaisella objektilla on yksi erikoiselementti, jonka on tarkoitus näkyä vain oikean tyypin gallerialla. Näitä elementtejä ovat resolution (image), length (audio) sekä pages (text). Erikoiselementtien lisäksi jokaisella objektilla on vielä kaksi hallintoelementtiä: delete ja edit. Nämä ovat tarkoitettu järjestelmänvalvojan ja objektin siirtäjän välineiksi hallita tuotoksia. Alla on koko definition.dtd -tiedoston sisältö. <!-- DTD --> <!-- Galleria --> <!ELEMENT gallery (gobject)*> <!-- Voi sisältää nolla tai enemmän objekteja--> <!--Elementit--> <!ELEMENT gobject (id, date, thumb, title, authorinfo, comment?, rating?, filesize, resolution, lenght, pages, delete, edit)> <!-- Objektin arviointi tai kommentointi ei ole pakollista --> <!ELEMENT id (#PCDATA)> <!-- PC: Vain tekstiä, ei muita elementtejä--> <!ELEMENT date (#PCDATA)> <!-- Päiväysleima, koska objekti on lisätty--> <!ELEMENT thumb (#PCDATA)> <!-- Vaihtoehtona EMPTY,mahdollistaa <img />.(siis tyhjät tagit) --> <!ELEMENT title (#PCDATA)> <!-- Objektin nimi--> <!ELEMENT authorinfo (author)+> <!-- Voi sisältää yhden tai enemmän authoreita--> <!ELEMENT author (name, email?)> <!-- Voi sisältää sähköpostin, mutta ei ole pakko--> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)> 2

<!ELEMENT comment (#PCDATA)> <!-- Objektiin liitettävä vapaehtoinen kommentti--> <!ELEMENT rating (#PCDATA)> <!-- Objektiin liitettävä vapaehtoinen arviointi--> <!ELEMENT filesize (#PCDATA)> <!-- Objektin koko kovalevyllä--> <!ELEMENT delete (#PCDATA)> <!-- Omistajan/Järjestelmänvalvojan oikeus poistaa --> <!ELEMENT edit (#PCDATA)> <!-- Omistajan/Järjestelmänvalvojan oikeus muokata --> <!-- Eri gallerioiden erikoistyypit --> <!ELEMENT resolution (#PCDATA)> <!-- Kuvagalleria--> <!ELEMENT length (#PCDATA)> <!-- Äänigalleria--> <!ELEMENT pages (#PCDATA)> <!-- Tekstigalleria--> <!--Attribuutit--> <!ATTLIST gallery type (image audio text) #REQUIRED> <!-- Gallerian on oltava joko kuva/ääni/teksti--> <!ATTLIST gobject otype (image audio text) #REQUIRED> <!-- Gallerian objektin on oltava kuva/ääni/teksti--> <!ATTLIST thumb width CDATA #FIXED "100" height CDATA #FIXED "100"> <!-- Kuvakkeiden on oltava kokoa 300x330--> <!ATTLIST rating rate (0 1 2 3 4 5) #IMPAILED> <!-- Arvioinnin on oltava aseikkoa 0-5 --> <!--Entiteetit (testausta)--> <!ENTITY site "Archives"> 3. XML (extensible Markup Language) Ensimmäinen galleriaesimerkki on kuvagalleria. XML-tiedosto määrittää aluksi sen käyttämään definition.dtd määritelmäpakettia, joka on esiteltynä edellisessä luvussa. Tyylimäärittelyt käsitellään seuraavassa luvussa. Nämä määrittelyt ovat harjoitustyön jokaisessa XML-tiedossa, vaikka niitä ei tässä enää erikseen mainita. Galleria on tyyppiä kuva (attribute: type="image"). Galleria sisältää viisi objektia, jotka käsittelevät kuvia (attribute otype="image"). Jokaisella objektilla on oma ID (numerot 1-5). Päivämäärä on harjoitustyön vuoksi myös jokaiseen valittu eri. Pienoiskuvake, joka esittää gallerian kuvaa, on sijoitettu kansioon thumbpic, ja kuvien nimet alkavat test1:stä eteenpäin. Kuvien otsikkokenttä/nimikenttä voi olla mielivaltainen, kuten myös tekijän nimi sekä sähköpostiosoite ja kommentti. Arvioinnin on oltava välillä 0-5 ja objektin arviointi on raiting-elementin attribuutissa rate. Objektin erikoistyyppielementti resolution esittää pikseleiden määrän kuvassa. Loput elementit ovat itsestään selviä. Gallerioiden välillä ei ole suuria eroja. Ääniraitagalleriassa galleria-elementin attributtina on type="audio", objektin attribuuttina otype="audio" sekä resoluution tilalla pituus-elementti length. Dokumenttigalleriassa vastaavasti galleria-elementin attribuuttina on type="text", objektin attribuuttina on otype="text" ja resoluution/pituuden tilalla on sivujen määrä -elementti pages. Seuraavalla sivulla on yksi objekti jokaisesta galleriasta esimerkkinä. 3

<?xml version="1.0" encoding="utf-8"?> <?DOCTYPE gallery SYSTEM "definition.dtd"?> <?xml-stylesheet type="text/xsl" href="styles.xsl"?> <!--Gallerian tyyppi--> <gallery type="image"> <!--Galleria on tyyppiä kuva--> <!--Gallerian objektit--> <gobject otype="image"> <!--Objekti on tyyppia kuva--> <id>1</id> <!--Ensimmäinen objekti--> <date>1.1.2009</date> <!--Päivämäärä leima--> <thumb>thumbpic\test1.jpg</thumb> <!--Kuvan osoite (josta muodostetaan kuvake)--> <title>vortex of Whee</title> <!--Objektin otsikko--> <author> <!--Objektin tekijä sekä hänen sähköpostiosoite--> <name>jay</name> <email>jayjaystar@gmail.com</email> </author> <!--Objektiin liitettävä kommentti--> <comment> A vortex (pl. vortices) </comment> <raiting rate="5">/5</raiting> <!--Attribuutissa oleva vaihtuva arvo--> <resolution>1024 x 768</resolution> <!--Objektin pituus (kuvassa pikseleitä--> <filesize>1 MB</filesize> <!--Objektin suuruus kovalevyllä--> <delete>delete</delete> <edit>edit</edit> </gobject> <!--Gallerian tyyppi--> <gallery type="audio"> <!--Galleria on tyyppiä audio--> <!--Gallerian objektit--> <gobject otype="audio"> <!--Objekti on tyyppia audio--> <id>1</id> <!--Ensimmäinen objekti--> <date>1.1.2009</date> <!--Päivämäärä leima--> <thumb>thumbaudio\test1.jpg</thumb><!--kuvan osoite (josta muodostetaan kuvake)--> <title>ambient Dub</title> <!--Objektin otsikko--> <author> <!--Objektin tekijä sekä hänen sähköpostiosoite--> <name>jaysan</name> <email>jaysan@gmail.com</email> </author> <!--Objektiin liitettävä kommentti--> <comment> Ambient Dub was a phrase first. -Wikipedia</comment> <raiting rate="5">/5</raiting><!--attribuutissa oleva vaihtuva arvo--> <length>3.20min</length> <!--Objektin pituus (äänessä minuuttia)--> <filesize>8 MB</filesize> <!--Objektin suuruus kovalevyllä--> </gobject> <delete>delete</delete> <edit>edit</edit> <!--Gallerian tyyppi--> <gallery type="text"> <!--Galleria on tyyppiä teksti--> <!--Gallerian objektit--> <gobject otype="text"> <!--Objekti on tyyppia teksti--> <id>1</id> <!--Ensimmäinen objekti--> <date>1.1.2009</date> <!--Päivämäärä leima--> <thumb>thumbdoc\test1.jpg</thumb><!--kuvan osoite (josta muodostetaan kuvake)--> <title>essee: Dokumentin määritelmä</title><!--objektin otsikko--> <author> <!--Objektin tekijä sekä hänen sähköpostiosoite--> <name>jayer</name> <email>jayer@gmail.com</email> </author> <!--Objektiin liitettävä kommentti--> <comment> A document (noun) -Wikipedia</comment> <raiting rate="5">/5</raiting><!--attribuutissa oleva vaihtuva arvo--> <pages>8s.</pages> <!--Objektin pituus (tekstissä sivua)--> <filesize>600 kb</filesize> <!--Objektin suuruus kovalevyllä--> </gobject> <delete>delete</delete> <edit>edit</edit> 4

4. XSL (extensible Stylesheet Language) Sivuston taustan on oltava musta, koska yhteisösivustossakin on taustana ollut aina musta. XSL aloittaa toimintansa käymällä läpi kaikki gallerian objektit, ja tulostaa ne laskevassa id järjestyksessä sivulle. Tämä on toteutettu käyttämällä XSL:n komentoa <xsl:for-each select="elementti"> ja tämän jälkeen komentoa <xsl:sort select="elementti" order="descending"/>. Tällöin uusin tiedosto (korkein ID) on ensimmäisenä. Tämän toiminan sisällä on kaksi toimintoa. Ensimmäinen toiminto käy läpi kaikki parittomat ID:t, ja tulostaa niiden taustan vaaleampana kuin parillisten. Tämä on toteutettu XSL:n komennolla <xsl:if test="(id mod 2)=1">. Toinen toiminto käy läpi kaikki parilliset ID:t, ja tulostaa niiden taustan tummempana kuin parittomien. Tämä on toteutettu komennolla <xsl:if test="(id mod 2)=0">. Mitä nämä toiminnot pitävät sitällään, käsitellään seuraavaksi. Jokaisesta gallerian objektista luodaan taulukko. Taulukossa on yhteensä kolme riviä, ja kolme saraketta. Ensimmäisellä rivillä ovat ID, THUMB sekä TITLE -elementit. Elementit haetaan komennolla <xsl:value-of select="elementti" />. Tällä tavalla ovat haettu ID sekä TITLE elementit. Thumb-elementissä on tarkoituksena se, että käyttäjä voisi painamalla pienkuvaketta avata alkuperäisen kuvan. Tämä onnistuu toteuttamalla pienoiskuvasta linkki sijoittamalla thumbelementtiin kuvan osoitteen, ja hakemalla tämä sitten XSL:n komentojen <xsl:attribute name="attribuutti"> sekä aikaisemmin mainittu <xsl:value-of select / > avulla. Alla on esimerkki toiminnasta: <a><xsl:attribute name="href"> <xsl:value-of select="thumb"/> </xsl:attribute> <img width="100" height="100" style="border:none"> <xsl:attribute name="src"> xsl:value-of select="thumb"/> </xsl:attribute> </img></a> Toisella rivillä ovat kaikki tietoa antavat elementit (date, resolution, length, pages, filesize, rate) sekä tekijän tiedot authorinfo -> name, email. Toisella rivillä ei ole uutta XSL-toimintaa. Rivillä on käytetty CSS:n yksinkertaisia koristeluita kuten <strong> sekä <span style="color ">. 5

Viimeisellä rivillä ovat hallintaelementit edit ja delete sekä tekijän laatima kommentti objektista. Tämä kaikki on esitettynä alla olevassa kuvassa. Selvää syytä sille, miksi joka toinen objekti olisi erivärinen taustaltaan, ei ole. Kyseessä on vain esteettinen ratkaisu. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html" encoding="utf-8" doctype-public="-//w3c//dtd XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"/> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> </head> 6

<!--Sisältö alkaa--> <body bgcolor="#000000"> <!--Käy läpi kaikki gallerian objektit, ja tulostaa ne laskevassa järjestyksessä--> <xsl:for-each select="gallery/gobject"> <xsl:sort select="id" order="descending"/> <!--Käy läpi parittomat, ja tulostaa niiden taustan vaalempana kuin parillisten--> <xsl:if test="(id mod 2)=1"> <table width="60%" border="0" bgcolor="#232323"> <tr><!--tulostaa ensimmäiseen riviin: ID, kuvakkeen ja objektin nimen--> <td width="3%"><xsl:value-of select="id" /></td> <td width="14%"><a><xsl:attribute name="href"> <xsl:value-of select="thumb"/> </xsl:attribute> <img width="100" height="100" style="border:none"> <xsl:attribute name="src"> <xsl:value-of select="thumb"/> </xsl:attribute> </img></a></td> <td width="83%"> <span style="color:#ff3333; font-size:larger; letter-spacing:0.10cm"> <xsl:value-of select="title"/></span><br /> </td> </tr> <tr> </tr> <td></td> <!--Tulostaa toiseen riviin Nippelitiedot, arvioinnin ja tekijän--> <td><span style="color:#ffffff"><xsl:value-of select="date"/><br /> <xsl:value-of select="resolution"/> <xsl:value-of select="length"/> <xsl:value-of select="pages"/> <br /><xsl:value-of select="filesize"/></span><br /> <span style="color:#ff3333"><strong>rate: </strong></span> <span style="color:#ffffff"><xsl:value-of select="raiting/@rate"/> <xsl:value-of select="raiting"/></span></td> <td><span style="color:#ff3333"><strong>tekijä: </strong></span> <span style="color:#ffffff"><xsl:value-of select="author/name"/></span> ( <xsl:value-of select="author/email"/> )<br /></td> /></td> </table> <br /> </xsl:if> <tr> </tr> <td></td> <!--Tulostaa kolmanteen riviin hallinta vaihtoehdot sekä komentit--> <td><span style="color:#0000ff; font-size:smaller; text-decoration:underline"> <xsl:value-of select="edit" /><br /> <xsl:value-of select="delete" /></span></td> <td><span style="color:#ff3333"><strong>kommentti: </strong></span> <span style="color:#ffffff"><xsl:value-of select="comment"/></span><br <!--Käy läpi parilliset, ja tulostaa niiden taustan tummenpana kuin parittomien--> <xsl:if test="(id mod 2)=0"> <table width="60%" border="0" bgcolor="#555555"> <tr>.. <! Jatkuu samana kuin yllä-->. </xsl:if> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> 7

5. Lopputulos Testasin XML-tiedostoni palvelulla: http://www.w3schools.com/dom/dom_validate.asp, ja kyseinen palvelu antoi palautteeksi: No errors found!. Internet-selaimen näkymä: (kuvagalleria) Internet-selaimen näkymä: (yksi audio-objekti) 8