xml-datan kysely · 2015-03-15 · xml extensible markup language ihmisten ja koneiden luettava...

33
Web-teknologiat XML-datan kysely Topi Sarkkinen

Upload: others

Post on 06-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

Web-teknologiatXML-datan kyselyTopi Sarkkinen

Page 2: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

Sisältö

● XML (lyhyesti)● XPath● XQuery● XSLT

Page 3: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XML

● Extensible Markup Language● Ihmisten ja koneiden luettava metakieli, jolla

voidaan määritellä muitakin kieliä● Dokumentit, tiedon esittäminen, tiedon

välitys● Koostuu tekstipohjaisista elementeistä

○ <esim>Tämä on XML-elementti</esim>

Page 4: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XML - Esimerkki

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

Page 5: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath

● XML Path Language● W3C Recommendation 1999● XML-dokumentin osien valitsemisen perusta

○ Melko yksinkertainen○ Useat muut teknologiat pohjautuvat XPathiin

■ XQuery, XSLT...

Page 6: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Elementtien valinta

● Perustuu XML-dokumentin puumaiseen rakenteeseen, jota pitkin liikutaan

● XPath-lauseke koostuu peräkkäisistä askeleista, joilla päästään haluttuihin elementteihin

● Lauseke koostuu kolmesta osasta○ Akselimäärittely, solmutesti, ehtolause

Page 7: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Akselimäärittely

● Liikkumissuunta XML-dokumentissa○ Lapset (/), jälkeläiset (//), attribuutit (@) ym.

● Elementtien A lapset B: A/B ● Elementtien A jälkeläiset B: A//B● Määritellään joka askeleen välissä

Page 8: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Solmutesti

● Mitä kyseisellä askeleella valitaan● Yleensä vain solmun nimi● Esim. A/B: A ja B ovat solmutestit

Page 9: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Ehtolause

● Ei pakollinen, mutta voidaan myös määrittää jokaiselle askeleelle useitakin

● Ehtoja löytyneiden elementtien valitsemiseen

● Askeleen lopussa hakasulkujen sisällä● A/B[@nimi = ‘Topi’]

○ A:n lapset B, joilla attribuutti nimi arvolla ‘Topi’

Page 10: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Funktiot ja operaattorit

● XPath-haun tuloksia voi myös käsitellä erilaisilla funktioilla ja operaattoreilla

● Merkkijonofunktiot○ concat, substring, contains...

● Aritmeettiset operaatiot○ +, -, sum...

Page 11: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Esimerkki/tietojenkäsittelytiede

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

Page 12: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Esimerkki/tietojenkäsittelytiede/henkilöstö/

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

Page 13: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Esimerkki/tietojenkäsittelytiede/henkilöstö/henkilö

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

Page 14: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Esimerkki/tietojenkäsittelytiede/henkilöstö/henkilö[@tyyppi="hallinto"]

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

Page 15: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XPath - Esimerkki/tietojenkäsittelytiede/henkilöstö/henkilö[@tyyppi="hallinto"][1]

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

Page 16: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery

● XML Query● W3C Recommendation 2002● Kysely- ja ohjelmointikieli● Datan kyselyyn ja muuntamiseen● Voi käyttää myös esim. HTML-dokumenttien

kanssa

Page 17: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery

● Rakennettu XPathin pohjalta○ Voi käyttää suoraan XPath-lausekkeita

● Mutta myös: “XQuery on XML-dokumenteille kuten SQL on tietokannoille”○ Etsitään XML-dokumenteista tietoa○ SQL-tyylinen syntaksi

■ Where, order by, join…

Page 18: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR

● For, Let, Where, Order by, Return○ SQL-tyylinen syntaksi

Page 19: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR - FOR

● Mihin dokumenttiin tai kokoelmaan kysely tehdään

● Määritellään XPath-lausekkeella● Asettaa löydetyt elementit määriteltyyn

muuttujaan ja aloittaa niiden iteroinnin

for $x in doc("tktl.xml")/tietojenkäsittelytiede/kurssit/kurssi

Page 20: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR - FOR

● Mihin dokumenttiin tai kokoelmaan kysely tehdään

● Määritellään XPath-lausekkeella● Asettaa löydetyt elementit määriteltyyn

muuttujaan ja aloittaa niiden iteroinnin

for $x in doc("tktl.xml")/tietojenkäsittelytiede/kurssit/kurssi

Page 21: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR - LET

● Mahdollista määritellä muuttujia

let $viisi := 5

Page 22: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR - WHERE

● Haulle SQL-tyylisiä ehtoja○ Suodatetaan siis mukaan vain tietyt ehdot täyttävät

● Ehdot voivat kohdistua:○ Elementtiin itseensä○ Elementin jälkeläiseen○ Kumman tahansa attribuuttiin

where $x/nimi = 'Tietokantojen perusteet'

Page 23: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR - ORDER BY

● Palautettavien tietojen järjestys

order by $x/id

Page 24: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - FLWOR - RETURN

● Mitä palautetaan● Voidaan koko elementin sijaan palauttaa

esim. tietty osa, lapsi tai attribuutti

return $x/nimi

Page 25: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - Ehtolauseet

● If - Then - Else● Voidaan käyttää hyödyksi esim. tiedon

muuntamisessa

return if ($x/@tyyppi=”opettaja”)then <professori>{data($x)}</professori>else <hallinto>{data($x)}</hallinto>

Page 26: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - Funktiot

● Käytössä yhteinen funktiokirjasto XPathin kanssa

● Merkkijonojen käsittely● Matemaattiset funktiot● Ym...

Page 27: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XQuery - Funktiot

● Voi kuitenkin myös määritellä omia funktioita● Alkaa declare function -käskyllä

○ Määritellään parametrit ja palautettavan datan tyyppi

declare function local:alennettuHinta($hinta as xs:decimal, $alennusProsentti as xs:decimal) as xs:decimal {let $alennus := ($hinta * $alennusProsentti) div 100return $hinta - $alennus}

Page 28: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XSLT

● Extensible Stylesheet Language Transformations

● W3C Recommendation 1999● XML-dokumenttien muuntaminen toisiksi

dokumenteiksi● Elementtien valinta perustuu taas XPathiin

Page 29: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XSLT● CSS & HTML = XSLT & XML?● XSLT-prosessorille annetaan

lähdedokumentti ja XSL-tyylitiedosto○ Tekee uuden dokumentin tyylitiedoston määrityksien

mukaisesti

Page 30: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XSLT - Syntaksi

● <xsl-template match=”/”>○ Pohjia muunnoksille○ Matchiin XPathilla alkuperäisen dokumentin osa, jota

käytetään● <xsl:value-of select=””>

○ Valitaan alkuperäisestä dokumentista elementtejä/attribuutteja XPathilla

● <xsl:for-each select="">○ Iteroidaan kokoelmia

Page 31: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

XSLT - Esimerkki<?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/kurssi"> <li><xsl:value-of select="kurssi"/></li> </xsl:for-each> </ul> </body></html></xsl:template></xsl:stylesheet>

Page 32: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

Yhteenveto

● XML○ Haastajia kuten JSON, mutta vielä hyvin suosittu

● XPath○ Yksinkertainen, mutta luo pohjan XML-kyselyille

● XQuery○ Voimakkaampi, SQL-tyylinen

● XSLT○ Dokumenttien muunto

Page 33: XML-datan kysely · 2015-03-15 · XML Extensible Markup Language Ihmisten ja koneiden luettava metakieli, jolla voidaan määritellä muitakin kieliä Dokumentit, tiedon esittäminen,

Kiitos!