Luento 4: XPath ja XLink

Samankaltaiset tiedostot
ELEC-C1220 Automaatio 2 - XML

ELEC-C1220 Automaatio 2 - XML

Hohde Consulting 2004

Helsingin yliopisto/tktl XML-metakieli XPath

Luento 3: Tietorakenteiden esittäminen

XPath. namespace nodes, processing instruction nodes, comment nodes. a root node, element nodes, text nodes, attribute nodes,

Hohde Consulting 2004

XPath. namespace nodes, processing instruction nodes, comment nodes. a root node, element nodes, text nodes, attribute nodes,

Hohde Consulting 2004

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Web-teknologiat. XML-datan kysely Topi Sarkkinen

P e d a c o d e ohjelmointikoulutus verkossa

Java-kielen perusteet

Tutoriaaliläsnäoloista

Luento 7: XML-ohjelmointirajapinnat

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

ITKP102 Ohjelmointi 1 (6 op)

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

Extensible Stylesheet Language (XSL)

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

OpenOffice.org Base 3.1.0

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

Ohjelmointi 1 Taulukot ja merkkijonot

18. Abstraktit tietotyypit 18.1

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Algoritmit 2. Luento 7 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

Datatähti 2019 loppu

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

Java-kielen perusteet

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Ohjelmoinnin perusteet Y Python

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

Luento 2: XML:n syntaksi

A TIETORAKENTEET JA ALGORITMIT

Ohjelmoinnin peruskurssi Y1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

17. Javan omat luokat 17.1

Luento 12: XML ja metatieto

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

8 XSLT-muunnoskieli XSLT-muunnoskieli

XML standardeja. nimiavaruudet, namespaces XHTML XML Schema linkitys Jaana Holvikivi 1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Kaulaketju. Syöte. Tuloste. Esimerkki 1. Esimerkki 2

7/20: Paketti kasassa ensimmäistä kertaa

Ohjelmoinnin peruskurssi Y1

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

XSL-muunnokset. 9 XSL-muunnokset

Ohjelmoinnin peruskurssi Y1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

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

Python-ohjelmointi Harjoitus 5

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA341 Funktio-ohjelmointi 1, kevät 2008

17. Javan omat luokat 17.1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Ohjelmoinnin perusteet Y Python

Digitaalisen median tekniikat. JSP ja XML

XML rakenteen suunnittelu. Jaana Holvikivi

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

7. Näytölle tulostaminen 7.1

Johdatus rakenteisiin dokumentteihin

Ohjelmoinnin perusteet Y Python

Taulukot. Jukka Harju, Jukka Juslin

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

13. Loogiset operaatiot 13.1

Tieto- ja tallennusrakenteet

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Tekninen rajapinta Zip-tiedosto sovelluskehittäjälle Kansallisen tulorekisterin perustamishanke

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Julkishallinnon XML-skeemat v0.5 JHS-suositus

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

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

Tekninen rajapinta Zip-tiedosto sovelluskehittäjälle Kansallisen tulorekisterin perustamishanke

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Ohjelmoinnin peruskurssien laaja oppimäärä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Algoritmit 2. Luento 6 To Timo Männikkö

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Algoritmit 1. Demot Timo Männikkö

Harjoitus 2 (viikko 45)

Ohjelmoinnin perusteet Y Python

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Ohjelmoinnin peruskurssien laaja oppimäärä

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

CSE-A1200 Tietokannat

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

Ohjelmoinnin peruskurssi Y1

Helsingin yliopisto / TKTL XML-Metakieli XML Schema

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

Ohjelmoinnin peruskurssi Y1

11.4. Context-free kielet 1 / 17

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Transkriptio:

Luento 4: XPath ja XLink AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XPath ja XLink XPath lausekkeet joukko-oppi askeleet siirtymät solmutestit ehdot funktiot XPathin käyttö XLink XML Base XPointer www.hohde.com Hohde Consulting 2004 2

XPathin tehtävä XPath (XML Path Language) on kyselykieli, jolla XMLdokumentista voidaan poimia yksittäisiä elementtejä, attribuutteja tai jopa dokumentin osia Näitä saatuja tuloksia joko käytetään hyväkseen suoraan tai sitten niitä käytetään lähtökohtana erilaisille toimenpiteille, esimerkiksi XSLT-muunnoksilla (tästä myöhemmillä luennoilla) www.hohde.com Hohde Consulting 2004 3 XPathin rakenne XPath-lauseke koostuu joukosta askelia (step) askelista muodostuu polku (path) alkupisteestä loppujoukkoon jokainen askel muokkaa valittua joukkoa (set) jos askel päätyy tyhjään joukkoon, palautetaan tyhjä joukko askel määrää siirtymän (axis), solmutestin (node test) ja mahdollisesti joukon ehtoja (predicates) axis::node-test[predicates][predicates...] askeleet erotetaan toisistaan kauttaviivoilla www.hohde.com Hohde Consulting 2004 4

Lausekkeen evaluointi XPath-lauseke evaluoidaan aina puumuotoisessa XML:ssa jos XML:a ajattelee tekstidokumenttina, XPath on hyvin monimutkainen asia kannattaa heti kättelyssä totutella ajattelemaan XML-dokumenttia puuna tätä taitoa tarvitaan pitkin kurssia Lauseke evaluoidaan askel askeleelta ensimmäinen askel otetaan esimerkiksi ns. nykyisestä (current) elementistä tai juurielementistä tämä riippuu lausekkeesta seuraava askel otetaan siitä, mihin edellinen jäi jos askelta ei pystytä ottamaan, lauseke palauttaa tyhjän joukon www.hohde.com Hohde Consulting 2004 5 Joukko-oppia XPath operoi joukoilla jokainen askel voi saada lähtökohdakseen useita solmuja XML-puussa solmujen tyyppien ei välttämättä tarvitse olla samoja Jokainen askel otetaan jokaisesta lähtöjoukon solmusta mikäli askelta ei voida ottaa, kyseinen haara sulkeutuu askel voi tuottaa useita solmuja, jotka kaikki ovat mukana seuraavassa askeleessa Viimeisen askeleen valitsemat solmut palautetaan XPathlausekkeen tuloksena www.hohde.com Hohde Consulting 2004 6

Lyhennetty syntaksi XPath-lausekkeista tulee helposti pitkiä ja hankalia lukea Tämän vuoksi on laadittu erityinen lyhennetty syntaksi, jossa kaikkein oleellisimmat siirtymät on lyhennetty parin merkin mittaisiksi Lyhennettyä syntaksia voidaan käyttää normaalin syntaksin sijaan tai sen seassa kaikkea ei voida kuitenkaan toteuttaa lyhennetyllä syntaksilla Tällä kurssilla käydään molemmat syntaksit läpi www.hohde.com Hohde Consulting 2004 7 Peruslausekkeita Nykyisen elementin title-lapsielementtien valinta child::title tai title huomaa, että nykyistä elementtiä ei tarvitse merkitä erikseen XPath aloittaa oletusarvoisesti nykyisestä elementistä nykyinen elementti voidaan toki merkitä alkuun self/child::title tai./title Nykyisen elementin src-attribuutin valinta attribute::src tai @src www.hohde.com Hohde Consulting 2004 8

Askeleiden yhdistäminen Askeleet yhdistetään kauttaviivoilla lauseke suoritetaan askel askeleelta child::chapter/child::paragraph tai chapter/paragraph child::paragraph/text() tai paragraph/text() www.hohde.com Hohde Consulting 2004 9 Siirtymät XML-puussa XPath mahdollistaa liikkumisen kaikkiin suuntiin XML-puussa parent tai.. valitsee isäelementin child tai tyhjä valitsee lapsielementit / valitsee juurielementtiin descendant tai // valitsee kaikki lapsielementit, myös lapsien lapset jne. descendant-or-self valitsee myös nykyisen solmun ancestor valitsee kaikki esi-isät ancestor-or-self valitsee myös nykyisen solmun following ja preceding valitsevat kaikki dokumentissa seuraavat tai edeltävät solmut toisin sanoen kaikki elementit, jotka ovat vielä avautumatta (following) tai ovat jo sulkeutuneet (preceding) following-sibling ja preceding-sibling valitsevat seuraavat tai edeltävät sisarsolmut self tai. valitsee nykyisen solmun www.hohde.com Hohde Consulting 2004 10

Siirtymät, esimerkki (1/2) ancenstor parent preceding-sibling following-sibling child www.hohde.com Hohde Consulting 2004 11 Siirtymät, esimerkki (2/2) ancenstor-or-self preceding following descendant www.hohde.com Hohde Consulting 2004 12

Siirtymien tarkentaminen Siirtymälle voidaan asettaa ehtoja solmutestillä Askel valitsee ainoastaan ne solmut, jotka ovat siirtymän päässä nykyisestä joukosta ja jotka täyttävät solmutestin ehdot Solmutestillä voidaan valita tietyt elementit, pelkkä leipäteksti, kommentit tai käsittelyohjeet following-sibling::image child::text() tai text() parent/child::comment() tai../comment() descendant::* tai //* www.hohde.com Hohde Consulting 2004 13 Ehdot Valintaa voidaan tarkentaa edelleen määrittelemällä haluttu määrä ehtoja valittaville solmuille ehdot määritetään hakasuluissa solmutestin jälkeen useita ehtoja voidaan määritellä peräkkäin, jokaisen on toteuduttava child::title[attribute::lang] tai title[@lang] child::title[attribute::lang='fi'] tai title[@lang='fi'] ancestor-or-self[child::paragraph]/ child:image tai ancestor-orself[paragraph]/image www.hohde.com Hohde Consulting 2004 14

Funktiot XPath määrittää myös joukon funktioita, joita voidaan käyttää lausekkeiden ehdoissa tai lausekkeiden sijaan palauttamaan jotakin tietoa dokumentista funktiot ovat tyypitettyjä osa funktioista voi ottaa solmujoukon (node set) parametrikseen www.hohde.com Hohde Consulting 2004 15 Boolean-funktiot boolean(obj) muokkaa argumentin boolean-tyyppiseksi false() palauttaa aina false not(b) palauttaa b:n käänteisarvon true() palauttaa aina true www.hohde.com Hohde Consulting 2004 16

Numerofunktiot ceiling(number) palauttaa pienimmän mahdollisen kokonaisluvun, joka on suurempi tai yhtä suuri kuin argumentti siis pyöristys ylöspäin floor(number) palauttaa suurimman mahdollisen kokonaisluvun, joka on pienempi tai yhtä suuri kuin argumentti siis pyöristys alaspäin number(obj) muuttaa argumentin numeroksi round(number) pyöristää agumentin lähimpään kokonaislukuun www.hohde.com Hohde Consulting 2004 17 Merkkijonofunktiot (1/2) concat(s1, s2,...) yhdistää argumentit yhdeksi merkkijonoksi argumenttien täytyy olla merkkijonoja contains(haystack, needle) palauttaa true, jos toinen argumentti löytyy ensimmäisestä normalize-space(s) poistaa argumentin alusta ja lopusta tyhjät merkit ja korvaa kaikki tyhjien merkkien ryhmät yhdellä välilyönnillä starts-with(s1, s2) palauttaa true, jos s1 alkaa s2:lla string(obj) muuttaa argumentin merkkijonoksi string-length(s1) palauttaa argumentin pituuden merkkeinä substring(s, start, len) palauttaa merkkijonon, joka alkaa kohdasta start merkkijonossa s ja jonka pituus on len merkkiä www.hohde.com Hohde Consulting 2004 18

Merkkijonofunktiot (2/2) substring-after(s1, s2) palauttaa merkkijonon, joka alkaa siitä kohdin, mistä s2 löytyy s1:stä esimerkiksi substring-after('xpath', 'P') palauttaa 'ath' substring-before(s1, s2) palauttaa merkkijonon, joka päättyy siihen, mistä s2 löytyy s1:stä esimerkiksi substring-after('xpath', 'P') palauttaa 'X' translate(s1, s2, s3) korvaa merkkijonossa s1 s2:n merkit s3:n merkeillä esimerkiksi translate('xpath', 'XP', 'xp') palauttaa 'xpath' www.hohde.com Hohde Consulting 2004 19 Solmujoukkofunktiot count(ns) laskee solmujoukon solmujen lukumäärän id(idref) palauttaa solmun, jolla on ID-tyyppinen attribuutti, jonka arvo on idref local-name(n) palauttaa solmun paikallisen nimen (siis ilman nimiavaruutta) name(n) palauttaa solmun nimen, sisältäen nimiavaruuden namespace-url(n) palauttaa solmun nimiavaruuden URI:n sum(ns) laskee solmujoukon summan, solmut muutetaan numeroiksi www.hohde.com Hohde Consulting 2004 20

Nykyiseen solmuun liittyvät funktiot position() palauttaa nykyisen solmun järjestysnumeron nykyisessä solmujoukossa ei ole sama asia kuin elementin järjestysnumero dokumentissa tätä ei ole itse asiassa mahdollista edes helposti laskea last() palauttaa nykyisen solmujoukon viimeisen solmun järjestysnumeron www.hohde.com Hohde Consulting 2004 21 Funktioiden käyttö, esimerkkejä Attribuuttien arvojen yhdistäminen concat(@firstname, ' ', @surname) Vain ensimmäinen lapsielementti valitaan child::test[position()=1] tai test[position()=1] Lasketaan tiettyjen elementtien lukumäärä count(child::paragraph) + count(child::image[attribute::src]) tai count(paragraph) + count(image[@src]) www.hohde.com Hohde Consulting 2004 22

XPathin käyttökohteet XPath-lausekkeita käytetään laajalti hyväksi XSLT:ssa XSLT on kieli XML-dokumentin muuntamiseksi muodosta toiseen XSLT:ta ei voi käyttää ilman XPath-osaamista XPath on osa myös dokumenttien välistä linkitystä XPathilla voidaan linkittää dokumentin sisälle XPath-lausekkeet ovat näppäriä apuvälineitä ohjelmointikielissä yksinkertaisen valintalausekkeen toteuttaminen Javalla tai C:lla voi olla kymmeniä riviä koodia XPath-käsittelijäkirjastot ovat valmiiksi optimoituja ja testattuja kovassa käytössä www.hohde.com Hohde Consulting 2004 23 XLink

XML Linking Language XLink on kokoelma standardeja, joilla mahdollistetaan hyperlinkit XML-dokumenteista hyperlinkit käsitetään tässä yhteydessä laajemmin kuin HTML:n yksisuuntaiset yhdestä-yhteen linkit perusteet ovat silti samat resurssiin viitataan URI:lla www.hohde.com Hohde Consulting 2004 25 XLinkin käsitteet Resurssi URI:lla viitattava tietosisältö Linkki viittaus kahden resurssin välillä Hyperlinkki pääasiassa ihmisen käyttöön suunnattu linkki seuraaminen (traversal) siirtyminen linkin avulla resurssista toiseen www.hohde.com Hohde Consulting 2004 26

XLinkin käyttö XLink ei määrittele mitään erityistä XML-kieltä, vaan tarjoaa tietyn joukon käsitteitä ja attribuutteja käytettäväksi missä tahansa XML-pohjaisessa kielessä XLinkin attribuutit sijaitsevat omassa nimiavaruudessa, jonka URI on http://www.w3.org/1999/xlink lyhennetään yleensä xlink näillä attribuuteilla voidaan määrittää linkin tyyppi, viitattava resurssi ja antaa ohjeita dokumenttia käsittelevälle ohjelmalle kaikkia attribuutteja ei ole pakko käyttää www.hohde.com Hohde Consulting 2004 27 XLink-esimerkki <my:crossreference xmlns:my="http://example.com/" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="students.xml" xlink:role="http://www.example.com/linkprop s/studentlist" xlink:title="student List" xlink:show="new" xlink:actuate="onrequest"> Current List of Students </my:crossreference> www.hohde.com Hohde Consulting 2004 28

Yksinkertaiset ja laajennetut linkit XLink määrittää kaksi erilaista linkkityyppiä yksinkertainen linkki (simple link) on viittaus yhdestä resurssista toiseen kaikki HTML:n linkit ovat tätä tyyppiä laajennettu linkki (extended link) on monimutkainen viittausrakennelma mahdollisuus viitata useaan dokumenttiin kaksisuuntaiset linkit ovat sallittuja linkin seuraamiselle voidaan asettaa sääntöjä Kurssin kannalta yksinkertainen linkkityyppi on riittävä www.hohde.com Hohde Consulting 2004 29 XML Base

XML Base XML Basen avulla voidaan määrittää dokumentille perus-uri vastaa HTML:n base-elementtiä kaikki suhteelliset viittaukset dokumentista alkavat perus-uri:sta absoluuttiset viittaukset toimivat kuten ennenkin XML Base määrittää yhden attribuutin xml:base, joka voidaan sijoittaa XML-dokumenttiin perus-uri:n määrittämiseksi <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head>... </head> </doc> www.hohde.com Hohde Consulting 2004 31 XPointer

XPointer XPointer on linkitykseen liittyvä tapa viitata XMLdokumentin sisällä oleviin elementteihin tai muihin solmuihin vastaa eräällä tavalla HTML:n #anchor linkitystä Viittaukset voidaan tehdä muun muassa elementtien järjestyksen tai nimiavaruuksien perusteella myös XPath on mahdollinen vaihtoehto www.hohde.com Hohde Consulting 2004 33 Skeemat XPointer-viittaukset perustuvat skeemoihin xpointer() skeema mahdollistaa XPath-lausekkeiden suorittamisen XPointerviittauksena määrittää joukon omia funktioita element() skeema elementteihin viitataan järjestysnumerolla viittaus aloitetaan joko juurielementistä tai id-attribuutin perusteella esimerkiksi: element(intro) element(/1/3/5) element(intro/2) www.hohde.com Hohde Consulting 2004 34

Kysymyksiä? Kommentteja?