You are on page 1of 5

13.7.2020 Kursuse info – metshein.

com

 XML  XPATH KOOLITAJA


  30 MINUTES MARIO METSHEIN

05 XML ja XPath (Ülesanne 4)

XPath
XPath on W3C standard, mis määrab ära kuidas saab kätte andmeid XML failist. Nagu nimigi viitab, on see
päringukeel mis määrab ära raja vajalike andmeteni (elemendid ja nende väärtused, alampuud või
atribuudid). Seda kasutavad ka näiteks XSLT ja XQuery. Kuidas see töötab, on hea võimalus näidata seda
HTML dokumendi stuktuuri peal.

Näiteks kui sooviksid juhatada “title” elemendini, siis oleks rada järgmine: /html/head/title . Kui pöörduda
näiteks “p” elementide poole, siis tekiks küsimus kas kõik või üks nendest. Näiteks esimene – sel juhul
kirjutaks selle nii /head/body/p[1]. Ja lihtsustatult nii ongi. Ja need kes on kunagi kokku puutunud näiteks
erinevate Linuxi käsuridadega, siis on see midagi sarnast.

XPath paigaldamine Eclipse IDE’s


XPath kasutamiseks on võimalikud erinevad veebitööriistad. Lisa Google otsingusse “xpath tester” ja enamus
neist peaks kenasti töötama. Kui oled Eclipse IDE kasutaja, siis vali menüüst Help>Eclipse Marketplace…
Lisa otsingusse xpath ja paigalda “Eclipse XPath evaluation plugin”.

https://www.metshein.com/kursus/# 1/5
13.7.2020 Kursuse info – metshein.com

Kui oled sellega hakkama saanud, siis vali Window>Show View>Other>XPath. Pärast OK vajutamist
kuvatakse see alumisel paneelil

Töötamine XPath’iga
Kui oled XPath paneeli Eclipses tööle saanud, siis sisestatud rajad töötavad hetkel avatud failiga. Kasutame
harjutamiseks sama faili, mida eelmises peatükis (kliendid.xml). Avaldisi on kahte liiki:

path – teeavaldised, mis määravad raja mingi elemendini


https://www.metshein.com/kursus/# 2/5
13.7.2020 Kursuse info – metshein.com
path teeavaldised, mis määravad raja mingi elemendini
predicates – predikaadid, mis kontrollivad leitud dokumendi osade vastavust mingile tingimusele

XPath teeavaldised
Elementide selekteerimiseks kasutatakse kaldkriipsu “/”. Näiteks rada /kliendid/klient/email kuvab iga kliendi
emaili.

Elemendi väärtuste kuvamiseks kasutame funktsiooni text()

/kliendid/klient/email/text()

Ühe kaldkriipsu kasutamine määrab täpse teekonna. Võimalus on kasutada ka kahte kaldkriipsu “//”, mis
leiab kõik tingimusele vastavad elemendid. Ja seda sõltumata, kes kelle alamelement on. Näiteks: //email.
Selle puuduseks on mahukad dokumendid, mis muudavad tulemuse aeglaseks.

Selekteerimise rada saab täiendada atribuudi valikuga. Näiteks kui kasutaja emailil oleks parameeter

<klient>
<id>2</id>
<eesnimi>Jeanette</eesnimi>
<perenimi>Proven</perenimi>
<email liik="too">jproven1@epa.gov</email>
<email liik="kodu">jproven1@hot.com</email>
<sugu>Female</sugu>
<arveldusarve>FR23 3718 4443 61IX S4RU 0U5M I62</arveldusarve>
https://www.metshein.com/kursus/# 3/5
13.7.2020 Kursuse info – metshein.com
<arveldusarve>FR23 3718 4443 61IX S4RU 0U5M I62</arveldusarve>
</klient>

Sel juhul tuleks kasutada @-süntaksit.

/kliendid/klient/email/@liik

XPath predikaadid
Predikaatavaldiste kaudu saame kitsendada otsingutulemusi. Avaldised tuleb lisada kandiliste sulgude
vahele ning neis on võimalik kasutada programmeerimiskeeltest tuttavaid operaatoreid ja funktsioone.

Näiteks soovime esimest klienti, siis kasutame avaldist, kus nurgeliste sulgude sees on arv 1:

/kliendid/klient[1]

Lisades mistahes numbri, saame vastava järjekorranumbriga elemendi. Viimase elemendi saamiseks, kasuta
näiteks funktsiooni last() :

/kliendid/klient[last()]

Eelviimase jaoks kasutame last()-1 jne.

/kliendid/klient[last()-1]

Või leiame kõik emailid, millel on atribuut “liik”

/kliendid/klient/email[@liik]

Kui soovid kindla väärtusega atribuuti, siis pane kirja nii:

/kliendid/klient/email[@liik=”too”]

Ja kui aritmeetilisi võrdlusi edasi kasutada, siis saame leida elemente vastavalt tingimusele. Näiteks leiame
mingi id järgi elemendid

/kliendid/klient[id=123]/email

… või kogu element

/kliendid/klient[id=123]

Ülesanne 4
https://www.metshein.com/kursus/# 4/5
13.7.2020 Kursuse info – metshein.com

Loo uus teksti fail ja pane kirja loodud päringud ehk kuidas vastused leidsid. Töötamiseks lae alla users.xml

Leia kõik eesnimed


Kuva kõik kasutajad kelle sugu on naine (Female)
Kuva kõik meeste emailid
Kuva kõik kasutajad, kes on pärit Eestist ja on mehed
Kuva nimekirja kõige viimasem nimi

https://www.metshein.com/kursus/# 5/5

You might also like