Ensimmäiset XPath-lausekkeet

Samankaltaiset tiedostot
Hohde Consulting 2004

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

Extensible Stylesheet Language (XSL)

Hohde Consulting 2004

XSL-muunnokset. 9 XSL-muunnokset

XSLT - ohjelmaesimerkkejä. Jaana Holvikivi Metropolia

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

XSLT - ohjelmoinnin perusteet. Jaana Holvikivi Metropolia

XSL-muunnokset. 9 XSL-muunnokset

Helsingin yliopisto/tktl XML-metakieli XPath

è è è XSL-muunnokset 9 XSL-muunnokset

XSL Formatting Objects

Luento 5. Timo Savola. 28. huhtikuuta 2006

SELECT-lauseen perusmuoto

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

XQuery tietokannan kyselykielenä

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

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

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

Web-teknologiat. XML-datan kysely Topi Sarkkinen

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

XML Technologies and Applications - harjoitustyö -

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

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

Makrojen mystinen maailma lyhyt oppimäärä

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

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

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

XML / DTD / FOP -opas Internal

Java-kielen perusteita

Digitaalisen median tekniikat css tyylimääritykset

Olio-ohjelmointi Syntaksikokoelma

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

DOORSin Spreadsheet export/import

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Ohjelmoinnin peruskurssien laaja oppimäärä

Luento 7 Taulukkolaskennan edistyneempiä piirteitä Aulikki Hyrskykari

13. Loogiset operaatiot 13.1

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

Code Camp for Girls. Sanna Nygård. Lokakuussa

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

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Julkishallinnon XML-skeemat v0.5 JHS-suositus

Digitaalisen median tekniikat xhtml - jatkuu

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

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Digitaalisen median tekniikat css tyylimääritykset

Digitaalisen median tekniikat css tyylimääritykset Harri Laine 1

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

CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia.

ICT1TN004. Lomakkeet. Heikki Hietala

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

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

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Algoritmit 1. Luento 3 Ti Timo Männikkö

JavaScript alkeet Esimerkkikoodeja moniste 2

Harjoitus 6 (viikko 42)

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Sivuston tiedotpechaticentr.ru

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

Lomakkeet HTML5. Elina Ulpovaara. Testaus: IE9 Firefox7 Opera11 Chrome

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

Sivuston tiedotmysiteworthcheck.com

13. Loogiset operaatiot 13.1

Ohjelmoinnin perusteet Y Python

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

Sivuston tiedotprintersupportnu mbercare.com

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Ulkoasun muokkaus CSS-tiedostossa

XML johdatus: DTD. Jaana Holvikivi

Tutkielman kirjoittaminen OpenOffice-teksturilla. Sisällysluettelo, viittaukset, numerointi

Muistutus aikatauluista

Työvälineohjelmistot KSAO Liiketalous 1

Listat eli luettelot. Järjestämätön lista (unordered list)

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

2 3 LIITE 2. Index.php 1 (10) 4 5 <?php 6 7 /*! \mainpage Artikkelihallintaohjelma 8 * 9 * \section intro_sec Introduction 10 * 11 * Tämän on

Ohjelmoinnin peruskurssien laaja oppimäärä

Digitaalisen median tekniikat. Luento 3: CSS

Muotoilutoliot. XSL:n muotoiluoliot. Muotoiluolio. Muotoilualueet. Lohkoalueiden sijoittelu. Muotoilualueiden sijoittelu. Rivialueiden ominaisuuksia

GALERIE EXHIBITIONS (13) 1 2 EXHIBITIONS 2

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

Python-ohjelmointi Harjoitus 5

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

PIC-koodin luominen URF-tietokantaan Participant Portal

Ohjelmoinnin perusteet Y Python

Ohjelmointiharjoituksia Arduino-ympäristössä

Tämä dokumentti sisältää kenttäkohtaiset ohjeet WS1 Sinfokseen lisätyistä Synkka-tuotetietopankin pakollisista kentistä

Tietorakenteet ja algoritmit

815338A Ohjelmointikielten periaatteet

Transkriptio:

Ensimmäiset XPath-lausekkeet Kaavat ja predikaatit Ctl230: Luentokalvot 8.11.2004

Kontekstiin perustuva muotoilu Elementin sijainti dokumentissa 3<xsl:template match= XSLT Pattern > 3Sama elementti, eri konteksti Erilaiset muotoilusäännöt Sääntöjen valinta kontekstin mukaan Esimerkki: title 3Match-attribuutin arvot Solmujoukon valinta <xsl:template match= book/title > <h1><xsl:apply-templates/></h1> <xsl:template match= chapter/title > <h2><xsl:apply-templates/></h2> <xsl:template match= section/title > <h3><xsl:apply-templates/></h3>

XSLT Pattern XPath-lausekkeiden osajoukko 3 XPath-kielioppi Solmujoukon palauttavat XPath-lausekkeet kelpaavat 3Yksinkertaisia XPath-lausekkeita: Pattern match / Dokumentin juuri * Kaikki elementit title Elementit, joiden nimi on title book/title book-elementin lapsielementit, joiden nimi on title @isbn Attribuutti, jonka nimi on isbn

Kaavojen vertailu Mihin XPath-lausekkeita vertaillaan? 3 Kontekstisolmun lapsisolmu Ensimmäinen kontekstisolmu on dokumentin juuri Seuraavat kontekstisolmut: <xsl:apply-templates /> 3 Synonyymit: <xsl:template match= title > <xsl:template match= child::title > <xsl:template match= @isbn > <xsl:template match= attribute::isbn > 3 Kaavassa sallitut XPath-akselit: child, attribute

Erilaisia kaavoja Kaikkiin dokumentin solmuihin voidaan viitata 3Absoluuttiset polkukaavat match= /book/journal/article/body/section/title match= /book/journal/article/body/section/p/text() 3Suhteelliset polkukaavat Missä tahansa kontekstissa match= title Jälkeläissolmu // match= article//title - vrt. match= article/*/*/title match= //p/text()

Solmutestit kaavoissa Solmujen valinta tyypin mukaan 3Solmutestit XPath 1.0 match= comment() - kaikki kommentit match= text() - kaikki tekstisolmut match= node() - kaikki solmut match= processing-instruction() - kaikki prosessointikomennot 3XPath 2.0:ssa lisäksi mm. match= element(person, employee) match= attribute(length, xs:decimal)

Predikaattilausekkeet Kun solmun tyyppi, nimi ja polku eivät riitä: suodattimet 3Lapsielementin arvon testaus match= article[lang= fi ]/title <article><lang>fi</lang><title>..</title></article> 3Attribuuttien arvojen testaus match= article/title[@lang= fi ] <article><title lang= fi >..</title> </article> 3Attribuuttitesti match= article[@isbn] <article isbn= abc012 >... </article>

Predikaattilausekkeiden funktiot 1 Suodatinfunktio position() 3Paikka kontekstissa Ensimmäiselle solmulle: [position()=1] Lyhennetty merkintä: [1] 3match= book/chapter[position()=3] book -elementin kolmas chapter -lapsielementti 3 match= book/*[3] book -elementin kolmas lapsielementti

Predikaattilausekkeiden funktiot 2 Suodatinfunktio last() 3Kontekstin (nykyinen solmulista) koko 3match= book/chapter[last()=2] Niiden book -elementtien kaikki chapter -elementit, joilla on kaksi chapter -lapsielementtiä 3match= book/*[last()=1] book -elementtien ainoat lapsielementit 3match= book/chapter[last()-1] Toiseksi viimeinen chapter -elementti

Predikaattilausekkeiden yhdistäminen Monta suodatinta 3Attribuuttitesti ja sijainti match= journal/article[@lang= en ][3] match= journal/article[5][@lang= en ] match= journal/article[@lang= en and position()=5] match= journal/*[@lang][3] 3Yksi XPath-lauseke, monta predikaattia match= journal[2]/article[@lang= en ][3]/section[2] match= book[@lang= en and auth[1]= XY ][3]/bib

XSLT-ohjelmointi Prioriteetit, attribuuttilausekkeet, ehtolausekkeet, järjestäminen

Prioriteetit 1 Useammat muunnossäännöt mahdollisia? 3Yksi solmu valitsee korkeintaan yhden säännön 3Sopivista muunnossäännöistä valitaan ensisijaisin Suurin arvo priority-attribuutilla <xsl:template match= book[@isbn= abc123 ]/title priority= 999 /> <xsl:template match= book/title priority= 2 /> <xsl:template match= title priority= 1 /> <xsl:template match= * priority= -1 />

Prioriteetit 2 Oletusarvot 3Ensisijaisuutta ei aina määritellä 3Sääntöjen valinta oletusarvojen mukaan 3Jos samat oletusarvot Tiedostossa jälkimmäinen muunnossääntö tai Virheilmoitus Oletusarvoja: match= * priority= -0.5 match= title priority= -0.25 match= x:* priority= -0.25 match= x:title priority= 0 match= book/title priority= 0.5

Attribuuttien tulostaminen 1 Nimi ja arvo 3Alkutunnisteen sisään tai 3<xsl:attribute name= attname >arvo</xsl:attr...> 3Esim. kuvatiedoston lisääminen kappaleiden alkuun <xsl:template match= book/chapter > <img src= logo.gif /> <xsl:apply-templates /> <xsl:template match= book/chapter > <img> <xsl:attribute name= src > <xsl:text>logo.gif</xsl:text> </xsl:attribute> </img> <xsl:apply-templates />

Attribuuttien tulostaminen 2 Attribuutin arvon kopioiminen 3Muuttuvat attribuutin arvot Arvon kopioiminen toisesta attribuutista Arvon kopioiminen tekstisisällöstä <image file= logo.gif /> <xsl:template match= image > <img src= {@file} /> <img src= logo.gif /> <image file= vene.gif >Veneen kuva.</image> <xsl:template match= image > <img src= {@file} alt= {text()} /> <img src= vene.gif alt= Veneen kuva. />

Attribuuttien tulostaminen 3 Tekstisisällön ongelmia 3Attribuutin arvo ei voi olla tyypiltään mixed content <image file= vene.gif >Veneen <b>uusi</b> kuva.</image> 1. <xsl:template match= image > <img src= {@file} alt= {text()} /> <img src= vene.gif alt= Veneen kuva. /> 2. <xsl:template match= image > <img src= {@file} alt= {.} /> <img src= vene.gif alt= Veneen uusi kuva. />

Ehtolauseet: if - then Sisällön valinta: <xsl:if test= true() > 3<xsl:if> - kuten ohjelmointikielten if-lausekkeet Vain muunnossäännön sisällä Ehdollinen sisältö Käsitellään vain jos test-attribuutin arvo on tosi Myös sisäkkäiset if-lausekkeet mahdollisia 3Pakollinen attribuutti test Arvona mikä tahansa Xpath-lauseke, myös Solmujoukko: tosi, jos sisältää vähintään yhden solmun Merkkijono: tosi, jos sisältää vähintään yhden merkin Numero: tosi, jos eri kuin 0

If-lauseke-esimerkki Ehdollisen tekstin tulostus <muistio>tavallinen muistio</muistio> <muistio type= salainen >Salainen muistio</muistio> <xsl:template match= muistio > <p> <xsl:if test= @type= salainen >SALAINEN </xsl:if> <xsl:text>muistio: </xsl:text> <xsl:apply-templates /> </p> <p>muistio: Tavallinen muistio</p> <p>salainen MUISTIO: Salainen muistio</p> 3Toinen esimerkki: authors.xsl

Ehtolauseet: if - then - else? <xsl:if test= not(true()) > 3Ei omaa else-lausetta Tarvitaan kaksi if-lausetta ja not()-funktio 3Esim. välimerkeillä erotettu lista <xsl:template match= author > <xsl:value-of select=. /> <xsl:if test= not(position()=last()) > <xsl:text>, </xsl:text> </xsl:if> <xsl:if test= position()=last() > <xsl:text>.</xsl:text> </xsl:if>

Vaihtoehto if-lauseille Joskus pärjätään ilmankin... 3If-lauseen käyttö vähentää muunnossääntöjen määrää, mutta 3If-lause voidaan korvata lisäämällä uusi sääntö Test-attribuutin arvo predikaattilausekkeeksi 3Esim. välimerkeillä eroteltu lista <xsl:template match= author[not(position()=last())] > <xsl:value-of select=. /><xsl:text>, </xsl:text> <xsl:template match= author[position()=last()] > <xsl:value-of select=. /><xsl:text>.</xsl:text>

Ehtolauseet: switch - case Yhden valinta monesta: <xsl:choose> <xsl:when test= true() > 3Toisistaan riippuvat valinnat If-lauseiden toisto sallii usean valinnan Choose-elementin sisältä valitaan korkeintaan yksi 3Oletusvalinta: <xsl:otherwise> <xsl:element name= kuvateksti > <xsl:choose> <xsl:when test= @caption > <xsl:value-of select= @caption > </xsl:when> <xsl:otherwise>oletuskuvateksti.</xsl:otherwise> </xsl:choose> </xsl:element>

Ehtolauseiden vertailu <xsl:if> vai <xsl:choose>, <xsl:when> ja <xsl:otherwise>? 3IF - valitaan yksi kahdesta Vertailu tehdään aina Toisistaan riippumattomat testit 3CHOOSE - valitaan yksi monesta Vertaillaan, kunnes ensimmäinen ehto on tosi Järjestyksellä vaikutus optimointiin <xsl:choose> <xsl:when test= @lang= fi >Suomi</xsl:when> <xsl:when test= @lang= sv >Svenska</xsl:when <xsl:when test= @lang= en >English</xsl:when> </xsl:choose>

Sisällön järjestäminen 1 <xsl:sort> 3Elementtien järjestäminen Esim. hakemiston luonti 3Oletusjärjestys: document order 3<xsl:sort> kumoaa oletusjärjestyksen Järjestäminen valitun sisällön mukaan Lapsielementin sisältö, attribuutin arvo Kieli, aakkosjärjestys, suhteellinen pituus, isot ja pienet kirjaimet Suosituksena Unicode:n järjestysalgoritmi

Sisällön järjestäminen 2 Järjestyksen määrittely 3Valinnaiset attribuutit select: järjestyssavain Oletusarvo. lang: järjestämiseen käytetyn kielen koodi order: ascending descending case-order: upper-first lower-first data-type: text number omatyyppi Oletusarvo text

Sisällön järjestäminen 3 Monta järjestysavainta 3 Samanlaiset merkkijonot? Oletuksena document order Toissijainen järjestysavain 3 Esim. kaupunkien järjestäminen maittain ja asukasluvuittain <xsl:template match= kaupunki > <p> <xsl:apply-templates> <xsl:sort select= asukasluku data-type= number order= descending /> <xsl:sort select= maa /> </xsl:templates> </p>

XSLT-ohjelmointi Numerointi, moodit, kontekstin vaihto

Numerointi Numerot järjestettyihin listoihin 3Listat, luettelot, toistuva elementit Vaihteleva, koostettu sisältö Juokseva numerointi Numerot lisätään muotoiluvaiheessa 3 HTML-numerointi <OL> Ordered List Attribuutit start ja type Ei suositella Poistuvat käytöstä CSS-muotoilu 1) A) i) 1.1.1) 2) B) ii) 1.1.2) 3) C) iii) 1.2.1) 4) D) iv) 1.2.2) 5) E) v) 2.1.1)

XSL-numerointi 1 <xsl:number/> 3Sarjallinen arvo tulosdokumentissa 3Oletusmäärittely: level= single Vain sisarelementeille yhteinen numerointi Esim. books.xsl Jos ei muita lapsia: <xsl:value-of select= position() /> 3Hierarkiasta riippumaton numerointi Kuvat, taulukot, viitteet <xsl:number level= any />

XSL-numerointi 2 Minkä sisällön mukaan numeroidaan? 3 Nykyinen solmulista <xsl:template match=? > <xsl:number level=? count=? /> 3 Valikoiva numerointi: count-attribuutti Arvona Xpath-kaava (siis myös predikaatit) Esim. <xsl:number count= step[not(@ver= old )] /> <xsl:number count= step deleted /> 3 Numeroinnin uudelleenaloitus <xsl:number count= fig from= section/fig[2] />

XSL-numerointi 3 Numeron tulostus: format 3 Formatointimerkki <xsl:number format= 1 /> 1, 2, 3, 4,... format= 01 01, 02, 03, 04 format= a) a), b), c), d),... format= I I, II, III, IV,... X, XI, XII, XIII, XIV,... 3Oma numero sarjallisen sijaan <xsl:number value= Q91a /> 3Isojen lukujen muotoilu <xsl:number format= 1: grouping-separator=, grouping-size= 3 /> 3,000:

XSL-numerointi 4 Monitasoinen numerointi: level= multiple count= Pattern 3Hierarkkiset numerosarjat 1.2.3, A2(iii) Esim.artikkelin sisällysluettelo <xsl:template match= example > <xsl:variable name= format > <xsl:choose> <xsl:when test= ancestor::chapter >1.1.1. </xsl:when> <xsl:otherwise>a.1.1 </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:number format= {$format} level= multiple count= appendix chapter section example /> <xsl:apply-templates />

Moodit Eri muotoilu eri konteksteissa 3Saman sisällön käsittely useampaan kertaan Kirjan otsikot lukujen alussa Kirjan otsikot sisällysluettelossa 3<xsl:template match= * mode= moodi > Moodin nimen oltava kelpuutettu XML-nimi 3<xsl:apply-templates mode= moodi /> Attribuutin arvojen oltava samat tai Kummassakaan elementissä ei ole mode-attribuuttia

Moodit - esimerkkejä Otsikot sisällysluettelossa ja muualla <xsl:template match= book > <html><head><title>book</title></head> <body> <div><xsl:apply-templates select= chapter/title mode= toc /></div> <xsl:apply-contents/> </body> <xsl:template match= title > <h1><xsl:apply-templates/></h1> <xsl:template match= title mode= toc > <h4><xsl:apply-templates/><h4> 3 Toinen esimerkki: soloist+index.xsl

Sisäkkäiset muunnossäännöt Solmujoukon iteroiva käsittely 3<xsl:for-each select= node-set > Sisältönä muunnossäännöt Kontekstina select-attribuutin määrittämä solmujoukko Esimerkit: customers.xsl customers-foreach.xsl Tapahtumiin perustuva for-each (push) vs. tyylitiedoston hallitsema apply-templates (pull) käsittely 3 Järjestäminen Ensimmäisena lapsielementt(e)inä <xsl:sort> Document order, jos ei määritelty Esim. nesting.xsl

Kontekstin vaihto Kontekstin uudelleenvalinta <xsl:for-each select= uusi > 3Nykyisen solmun vaihto - select-attribuutti Arvona relatiivinen tai absoluuttinen polkulauseke, document(), mikä tahansa solmujoukko Jokainen joukon solmu nykyisenä solmuna 3Monen syötedokumentin hallinta <xsl:variable name= root select= / /> <xsl:for-each select= $root >... </xsl:for-each>