Technolgie XML XPath XML Path Language September 2011
Technológie XML XPath (XML Path Language) September, 2011 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 1
Vznik XPath • Je to „pomocná“ technológia • cieľom bola podpora technológií XSLT, XPointer, XQuery • Poskytuje funkčnosť, zdieľanú podporovanými technológiami • Umožňuje: • adresovanie v rámci XML dokumentu • prostriedky pre manipuláciu s reťazcami, číslami a booleovskými hodnotami Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 2
Vlastnosti XPath • Kompaktná syntax (nie je XML aplikáciou) • je vyžadované jeho použitím (napr. v hodnotách atribútov) • Pracuje na logickej (hierarchickej) štruktúre XML dokumentu • Jeho aplikácia má charakter výrazu, výsledkom vyhodnotenia ktorého je • množina uzlov vyhovujúca výrazu • booleovská hodnota reprezentujúca platnosť výrazu • hodnota reprezentujúca hodnotu výrazu v kontexte dokumentu Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 3
Stav XPath • Spravovaný W 3 C (http: //www. w 3. org) • XML Path Language 1. 0 (štandard) • W 3 C working draft – júl 1999 • W 3 C recommendation – november 1999 • XML Path Language 2. 0 (štandard v 2. edícii) • W 3 C working draft – júl 2004 • W 3 C recommendation – január 2007 • W 3 C recommendation – 2. edícia – december 2010 • XML Path Language 3. 0 • W 3 C working draft – jún 2011 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 4
Knižnica – značkovaný dokument <kniznica>. . . <kniha typ="rozpravka" jazyk="slovensky" kolekcia="ano"> <autor>Pavol Dobšinský</autor> <nazov>Slovenské rozprávky</nazov> <rok>1994</rok> <obsah> <cast>Slncový kôň</cast> <cast>O dvanástich mesiačikoch</cast>. . . </obsah> </kniha>. . . </kniznica> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 5
/ Knižnica – logická štruktúra kniznica. . . typ . . . kniha kolekcia jazyk obsah autor nazov rok cast text text Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach . . . 6
XPath výraz • Výraz má tvar //ucitel/uvazok[@forma="prednaska"]/parent: : */meno • cesta v logickej štruktúre dokumentu • obohatená o podmienky, logické spojky, volanie funkcií a zmeny smeru • Kombinovaný výraz: výraz | výraz • Vyhodnotenie sa realizuje v určitom kontexte, ktorým môže byť • koreň dokumentu reprezentujúci celý dokument • nejaký uzol logickej štruktúry dokumentu (aktuálny uzol) • výraz začína znakom "/" (koreň) alebo iným znakom (aktuálny uzol) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 7
/ Adresovanie elementov • kniha kniznica • /kniha. . . • /kniznica . . . kniha • //kniha/obsah/cast • //kniha/*/cast • //obsah/* obsah • * • //* autor nazov rok cast text text Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach . . . 8
Adresovanie atribútov • @jazyk • @* / • /kniznica/@* • //kniha/@kolekcia kniznica • //kniha/@* • //*/@jazyk typ jazyk . . . kniha kolekcia Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 9
/ Adresovanie textu • //kniha/text() kniznica • //kniha/nazov/text(). . . • //kniha/text() . . . kniha text autor text obsah nazov rok cast text . . . text Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 10
/ Podmienky – výskyt a hodnota • //*[@jazyk] kniznica • //*[@*] • //kniha[@jazyk="slovensky"] . . . kniha • //kniha[rok="2010"]/nazov • //kniha[@jazyk="slovensky" and rok="2010"] • //kniha[not(rok="2010")] • //kniha[rok>"2000"] jazyk obsah rok cast text Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach . . . 11
/ Podmienky – pozícia • //kniha//cast[1] kniznica • //kniha//cast[last()] • //kniha//cast[position() > 2] . . . kniha • //kniha/@*[2] • //kniha[rok="2011"][1] • //kniha[1][rok="2011"] obsah typ jazyk kolekcia rok cast text Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach . . . cast text 12
Podmienky – funkcie • • //kniha[@typ="rozpravka"]//cast/text()[starts-with(. , "O dvanástich")] //kniha[@typ="rozpravka"]//text()[starts-with(. , "O dvanástich")] //kniha/obsah/cast[position() = floor(last() div 2 + 0. 5)] / //kniha/autor[contains(text(), "Pavol"] kniznica //kniha/autor/text()[contains(. , "Pavol"] //kniha[count(obsah/cast) > 10] kniha. . . //*[string-length(name()) > 5] //*[starts-with(name(), "kni"] obsah typ • autor nazov cast text . . . Referencia: http: //www. w 3 schools. com/xpath_functions. asp Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 13
/ Smery pohybu • /child: : kniznica/child: : kniha kniznica • /kniznica/kniha. . . • /descendant: : kniha/autor kniha • //kniha/autor • //autor[contains(text(), "Dobšinský"] /parent: : */@jazyk • //autor[contains(text(), "Dobšinský"] /. . /@jazyk/text() • //cast[contains(text(), "O dvanástich"]/preceding-sibling: : cast • //cast[contains(text(), "O dvanástich"]/ancestor: : */autor jazyk obsah text cast text Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach . . . 14
- Slides: 14