Hohde Consulting 2004

Samankaltaiset tiedostot
XML merkintäkielten perusteet. Luento 2 - XSLT Pekka Aarnio

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

Hohde Consulting 2004

Ensimmäiset XPath-lausekkeet

XSLT - ohjelmaesimerkkejä. Jaana Holvikivi Metropolia

XSL-muunnokset. 9 XSL-muunnokset

XSLT - ohjelmoinnin perusteet. Jaana Holvikivi Metropolia

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

XSL-muunnokset. 9 XSL-muunnokset

è è è XSL-muunnokset 9 XSL-muunnokset

Extensible Stylesheet Language (XSL)

Hohde Consulting 2004

XML-datan kysely. Topi Sarkkinen. Seminaarityö. Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Luento 4: XPath ja XLink

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

Luento 3: Tietorakenteiden esittäminen

XML Technologies and Applications - harjoitustyö -

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

P e d a c o d e ohjelmointikoulutus verkossa

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Web-teknologiat. XML-datan kysely Topi Sarkkinen

Luento 12: XML ja metatieto

Luento 11: XSL-FO & SVG

Java-kielen perusteita

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

6 XML-työkalut 1. 6 XML-työkalut

ITKP102 Ohjelmointi 1 (6 op)

Muistutus aikatauluista

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Taulukot. Jukka Harju, Jukka Juslin

8 XSLT-muunnoskieli XSLT-muunnoskieli

Luento 7: XML-ohjelmointirajapinnat

Tietorakenteet ja algoritmit

Apuja ohjelmointiin» Yleisiä virheitä

Python-ohjelmointi Harjoitus 5

Luento 1: Johdanto merkintäkieliin

Harjoitus 3 -- Ratkaisut

11/20: Konepelti auki

811120P Diskreetit rakenteet

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Helsingin yliopisto/tktl XML-metakieli XPath

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

811120P Diskreetit rakenteet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

TAMPEREEN TEKNILLINEN YLIOPISTO

Yhteydettömät kieliopit [Sipser luku 2.1]

TAMPEREEN TEKNILLINEN YLIOPISTO

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Johdatus rakenteisiin dokumentteihin

Zeon PDF Driver Trial

Ohjelmoinnin perusteet Y Python

11.4. Context-free kielet 1 / 17

1. Omat operaatiot 1.1

Hohde Consulting 2004

Algoritmit 1. Luento 10 Ke Timo Männikkö

Osoitin ja viittaus C++:ssa

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Loppukurssin järjestelyt C:n edistyneet piirteet

Ohjelmoinnin perusteet Y Python

Dynaaminen analyysi III

Algoritmit 1. Luento 7 Ti Timo Männikkö

Paikkatiedon esittäminen XML-muodossa: Oracle Spatial, SVG ja GML

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Algoritmit 2. Luento 2 Ke Timo Männikkö

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

ITKP102 Ohjelmointi 1 (6 op)

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Harjoitus 1 -- Ratkaisut

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Loppukurssin järjestelyt

Algoritmit 2. Luento 2 To Timo Männikkö

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Harjoitustyö: virtuaalikone

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Tietojen toimittaminen Skeemat Käsittelypalautteen kysely Kansallisen tulorekisterin perustamishanke

Algoritmit 2. Luento 7 Ti Timo Männikkö

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Ehto- ja toistolauseet

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Kvarkki XUA: sähköisen allekirjoituksen määritys 1 (6) V 1.0. Kvarkki XUA: sähköisen allekirjoituksen määritys

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Luento 4 Aliohjelmien toteutus

Yhdistäminen. Tietolähteen luominen. Word-taulukko. Joukkokirje, osoitetarrat Työvälineohjelmistot 1(5)

Muuttujien määrittely

Transkriptio:

Luento 6: XSLT AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XSL Transformations XSLT tyylisivun rakenne mallineet nykyinen solmu Edistyneemmät piirteet toisto muuttujat nimetyt mallineet ehdolliset osiot moodit kopiointi järjestäminen numerointi www.hohde.com Hohde Consulting 2004 2

XSLT XSL Transformations (XSLT) on XML-pohjainen kieli XMLdokumenttien muuttamiseen muodosta toiseen XSLT-tyylisivu kuvaa säännöt, joiden avulla XSLT-prosessori käsittelee sisään luettavaa dokumenttia (input document) ja tuottaa ulos tulevaa dokumenttia (output document) XSLT-tyylisivu voi lisätä ja poistaa elementtejä ja attribuutteja sekä käsitellä leipätekstiä Tuotettava dokumentti on joko XML:a tai tavallista tekstiä yleensä lopputuloksena on toinen XML-dokumentti jos halutaan tuottaa HTML:a, tuotetaan käytännössä XHTML:a www.hohde.com Hohde Consulting 2004 3 Tyylisivun rakenne (1/2) XSLT-tyylisivu koostuu joukosta määrityksiä ja mallineista (template) template voidaan suomentaa myös sapluunaksi Määrityksillä vaikutetaan tyylisivun tuottamaan dokumenttiin liittyviä asioita tai määritellä muuttujia myöhempää käyttöä varten Mallineet sisältävät dokumentin muunnossa käytettävät säännöt, sisään luetun dokumentin käsittelyohjeita ja tuotetun dokumentin elementtejä sana "malline" kuvaa toimintaa melko hyvin: osa tuotettavan dokumentin elementeistä on määritelty pysyvästi näiden elementtien väliin tuotetaan lisää sisältöä käsittelyohjeiden pohjalta www.hohde.com Hohde Consulting 2004 4

Tyylisivun rakenne (2/2) Tyylisivun kaikki elementit ovat elementin <xsl:stylesheet> sisällä kaikki XSLT:n elementit, ts. komennot, ovat nimiavaruudessa http://www.w3.org/1999/xsl/transform nimiavaruus lyhennetään yleensä xsl: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">... </xsl:stylesheet> Tyylisivu sisältää ylätason määrittelyt ja mallineet määrittelyt ohjaavat tyylisivun toimintaa tyhjien merkkien (whitespace) poistaminen tai säästäminen sisentäminen (indent) www.hohde.com Hohde Consulting 2004 5 Mallineet Malline koostuu kahdesta osasta mallineen laukaiseva sääntö mallineen sisältö Sääntö määritetään XPath-lausekkeella Mallineen sisällön rakenteen määrää tuotettavan dokumentin rakenne ja sisältö malline voi tuottaa uusia elementtejä ja attribuutteja, muun muassa, tuotettuun dokumenttiin malline voi valita sisään luetun dokumentin elementtejä kutsua uusia mallineita elementtien pohjalta käsitellä elementit itse malline voi sisältää ehtoja ja toistoja www.hohde.com Hohde Consulting 2004 6

Esimerkkimallineita <xsl:template match="sect1"> <h1><xsl:value-of select="title/text()"/></h1> <xsl:apply-templates/> </xsl:template> <xsl:template match="para"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="title"/> www.hohde.com Hohde Consulting 2004 7 Nykyinen solmu XSLT-prosessori käsittelee aina yhtä XML-dokumentin solmua (node) kerrallaan tätä solmua kutsutaan nykyiseksi solmuksi (current node, context node) XSLT-tyylisivun mallineista valitaan se, jonka sääntö osuu tarkiten nykyiseen solmuun sääntöjen valintajärjestykseen on erillinen algoritmi vain yksi malline valitaan tämä malline ohjaa toimintaa ja käskyttää XSLT-prosessoria jossakin vaiheessa valitsemaan uuden elementin tai muun XML-dokumentin osasen nykyiseksi solmuksi tämän jälkeen etsitään uusi malline Prosessori aloittaa dokumentin käsittelyn juurielementistä nykyinen solmu viittaa juurielementtiin käsittely jatkuu edellä kuvatulla tavalla www.hohde.com Hohde Consulting 2004 8

Mallineiden valinnan ohjaus Malline voi käynnistää mallineen haun mille tahansa XMLdokumentin osalle yleisin tapaus on käsitellä nykyisen solmun alla (sisällä) olevat solmut: <xsl:apply-templates/> voidaan myös valita vain tietyt solmut käsittelyyn: <xsl:apply-templates select="name street city postal-code"/> valinta voi kohdistua muualla oleviin solmuihin: <xsl:apply-templates select="//distant"/> Myös attribuutti, tekstisirpale tai muu XML-dokumentin osa voidaan valita kaikkiin valintoihin löytyy tuki XPath-lausekkeista valinta voi kohdistua useaan solmuun kerralla solmut käsitellään tällöin dokumenttijärjestyksessä (document order) www.hohde.com Hohde Consulting 2004 9 Arvojen poimiminen XSLT-tyylisivuissa yleensä poimitaan suuri joukko arvoja sisään luettavasta dokumentista ja sijoitetaan tuotettavaan dokumenttiin attribuuttien arvoja siirretään tai kirjoitetaan näkyviin Arvojen poiminta tapahtuu elementillä <xsl:value-of select="xpath-lauseke"/> elementti poimii XPath-lausekkeen mukaisen arvon ja sijoittaa sen tuotettavaan dokumenttiin mikäli arvoa ei ole, elementti ei tuota mitään www.hohde.com Hohde Consulting 2004 10

Elementtien ja attribuuttien luonti XSLT mahdollistaa elementtien luonnin dynaamisesti käytetään elementtiä <xsl:element> <xsl:element name="{@element-name}"> <xsl:apply-templates/> </xsl:element> Vastaavasti myös attribuutteja voidaan luoda lennossa elementti on tietenkin <xsl:attribute> attribuutti liitetään viimeksi määriteltyyn elementtiin <a> <xsl:attribute name="href"> <xsl:value-of select="substring(@src, 2)/"> </xsl:attribute> <xsl:value-of select="@title"/> </a> www.hohde.com Hohde Consulting 2004 11 Lyhennysmerkintä attribuuteille Kaikkia attribuutteja ei tarvitse luoda elementillä <xsl:attribute> jos attribuutin arvo kopioidaan suoraan toisesta attribuutista, se voidaan tehdä mallineen sisällä aaltosulkujen avulla <a href="{@src}" target="{@target}"> <xsl:value-of select="@title"/> </a> huomaa, että XSL:n omien elementtien sisällä aaltosulkuja ei tarvita aaltosulkuja ei voida käyttää, mikäli XPath-lauseke on monimutkainen vain attribuuttien arvoja voidaan poimia suoraan Attribuutin arvo voi tietysti olla kiinteäkin <a href="http://www.example.com/">go to example.com</a> www.hohde.com Hohde Consulting 2004 12

Edistyneemmät piirteet Edistyneemmät piirteet Edellä esitelyillä toiminnoilla pystyy muuntamaan XMLdokumentin muodosta toiseen keinot kuitenkin loppuvat, jos sisään luetun dokumentin elementtejä pitää käsitellä useasti tai lopputulos riippuu luetun dokumentin attribuuttien arvoista vastaavasti XSLT-tyylisivun toimintaa saatetaan haluta ohjata ulkopuolelta Ratkaisuja on useita erilaisia toisto muuttujien käyttö ehdolliset osiot mallineissa erilaisten moodien käyttö mallineiden nimeäminen ja kutsuminen ilman säännön laukeamista www.hohde.com Hohde Consulting 2004 14

Toisto XSLT sisältää hyvin yksinkertaisen toistorakenteen se voi toistaa tietyn mallineen osan kaikille tietyllä XPathlausekkeella valituille solmuille ei ole mahdollisuutta toistaa asioita esimerkiksi viittä kertaa toistojen määrä riippuu aina sisään luettavasta dokumentista Toisto toteutaan elementillä <xsl-for:each> elementissä on XPath-lauseke sääntönä ja elementin sisällä oleva XSLT-koodi toistetaan kaikille säännön valitsemille elementeille: <xsl:for-each select="name"> <xsl:value-of select="@first">.<xsl:value-of select="@last">@hut.fi <br/> </xsl:for-each> www.hohde.com Hohde Consulting 2004 15 Muuttujat Tyylisivulla voi olla käytössä muuttujia muuttujat asetetaan elementillä <xsl:variable name="..."> ja niiden arvoa ei voi muuttaa myöhemmin muuttujat ovat käytössä koko tyylisivulla muuttujiin viitataan syntaksilla $nimi muuttujiin voidaan viitata myös {$nimi} mallineen elementtien sisällä, vrt. attribuutit Muuttujat ovat näppäriä laadittaessa helposti säädettäviä tyylisivuja muokattavat tiedot sijoitetaan muuttujiin, joita säätämällä tyylisivun toiminta tai tuotettava dokumentti muuttuu Vaikka muuttujan arvoa ei voi muuttaa, se voidaan määrittää uudelleen alemmalla tasolla uusi arvo piilottaa aiemman arvon aiempi arvo on käytössä palattaessa takaisin ylemmälle tasolla www.hohde.com Hohde Consulting 2004 16

Nimetyt mallineet Joskus malline voi olla hyvin monimutkainen erityisesti ehtolauseet pidentävät mallinetta mallineessa voi olla useita vaihtoehtoisia toteutuksia Malline voi tällöin kutsua toista mallinetta kutsuttavalle mallineelle on määritelty nimi: <xsl:template name="call-me">...</xsl:template> tällöin ei saa määrittää sääntöä mallineen kutsu tapahtuu elementillä <xsl:call-template name="..."/> kutsussa nykyinen solmu ei muutu kutsuttu malline käsittelee samaa tietoa kuin kutsujakin kutsutun mallineen suorituksen jälkeen palataan suorittamaan kutsuvaa mallinetta www.hohde.com Hohde Consulting 2004 17 Parametrit (1/2) Kutsuttavalla mallineelle voidaan lähettää parametreja muistuttaa pitkälti proseduraalisten ohjelmointikielten funktio- tai metodikutsuja parametrit ovat mallineen sisäisiä muuttujia, joiden arvoa kutsuja voi säätää viittaus parametrien arvoihin on sama kuin muuttujiin: $parametri Parametrit kirjoitetaan kutsun sisään <xsl:call-template name="call-me"> <xsl:with-param name="test">...</xsl:with-param> </xsl:call-template> www.hohde.com Hohde Consulting 2004 18

Parametrit (1/2) Kutsuttavan mallineen täytyy määrittää parametrit: <xsl:template name="call-me"> <xsl:param name="test">...</xsl:param>... </xsl:template> samalla kutsuttava malline asettaa parametreille oletusarvot kaikkia parametreja ei ole siis pakko asettaa www.hohde.com Hohde Consulting 2004 19 Tyylisivun parametrit Myös tyylisivulle voidaan määrittää parametreja käytetään vastaavaa syntaksia kuin edellä, mutta parametrimäärittely sijoitetaan tyylisivun päätasolle <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:param name="show-titles">true</xsl:param> <xsl:param name="author"/> </xsl:stylesheet> Parametrit annetaan XSLT-prosessorille ja se välittää ne edelleen tyylisivulle komentoriviargumentit ohjelmointikielissä metodikutsulla www.hohde.com Hohde Consulting 2004 20

Ehdolliset osiot XSLT:ssa on kaksi rakennetta ehdollisten osioiden laatimiseksi molemmissa käytetään samaa testirakennetta testinä on XPath-lauseke ja se läpäistään, jos lausekkeessa oleva ehto toteutuu lauseke evaluoituu ei-tyhjäksi joukoksi (ei erillistä ehtoa) ehtoina ovat normaalit =, <, > ja!= < ja > pitää kirjoittaa XML-syntaksin takia < ja > www.hohde.com Hohde Consulting 2004 21 If-lauseke If-lauseke on yksinkertaisempi ehdoista sen sisällä oleva mallineen osa suoritetaan ehdon toteutuessa lausekkeessa ei ole else if tai edes else -osaa <xsl:if test="@target"> <xsl:attribute name="target"> <xsl:value-of select="@target"/> </xsl:attribute> </xsl:if> www.hohde.com Hohde Consulting 2004 22

Choose-lauseke Choose-lauseke mahdollistaa usean ehtolausekkeen yhdistämisen vain yksi ehtolausekkeista suoritetaan ensimmäisen onnistuneen testin jälkeen jatketaan choose-lausekkeen jälkeisistä elementeistä lausekkeessa voi olla myös erillinen vaihtoehto tilanteella, jossa yksikään testi ei toteutunut www.hohde.com Hohde Consulting 2004 23 Choose-esimerkki <xsl:choose> <xsl:when test="@number-type = '1'"> <xsl:call-template name="number-numbers"/> </xsl:when> <xsl:when test="@number-type='a'"> <xsl:call-template name="number-letters"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="no-numbers"/> </xsl:otherwise> </xsl:choose> www.hohde.com Hohde Consulting 2004 24

Moodit Joskus sama XML-dokumentin osa halutaan käsitellä useita kertoja eri konteksteissa hyvä esimerkki on sisällysluettelon automaattinen laatiminen sisällysluettelo rakentuu otsikoista, jotka täytyy esittää myös leipätekstin sisällä Mallineeseen voidaan liittää moodi (mode) <xsl:template match="header[@level=1]" mode="toc">... </xsl:template> mallinnetta ei voida valita, ellei myös moodia ole asetettu käynnistettäessä mallineen etsintää: <xsl:apply-templates mode="toc"/> www.hohde.com Hohde Consulting 2004 25 Kopiointi XSLT mahdollistaa myös kopioinnin sisään luettavasta dokumentista tuotettavaan dokumenttiin kopioinnissa dokumenttisirpale (document fragment) kopioidaan sellaiseen ei tarvita erillisiä sääntöjä jokaiselle osaselle toisaalta ei voida myöskään vaikuttaa lopputulokseen Kopiointi on osa mallinetta kopiointi suoritetaan elementillä <xsl:copy-of> elementti voi määritellä myös XPath-lausekkeen, joka määrää kopioitavat elementit <xsl:copy-of select="..."/> jos lauseketta ei määritellä, kopioidaan nykyinen solmu www.hohde.com Hohde Consulting 2004 26

Järjestäminen XSLT tarjoaa mahdollisuuden järjestää sisään luettavan dokumentin elementit uuteen järjestykseen ennen mallineen valintaa käytetään elementtiä <xsl:sort select="..."> järjestäminen tapahtuu select-lausekkeen tuottamien arvojen pohjalta elementille voi antaa useita lisäattribuutteja järjestämisen ohjaamiseksi Järjestäminen tapahtuu joko <xsl:apply-templates> tai <xsl:foreach> elementtien sisällä <xsl:apply-templates select="sect1/title"> <xsl:sort select="text()"/> </xsl:apply-templates> Järjestämiselementtejä voi olla useita peräkkäin www.hohde.com Hohde Consulting 2004 27 Numerointi XSLT pystyy tuottamaan juoksevia numeroita elementillä <xsl:number> elementin attribuuteilla määritellään numeroiden tuottamisen yksityiskohdat numerot tuotetaan yleensä laskemalla nykyistä elementtiä edeltävät, annettua sääntöä vastaavat elementit numerointi aloitetaan yleensä ykkösestä, mutta tätä voidaan säätää laskeminen voi olla monitasoista arabialaisten numeroiden sijaan voidaan tuottaa mm. kirjaimia tai roomalaisia numeroita monitasoisissa numeroinneissa jokaisella tasolla voi olla oma tyyli, esimerkiksi "A.1.1" www.hohde.com Hohde Consulting 2004 28

Yhteenveto XSL Transformations (XSLT) on XML-pohjainen kieli XMLdokumenttien muuttamiseen muodosta toiseen XSLT-tyylisivu koostuu joukosta määrityksiä ja mallineista tyylisivu kuvaa säännöt, joiden avulla XSLT-prosessori käsittelee sisään luettavaa dokumenttia ja tuottaa ulos tulevaa dokumenttia XSLT-prosessori käsittelee aina yhtä XML-dokumentin solmua kerrallaan XPath on olennainen osa XSLT:ta käytetään sekä säännöissä että testeissä XSLT tarjoaa lavean joukon elementtejä dokumenttien muokkaamiseen www.hohde.com Hohde Consulting 2004 29 Kysymyksiä? Kommentteja?