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

Samankaltaiset tiedostot
Web-teknologiat. XML-datan kysely Topi Sarkkinen

arvostelija OSDA ja UDDI palveluhakemistoina.

Hohde Consulting 2004

Selainpelien pelimoottorit

XQuery tietokannan kyselykielenä

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

Hohde Consulting 2004

Extensible Stylesheet Language (XSL)

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

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Aika/Datum Month and year Kesäkuu 2012

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

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

Luento 4: XPath ja XLink

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

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

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

W3C-teknologiat ja yhteensopivuus

Paikkatiedot ja Web-standardit

W3C ja Web-teknologiat

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Luonnontieteiden popularisointi ja sen ideologia

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

XSLT - ohjelmoinnin perusteet. Jaana Holvikivi Metropolia

! #! %! & #!!!!! ()) +

Ohjelmoinnin perusteet Y Python

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan

Ensimmäiset XPath-lausekkeet

Ohjelmoinnin peruskurssi Y1

Rakenteiset dokumentit Mitä hyötyä niistä on?

Tutoriaaliläsnäoloista

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmointiharjoituksia Arduino-ympäristössä

Hohde Consulting 2004

Ohjelmoinnin perusteet Y Python

W3C, Web-teknologiat ja XML

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

XML / DTD / FOP -opas Internal

3 Verkkosaavutettavuuden tekniset perusteet

XSL-muunnokset. 9 XSL-muunnokset

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

XML Technologies and Applications - harjoitustyö -

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

M. Merikanto 2012 XML. Merkkauskieli, osa 2

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

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

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

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

Oppimateriaalin kokoaminen ja paketointi

Ohjelmoinnin perusteet Y Python

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

XML ja Web Services update

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

SELECT-lauseen perusmuoto

Seminaari: HL7 versio 2

Sosiaalihuollon asiakirjastandardi kehittyy. Konstantin Hyppönen Erikoissuunnittelija Tietojenkäsittelytieteen laitos Kuopion yliopisto

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

811120P Diskreetit rakenteet

Helsingin yliopisto/tktl XML-metakieli XPath

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

XML johdanto, uusimmat standardit ja kehitys

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

Ohjelmoinnin perusteet Y Python

Zeon PDF Driver Trial

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Mallintaminen; kurssipalautejärjestelmä

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

ITKP102 Ohjelmointi 1 (6 op)

Verkkosisällön saavutettavuusohjeet 2.0: hyviä ohjeita monimuotoisen sisällön suunnitteluun ja arviointiin

Palvelinpuolen ohjelmointi

811120P Diskreetit rakenteet

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

5 XML Query Language. Skeemojen opiskelun myötä olemme polulla joka luontevasti johtaa ajatukseen XMLdokumenteista

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Ohjelmoinnin perusteet Y Python

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

CSE-A1200 Tietokannat

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

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto

W3C ja Web-teknologiat

XSLT - ohjelmaesimerkkejä. Jaana Holvikivi Metropolia

HELIA 1 (14) Outi Virkki Tiedonhallinta

XML-evoluutio ja kestävä kehitys

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Johdatus XML teknologioihin

SQL:N PERUSTEET MARKKU SUNI

5 XML Query Language. Skeemojen opiskelun myötä olemme polulla joka luontevasti johtaa ajatukseen XMLdokumenteista

TIEA341 Funktio-ohjelmointi 1, kevät 2008

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

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

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Transkriptio:

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

HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen tiedekunta Tekijä Författare Author Tietojenkäsittelytieteen laitos Topi Sarkkinen Työn nimi Arbetets titel Title XML-datan kysely Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Seminaarityö Tiivistelmä Referat Abstract Aika Datum Date 18.3.2015 Sivumäärä Sidoantal Number of pages 10 XML on suosittu metakieli tiedon esittämiseen ja siirtoon. Tässä työssä käsitellään kolmea kenties tärkeintä XML-datan kyselyteknologiaa: XPathia, XQuerya ja XSLT:tä. Avainsanat Nyckelord Keywords xml, xpath, xquery, xslt Säilytyspaikka Förvaringställe Where deposited Muita tietoja Övriga uppgifter Additional information

Sisältö 1 Johdanto 1 2 XPath 2 2.1 Elementtien valinta...3 2.1.1 Akselimäärittely...3 2.1.2 Solmutesti...3 2.1.3 Predikaatti...3 2.2 Funktiot ja operaattorit...4 3 XQuery 5 3.1 FLWOR...5 3.2 Ehtolauseet...7 3.3 Funktiot...8 4 XSLT 8 4.1 Tiedostojen muunto...8 4.2 Syntaksi...9 5 Yhteenveto 9 Lähteet 11

1 1 Johdanto XML eli Extensible Markup Language on World Wide Web Consortiumin (W3C) kehittämä merkintäkieli [BPS98]. XML on eräänlainen metakieli, jolla voidaan määritellä myös muita kieliä. Se on luettavaa niin ihmisille kuin tietokoneillekin. XMLdokumenttien rakenne auttaa suurten tietomäärien jäsentämistä selkeämmäksi. XML:n spesifikaatiot ovat avoimesti saatavilla ja vapaasti käytettävissä [BPS98]. Viralliset spesifikaatiot määrittelee W3C, mutta avoimen luonteensa ansiosta myös useita muunnelmia ja laajennoksia on kehitetty. XML:ää käytetään yleisesti tiedon esittämiseen, dokumenttien tallentamiseen ja tiedonsiirtoon järjestelmien välillä, erityisesti internetin kautta. Useat suositut webpalveluiden viestinvälityspalvelut, kuten SOAP, pohjautuvat XML:ään sen laajan tuen ansiosta. XML-dokumentti on sisällöltään tekstiä, joka on yleensä oletuksena W3C:n suosituksen mukaisesti UTF-muotoista [BPS98]. Dokumentti koostuu elementeistä ja niitä tarkentavista attribuuteista. Elementit luovat dokumentille rakenteen. Ne muodostuvat alku- ja loppumerkeistä, joita kutsutaan tageiksi. Kuvassa 1 on yksinkertainen esimerkki XML-dokumentista. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <tietojenkäsittelytiede> <kurssit> <kurssi id="123">ohjelmoinnin perusteet</kurssi> <kurssi id="432">ohjelmoinnin jatkokurssi</kurssi> <kurssi id="876">tietokantojen perusteet</kurssi> <kurssi id="967">rinnakkaisohjelmointi</kurssi> </kurssit> <henkilöstö> <henkilö tyyppi="opettaja">olli Opettaja</henkilö> <henkilö tyyppi="hallinto">ella Esimies</henkilö> <henkilö tyyppi="hallinto">jorma Johtaja</henkilö> </henkilöstö> </tietojenkäsittelytiede> Kuva 1: Esimerkki XML-dokumentista. Esimerkiksi kuvassa 1 jokainen henkilö on <henkilö> -elementin sisällä. Elementillä on

2 myös attribuutti tyyppi, joka kertoo henkilön aseman. Elementtejä voi olla sisäkkäin ja peräkkäin rajattomasti. XML:ää on kritisoitu sen monimutkaisuudesta ja paljon tilaa vievästä tyylistä, erityisesti liittyen tiedonvälitykseen järjestelmien välillä. Nykyään melko suosittuja vaihtoehtoja jäsennellyn datan lähettämiseen tietoverkoissa ovat muun muassa JSON ja YAML, joissa tieto mahdutetaan pienempään tilaan. XML on silti nykyäänkin erittäin relevantti teknologia. XML-muotoisen datan kyselyyn ja käsittelyyn on useita tekniikoita ja teknologioita, mutta tässä työssä keskitytään kolmeen melko keskeiseen teknologiaan: XPath, XQuery ja XSLT. XPath (XML Path Language) on W3C:n määrittelemä yksinkertainen kieli XMLdokumenttien osien löytämiseen ja valitsemiseen [ClD99]. Useat laajemmat kyselytoteutukset pohjautuvat XPathiin. Sitä käsitellään kappaleessa 2. XQuery on XPathia voimakkaampi SQL:ään verrattavissa oleva funktionaalinen kyselykieli XML-datan käsittelyyn [BCF02]. Myös sen taustalla on W3C. XQuerya käsitellään kappaleessa 3. XSLT (Extensible Stylesheet Language Transformations) on taas XML-dokumenttien muuntamiseen kehitetty merkintäkieli [Cla99]. Sen avulla XML-dokumentteja voi muuntaa muiksi dokumenteiksi, esimerkiksi HTML-sivuksi. XSLT:tä käsitellään kappaleessa 4. 2 XPath XPath eli XML Path Language on kyselykieli XML-dokumentin osien löytämiseen ja valitsemiseen [ClD99]. Se on W3C:n vuonna 1999 luoma ja suosittelema teknologia (W3C Recommendation 1999). Pelkän XML-dokumentin solmujen valitsemisen lisäksi XPathilla voi tehdä erilaisia operaatioita valituille solmuille. Käytettävänä on muun muassa aritmeettisia operaatioita ja merkkijonofunktioita. XPath on melko yksinkertainen kieli, mutta se toimii pohjana useille muille XMLkyselyteknologioille, kuten XQuerylle [BCF02].

3 2.1 Elementtien valinta XPath perustuu XML-dokumentin puumaiseen rakenteeseen, jota pitkin voi liikkua ja valita solmuja annettujen ehtojen mukaisesti [ClD99]. XPath-polkulausekkeessa määritellään eri askeleet, joilla päästään solmusta joko yhteen tai useampaan muuhun solmuun. Polkulauseke koostuu kolmesta osasta: akselimäärittelystä, solmutestistä ja valinnaisesta predikaatista eli ehtolauseesta. Lausekkeen rakenne jäljittelee URI-polkujen (Uniform Resource Identifier) muotoa. Lausekkeille on olemassa kaksi erilaista merkintätapaa: täysi syntaksi ja lyhennetty syntaksi. Tässä työssä keskitytään yleisempään lyhennettyyn syntaksiin. 2.1.1 Akselimäärittely Akselimäärittely kertoo liikkumissuunnan XML-dokumentin puussa, eli valitaanko esimerkiksi pelkästään nykyisen solmun lapsia, jälkeläisiä tai edeltäjiä. Oletuksena valitaan nykyisen solmun lapsia, jolloin sitä ei tarvitse erikseen määritellä lyhennettyä syntaksia käytettäessä. Lapsien valinnan lisäksi yleisiä akselimäärittelyjä ovat jälkeläiset (//) ja attribuutti (@). Esimerkiksi lauseke /A/B valitsee kaikki elementtien A lapset B, mutta lauseke /A//B valitsee elementtien A kaikki jälkeläiset B, eli siis lapset ja muut syvemmältä löytyvät jälkeläiset. 2.1.2 Solmutesti Solmutesti määrittelee mitä dokumentista valitaan ja koostuu usein vain kohteen nimestä. Esimerkissä /A/B solmutestejä ovat siis elementtien nimet A ja B, jotka kertovat valittavat solmut. 2.1.3 Predikaatti Predikaatit eli ehtolauseet määrittävät löytyneille elementeille ehtoja, jotka niiden tulee täyttää tullakseen valituiksi. Sillä siis voidaan suodattaa mukaan vain halutut ehdot täyttävät elementit. Predikaatit eivät ole pakollinen osa XPath-lauseketta, mutta niitä voi myös olla useita missä tahansa lausekkeen askeleessa. Predikaatit määritellään askeleen lopussa hakasuluilla. Esimerkiksi lauseke

/A/B[@nimi='Topi' valitsee kaikki elementti A:n lapset B, joilla on attribuutti nimi ja sen arvona Topi. Huomaa, että määrittely @ on yllä mainittu akselimäärittely, joka tarkoittaa attribuuttia. Kuva 2 havainnollistaa XPath-lausekkeen toimintaa yksinkertaisella esimerkillä. Siinä valitaan tietojenkäsittelytieteen henkilöstöstä henkilöt, joilla on attribuutti tyyppi arvolla hallinto. XML-dokumentti: <tietojenkäsittelytiede> <kurssit> <kurssi id="123">ohjelmoinnin perusteet</kurssi> <kurssi id="432">ohjelmoinnin jatkokurssi</kurssi> <kurssi id="876">tietokantojen perusteet</kurssi> <kurssi id="967">rinnakkaisohjelmointi</kurssi> </kurssit> <henkilöstö> <henkilö tyyppi="opettaja">olli Opettaja</henkilö> <henkilö tyyppi="hallinto">ella Esimies</henkilö> <henkilö tyyppi="hallinto">jorma Johtaja</henkilö> </henkilöstö> </tietojenkäsittelytiede> XPath-lauseke: /tietojenkäsittelytiede/henkilöstö/henkilö[@tyyppi="hallinto"] Tulos: <henkilö tyyppi="hallinto">ella Esimies</henkilö> <henkilö tyyppi="hallinto">jorma Johtaja</henkilö> Kuva 2: Esimerkki XPath-hausta. 4 2.2 Funktiot ja operaattorit XML-dokumentin osien valitsemisen lisäksi XPathilla voi niille myös tehdä erilaisia operaatioita [ClD99]. XPathissa XML-dokumentin katsotaan rakentuvan neljästä eri tietotyypistä: solmujoukko, merkkijono, numero ja totuusarvo. Näitä tietotyyppejä voi käsitellä eri tavoin. Numeroita voi käsitellä aritmeettisilla operaattoreilla +, -, *, div (jakolasku) ja mod (modulo). Operaattorien lisäksi numeroiden manipuloimiseen on apuna joukko funktioita, muun muassa sum summan laskemiseen ja round pyöristämiseen.

5 Merkkijonojen käsittelyyn voi käyttää myös useita funktioita. Merkkijonoja voi esimerkiksi yhdistää concat-funktiolla tai merkkijonosta voi valita tietyn osan substring-funktiolla. Totuusarvoista voi tarkistaa niiden olevan joko true tai false ja käyttää tätä vertailuissa tai ehdoissa. Solmujoukoista voi muun muassa laskea solmujen määrän count-funktion avulla. 3 XQuery XQuery (XML Query) on kappaleessa 2 esitellyn XPathin tapaan W3C:n suunnittelema kysely- ja ohjelmointikieli jäsennellyn datan kyselyyn ja muuntamiseen [BCF02]. XQueryn käyttö ei rajoitu pelkästään XML-dokumentteihin, vaan sitä voi käyttää myös esimerkiksi JSON-datan tai HTML-sivujen kanssa. XQuery rakentuu osittain XPath-lausekkeiden pohjalle, mutta on huomattavasti sitä laajempi ja voimakkaampi kieli [MeB06]. XQuerylla voi tehdä myös SQL-tyyppisiä kyselyitä, jolloin tuloksena on se, että XML-dokumentteja voidaan tavallaan käsitellä kuten tietokantaa. 3.1 FLWOR XQuery käyttää XPath-lausekkeita XML-dokumentin navigoimiseen [BCF02]. Siinä voi siis käyttää esimerkiksi XPathin ehtolauseita navigoinnin apuna, mutta XQuery ei kuitenkaan rajoitu pelkästään niihin. XPath-lausekkeiden lisäksi hakua voi tehostaa niin kutsutulla FLWOR-lausekkeella, joka tarkoittaa SQL-henkistä kyselyä ja sen eri osien rakenteita (for, let, where, order by, return). Onkin osuvaa sanoa XQueryn olevan XML-dokumenteille kuten SQL on tietokannoille. For-määrittely kertoo mitä dokumenttia tai kokoelmaa kysely koskee ja määrittelee XPathia käyttäen mahdolliset rajaukset hakuun. Se myös asettaa löydetyt elementit määriteltyyn muuttujaan ja aloittaa niiden iteroimisen. Lauseke for $x in doc("tktl.xml")/kurssit/kurssi valitsisi siis kuvan 3 dokumentista (olettaen sen olevan tallennettuna tiedostoon tktl.xml) kaikki kurssielementit ja kohdistaisi kyselyn niihin. Muuttuja $x sisältää näin kurssit ja mahdollistaa niiden tarkemman käsittelyn niitä

6 iteroidessa. XML-dokumentti tktl.xml: <tietojenkäsittelytiede> <kurssit> <kurssi> <id>132</id> <nimi>ohjelmoinnin perusteet</nimi> </kurssi> <kurssi> <id>875</id> <nimi>rinnakkaisohjelmointi</nimi> </kurssi> </kurssit> <henkilöstö> <henkilö tyyppi="opettaja">olli Opettaja</henkilö> <henkilö tyyppi="hallinto">ella Esimies</henkilö> <henkilö tyyppi="hallinto">jorma Johtaja</henkilö> </henkilöstö> </tietojenkäsittelytiede> XQuery-kysely: for $x in doc("tktl.xml")/tietojenkäsittelytiede/kurssit/kurssi where $x/nimi='rinnakkaisohjelmointi' return $x/id Tulos: <id>875</id> Kuva 3: Esimerkki XQuery-kyselystä. Let-määrittelyssä voidaan asettaa muuttujia niin haluttaessa. Esimerkiksi let $viisi := 5 asettaisi muuttujaan $viisi arvon 5. Where-lausekeessa haulle voidaan asettaa SQL-tyylisiä ehtoja. Sillä voidaan siis valita tuloksiin mukaan vain tietyt ehdot täyttävät elementit. Ehdot voivat kohdistua elementtiin itseensä, elementin jälkeläiseen tai kumman tahansa attribuutteihin. Esimerkiksi ehto where $x/nimi = 'Tietokantojen perusteet' valitsisi vain elementit, joilla on lapsi nimi ja sen arvona 'Tietokantojen perusteet'. Arvojen vertaamiseen on käytössä tutut operaattorit =,!=, <, <=, > ja >=. Order by määrittelee mihin järjestykseen palautetut tiedot järjestetään. Esimerkiksi

7 order by $x/id järjestäisi palautettavat tiedot id-elementissä olevan arvon mukaiseen järjestykseen. Return-lauseke määrittelee mitä valituista tiedoista palautetaan. Sen avulla voidaan esimerkiksi koko elementin sijaan palauttaa vain elementin tietty osa tai attribuutti. Esimerkiksi return $x/nimi palauttaisi vain nimielementit. 3.2 Ehtolauseet XQueryssa on mahdollista käyttää myös If-Then-Else -ehtolauseita, jotka ovat hyödyllisiä erityisesti kun halutaan tulostaa tietoa ehtojen mukaan [MeB06]. Kuvassa 4 on esimerkki siitä, miten ehtolauseita voi käyttää hyödyksi tiedon muuntamisessa halutunlaiseksi. Siinä tietyn attribuutin arvon omaavat elementit muunnetaan toisenlaisiksi elementeiksi. XML-dokumentti tktl.xml: <tietojenkäsittelytiede> <kurssit> <kurssi id="123">ohjelmoinnin perusteet</kurssi> <kurssi id="432">ohjelmoinnin jatkokurssi</kurssi> <kurssi id="876">tietokantojen perusteet</kurssi> <kurssi id="967">rinnakkaisohjelmointi</kurssi> </kurssit> <henkilöstö> <henkilö tyyppi="opettaja">olli Opettaja</henkilö> <henkilö tyyppi="hallinto">ella Esimies</henkilö> <henkilö tyyppi="hallinto">jorma Johtaja</henkilö> </henkilöstö> </tietojenkäsittelytiede> XQuery-lauseke: for $x in doc( tktl.cml )/tietojenkäsittelytiede/henkilöstö/henkilö return if ($x/@tyyppi= opettaja ) then <professori>{data($x)}</professori> else <hallinto>{data($x)}</hallinto> Tulos: <professori>olli Opettaja</professori> <hallinto>ella Esimies</hallinto> <hallinto>jorma Johtaja</hallinto> Kuva 4: Esimerkki XQueryn ehtolauseesta muuntamisen apuna.

Ehtolauseiden käyttämisessä XQueryssa on hyvä huomata, että else-määrittely on aina pakollinen ehdon jälkeen. Sen voi tosin vain jättää tyhjäksi. 8 3.3 Funktiot XQuery ja kappaleessa 2 esitelty XPath jakavat saman funktiokirjaston [BCF02]. XQueryssa on siis käytössä kaikki samat funktiot tiedon käsittelyyn kuin XPathissakin. Funktioita löytyy esimerkiksi merkkijonojen käsittelyyn ja matemaattisiin toimenpiteisiin. XQueryn erikoisuus on käyttäjän itse määrittelemät funktiot, joissa tulee hyvin esiin XQueryn olemus myös ohjelmointikielenä kyselykielen lisäksi. Omat funktiot ovat hyödyllisiä, jos haluaa tehdä automaattisesti monimutkaisempia toimintoja datalle. Funktion määrittely aloitetaan declare function -käskyllä, jossa määritellään funktion mahdolliset parametrit ja palautettavan datan tyyppi. Itse funktio kirjoitetaan aaltosulkujen sisään. 4 XSLT XSLT (Extensible Stylesheet Language Transformations) on XML-pohjainen kieli XML-dokumenttien muuntamiseksi toisiksi dokumenteiksi, kuten esimerkiksi HTMLsivuiksi tai tekstitiedostoiksi [Clar99]. XPathin ja XQueryn lisäksi myös XSLT on W3C:n kehittämä ja ylläpitämä. Sen hakutoiminnot myös perustuvat XPathiin XQueryn tavoin. 4.1 Tiedostojen muunto XSLT:n perustana on XSL-tyylitiedostot, jotka määrittelevät miten lähdedokumentti muunnetaan uudeksi dokumentiksi [Clar99]. XSLT:n voi mieltää olevan XML:lle osittain vastaavanlainen teknologia kuin CSS on HTML:lle. XSLT-prosessorille siis annetaan lähdedokumentti ja XSL-tyylitiedosto, joka sisältää muunnosmäärittelyt. Prosessori luo niiden pohjalta uuden dokumentin. XSLT:n ja XQueryn toiminallisuudet ovat osittain päällekkäisiä, sillä myös XQuery kykenee tiedostojen muuntoon [MeB06]. Molemmilla on kumminkin omat vahvuutensa, koska kummallakin on omat pääkäyttötarkoituksensa.

9 4.2 Syntaksi XSL-tyylitiedostoon määritellään pohjia muunnoksille <xsl-template match= / >elementillä [Clar99]. Match-attribuuttiin asetetaan XPath-lausekkeella alkuperäisen dokumentin osa, johon pohjaa halutaan käyttää. Elementillä <xsl:value-of select= > valitaan jokin tietyn elementin arvo käytettäväksi tyylitiedostossa. Attribuuttiin select asetetaan jälleen XPath-lausekkeella se elementti tai attribuutti, jonka arvo halutaan. Jotta elementtejä ei tarvitsisi valita yksitellen, XSLT tarjoaa <xsl:for-each select=""> -tagin, jolla voi iteroida kokoelmia. Silmukan sisällä voi taas käyttää value-of-toimintoa tiettyjen arvojen näyttämiseen. Iteroitavan kokoelman voi myös järjestää <xsl:sort>komennolla. Ehtolauseiden toteuttamiseen voi XSLT:ssä käyttää käskyjä <xsl:if> ja <xsl:choose>. Kuten XQuery, myös XSLT jakaa saman funktiokirjaston kuin XPath. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>laitoksen kurssit</h2> <ul> <xsl:for-each select="tietojenkäsittelytiede/kurssit"> <li><xsl:value-of select="kurssi"/></li> </xsl:for-each> </ul> </body> </html> </xsl:template> </xsl:stylesheet> Kuva 5: Esimerkki XSL-tyylitiedostosta. 5 Yhteenveto W3C:n kehittämä XML on yhä suosittu metakieli tiedon esittämiseen ja siirtämiseen, varsinkin web-maailmassa. XML-datan kyselyyn on useita teknologioita, joista tässä työssä käsiteltiin kolmea:

10 XPathia, XQuerya ja XSLT:tä. XPath on luonteeltaan oikeastaan melko yksinkertainen, mutta se toimii pohjana useille muille teknologioille, jotka käyttävät sitä kyselyjen alustana. XQuery taas on paljon voimakkaampi datan etsimisessä ja jäsentämisessä. XSLT:n vahvuus sen sijaan on XML-dokumenttien muuntaminen.

11 Lähteet BCF02 Boag, S., Chamberlin, D., Fernández, M. F., Florescu, D., Robie, J., Siméon, J., ja Stefanescu, M. XQuery 1.0: An XML Query Language. World Wide Web Consortium Recommendation, 2002. BPS98 Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., ja Yergeau, F. Extensible Markup Language (XML). World Wide Web Consortium Recommendation, 1998. Clar99 Clark, J. XSL Transformations (XSLT). World Wide Web Consortium Recommendation, 1999. ClD99 Clark, J., ja DeRose, S. XML Path Language (XPath) version 1.0. World Wide Web Consortium Recommendation, 1999. MeB06 Melton. J., Buxton S. Querying XML: XQuery, XPath, and SQL/XML in Context. Elsevier, 2006, sivut 261 406.