33
Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wyklad 03 T. Roma´ nczukiewicz Jagiellonian University 2009/2010 T. Roma´ nczukiewicz XML 03

Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

Plan

Przetwarzanie dokumentów XMLi zaawansowane techniki WWW

Wykład 03

T. Romanczukiewicz

Jagiellonian University

2009/2010

T. Romanczukiewicz XML 03

Page 2: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

Plan

Plan

1 XPath

2 XQuery

3 Podsumowanie

T. Romanczukiewicz XML 03

Page 3: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Plan

1 XPathWstepWezły, wyrazenie i typyDziałania i instrukcjeOsie

2 XQuery

3 Podsumowanie

T. Romanczukiewicz XML 03

Page 4: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

XPath

XPath

XPath (ang. XML Path Language, w wolnym tłumaczeniu Jezyk Sciezek XML, JezykSciezek Rozszerzalnego Jezyka Znaczników) – jezyk słuzacy do adresowania czescidokumentu XML.XPath został oryginalnie zaprojektowany dla XSLT i XPointer, ale znajdujezastosowanie takze w DOM oraz jezykach bazujacych na XML, np. XQuery, XUL.

XPath pozwala na definiowanie czesci dokumentu XML

XPath pozwala na nawigowanie w dokumencie XML tak jak nawiguje sie wstrukturze katalogów

XPath zawiera biblioteke standardowych funkcji

XPath jest głównym elementem XSLT

XPath jest rekomendowane przez W3C

T. Romanczukiewicz XML 03

Page 5: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Wyrazenia Wyrazenia słuza do wybierania wezłów i zbiorów w dokumentachXML. Wyrazenia sa bardzo podobne do wyrazen stosowanych w tradycyjnychsystemach komputerowych/Catalog/Artist/Album, /Catalog/Artist[2]/Album

XPath zawiera około 100 wbudowanych funkcji. Pozwalaja one na operacje naciagach znakowych, wartosciach liczbowych, obsługuja czas i daty, typy Boolenitp.fn:day-from-dateTime(datetime), fn:upper-case(string), fn:ceiling(num), fn:true

()

Bez znajomosci XPath trudno byłoby tworzyc dokumenty XSLT

T. Romanczukiewicz XML 03

Page 6: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Przykład

Listing 1: Przykład1.js (uproszczony)

1 function loadXMLDoc(dname)2 {3 xhttp=new XMLHttpRequest();4 xhttp.open("GET",dname,false);5 xhttp.send("");6 return xhttp.responseXML;7 }8 ...9 xml=loadXMLDoc("Catalog.xml");

10 path="/Catalog/Artist/Album"1112 var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);13 var result=nodes.iterateNext();1415 while (result)16 {17 document.write(result.childNodes[0].nodeValue);18 document.write("<br />");19 result=nodes.iterateNext();20 }

T. Romanczukiewicz XML 03

Page 7: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Dokument jako drzewo.

Uwzglednianie przestrzeni nazw.

Mozliwosc uwzgledniania schematu (w wersji 2.0).

Rozwiniete sekcje CDATA oraz referencje do encji i znaków.

Brak sasiadujacych wezłów tekstowych.

Atrybut nie jest dzieckiem elementu.

Korzen lub inaczej wezeł jest osobnym wezłem, róznym od elementu głównego.

T. Romanczukiewicz XML 03

Page 8: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Rodzaje wezłów:

wezeł dokumentu (korzen),

element

atrybut,

wezeł tekstowy,

instrukcja przetwarzania,

komentarz,

wezeł przestrzeni nazw.

brak sekcji CDATA,

brak encji i referencji do encji.

Elementy:

wezły

wartosci atomowe

T. Romanczukiewicz XML 03

Page 9: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Podstawowe wyrazenia

nodename Wybiera wszystkie dzieci wezła o podanej nazwie - sciezka wzgledna

/ Wybiera korzen - sciezka bezwzgledna

// Wybiera wezły w dokumencie, nie wazne gdzie sie one znajduja

. Wybiera aktualny wezeł

.. Wybiera wezeł rodzica

@ Wybiera atrybuty

Przykłady:

bookstore Wybiera wszystkie wezły w elemencie bookstore

/bookstore Wybiera główny element bookstore Jesli sciezka zaczyna sie odukosnika (/) to zawsze musi reprezentowac element główny

bookstore/book Wybiera wszystkie elementy book, które sa dziecmi bookstore

//book Wybiera wszelkie elementy o nazwie book bez wzgledu na to gdzie sieznajduja

bookstore//book Wybiera wszelkie elementy o nazwie book bez wzgledu na to gdziesie znajduja o ile sa one umieszczone w elemencie bookstore

//@lang Wybiera wszystkie atrybuty lang

T. Romanczukiewicz XML 03

Page 10: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Podstawowe wyrazenia

nodename Wybiera wszystkie dzieci wezła o podanej nazwie - sciezka wzgledna

/ Wybiera korzen - sciezka bezwzgledna

// Wybiera wezły w dokumencie, nie wazne gdzie sie one znajduja

. Wybiera aktualny wezeł

.. Wybiera wezeł rodzica

@ Wybiera atrybuty

Przykłady:

bookstore Wybiera wszystkie wezły w elemencie bookstore

/bookstore Wybiera główny element bookstore Jesli sciezka zaczyna sie odukosnika (/) to zawsze musi reprezentowac element główny

bookstore/book Wybiera wszystkie elementy book, które sa dziecmi bookstore

//book Wybiera wszelkie elementy o nazwie book bez wzgledu na to gdzie sieznajduja

bookstore//book Wybiera wszelkie elementy o nazwie book bez wzgledu na to gdziesie znajduja o ile sa one umieszczone w elemencie bookstore

//@lang Wybiera wszystkie atrybuty lang

T. Romanczukiewicz XML 03

Page 11: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

/bookstore/book[1] Wybiera pierwszy element book, który jest dzieckiem elementugłównego bookstore

Uwaga na IE5!

/bookstore/book[last()] Wybiera ostatni element book, który jest dzieckiemelementu głównego bookstore

/bookstore/book[last()-1] Element przedostatni

/bookstore/book[position()<3] Pierwsze dwa elementy

//title[@lang] Wybiera wszelkie elementy title, które posiadaja element onazwie lang

//title[@lang=’eng’] Wybiera wszelkie elementy title, które posiadaja element onazwie lang, którego wartoscia jest ’eng’

/bookstore/book[price>35.00] Wybiera elementy book, które posiadaja elementprice o wartosci wiekszej niz 35.00

/bookstore/book[price>35.00]/title Wybiera elementy title sposród tychelementów /bookstore/book, które posiadaja element price o wartosci wiekszej niz35.00

Wieloznaczniki (wildcards)Path Expression Result

* Znaczy kazdy element

@* Kazdy atrybut

node() Kazdy rodzaj wezła

T. Romanczukiewicz XML 03

Page 12: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

/bookstore/* Wszystkie podelementy bookstore

//* Wszystkie elementy dokumentu

//title[@*] Wszystkie elemety title, które posiadaja jakikolwiek argument

Wybór kilku sciezek na raz poprzez uzycie operatora |

//book/title |//book/price Wybiera elementy title i price

//title |//price Wybiera elementy title i price z całego dokumentu

/bookstore/book/title |//price ...

T. Romanczukiewicz XML 03

Page 13: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Typy

Typy pierwotne XML Schema. Dodatkowo:xs:untyped xs:untypedAtomic xs:anyAtomicType xs:dayTimeDurationxs:yearMonthDuration

Mozliwosc uzywania typów zdefiniowanych w schemacie (prostych i złozonych), atakze innych typów wyprowadzonych (nie zawsze dostepne)

Sekwencje

Wartosci w XPath 2.0 – sekwencje.Elementy (items) sekwencji:

wezły (z drzew dokumentów)wartosci atomowe

Element równowazny jest jednoelementowej sekwencji "Hello"⇔ ("Hello")

Zagniezdzone sekwencje sa spłaszczane - zamieniane w jedna sekwencje(("Hello", 2), 5, (3.14, 2.78))=("Hello", 2, 5, 3.14, 2.78)

T. Romanczukiewicz XML 03

Page 14: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Effective Boolean Value

Zamiana sekwencji na wartosc logiczna (np w C: jesli int był równy 0 to fałsz pozostałewartosci prawda)

EBV

Pusta sekwencja fałsz

sekwencja z wezłem na pierwszej pozycji prawda

pojedyncza wartosc boolowska wartosc

pojedynczy pusty napis fałsz

pojedynczy niepusty napis prawda

pojedyncza liczba równa 0 lub NaN fałsz

inna pojedyncza liczba prawda

inna wartosc bład typu

T. Romanczukiewicz XML 03

Page 15: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Atomizacja

Atomizacja - operacja majaca na celu zastapienie dowolnej sekwencja jako sekwencjiwartosci prostych (nie zawsze wykonalna)

Atomizacja

wartosc atomowa ta wartosc

wezeł o (znanym) typie atomowym wartosc wezła

wezeł typu lista sekwencja elementów listy

wezeł nieznanego typu prostego, z mie-szana zawartoscia lub typuxs:untypedAtomic lubxs:anySimpleType zawartosc tekstowa jako jeden atom

element o zawartosci elementowej bład typu

T. Romanczukiewicz XML 03

Page 16: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Zmienne

Zmienne w XPath

Napisy: "Hello world", "12.3", ’1726.2376’

Liczby: 3.1415, 137.23

Odwołania do zmiennych: $x, $napis

Konstrukcje, które wprowadzaja zmienne np. for, some, every

Rzutowanie typów

xs:date("2001-08-25") - typy np. z XSL

xs:float("NaN")

adresy:kod-pocztowy("48-200") (o ile schemat dostepny)

string(//obiekt[4])

Operator cast as: "2001-08-25"cast as xs:date

T. Romanczukiewicz XML 03

Page 17: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Operatory

Operatory

Arytmetyka: + - *div idiv mod

na datach i duration: + i - zgodnie z typami.

Sekwencje wezłów (w 1.0 „zbiory wezłów”): union |intersect except

nie-wezły w sekwencjach – bład typu,wynik: sekwencja bez powtórzen, porzadek dokumentu

Porównania atomowe (XPath 2.0):

eq ne lt le gt ge

argumenty poddawane sa atomizacji

jesli którys z argumentów jest sekwencja pusta to wynik tez jest sekwencja pusta

typy atomowe – intuicyjnie „normalne” porównanie,

jesli sekwencje wielo-elementowe to bład

T. Romanczukiewicz XML 03

Page 18: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Porównania ogólne

Porównania ogólne

Porównanie odpowiednich elementów sekcji:= !=< <=> >= prawda jesli istnieje taka para z sekwencji prawej i lewej, ze relacja jest dlanich spełniona!

Przykłady

(1,2) = (1,2) = true

(1,2) = (2,3) = true

(1,2) != (1,2) = true

() != () = false

() = () = false

wnioski:

Równosc nie jest przechodnia

Nierównosc nie jest zaprzeczeniem równosci

T. Romanczukiewicz XML 03

Page 19: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Instrukcje warunkowe

W XPath 2.0 mozna uzywac takze instrukcji sterujacych takich jak instrukcjewarunkowe:

if

1 if WARUNEK2 then WYNIK13 else WYNIK2

Warunek jest spełniony jesli Effective Boolean Value ma wartosc trueObliczana jest tylko jedna gałaz

Przykład

1 if informacje/cena2 then3 if informacje/cena >= 10004 then ’Przesylka wartosciowa’5 else ’Przesylka zwykla’6 else ’Brak danych’

T. Romanczukiewicz XML 03

Page 20: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Petla po sekwencji

1 for $ZMIENNA in SEKWENCJA2 return WYNIK

Zmiennej ZMIENNA przypisywane kolejne wartosci z SEKWENCJI,WYNIK obliczany jest na podstawie wartosci ZMIENNEJ,Wynik jest sekwencja wyników na poszczególnych wartosciachPrzykłady

1 for $i in (1 to 10)2 return $i * $i3 for $o in //obiekt4 return concat(’Nazwa obiektu:’, $o/@nazwa)

T. Romanczukiewicz XML 03

Page 21: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Kwalifikatory

W XPath 2.0 mozna uzywac równiez kwalifikatorów every (∀) i some (∃)

1 some $ZMIENNA in SEKWENCJA2 satisfies WYNIK34 every $ZMIENNA in SEKWENCJA5 satisfies WYNIK

Sprawdzany jest warunek Effective Boolean ValueKolejnosc przechodzenie po sekwencji jest dowolnaPrzykłady

1 some $i in (1 to 10) satisfies $i > 72 every $o in //obiekt satisfies $o/@nazwa

T. Romanczukiewicz XML 03

Page 22: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Osie XPath

Sciezki moga byc bezwzgledne:/krok1/krok2/ lub wzgledne krk1/krok2.Ogólnie mozna kroki definiowac przy uzyciu osi czyli kierunków w drzewiedokumentu: os::test-wezlow [predykat1][predykat2]...

os – kierunek w drzewie dokumentu,test-wezłów – wybór wezłów po rodzaju, typie, nazwie,predykat – opcjonalny dodatkowy filtr

Przykład:/descendant::dzial[attribute::id =’ksi’]/child::pracownik[1]/child::text()

T. Romanczukiewicz XML 03

Page 23: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

child

descendant

parent

ancestor

following-sibling

preceding-sibling

following

preceding

attribute

namespace

self

descendand-or-self

ancestor-or-self

T. Romanczukiewicz XML 03

Page 24: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Testy wezłów i Predykaty

Testy wezłów

moga wybierac wezły ze wzgledu na ich rodzaj, poprzez odpowiednie funckje:node(), text(), comment(), element(), attribute()

lub poprzez nazwe wezła: Album, Artist/*, Artist/*/Year

Predykaty [...]

Obliczane sa dla kazdego wezła

Kazdy predykat filtruje sekwencje

mozna uzywac poza sciezkami:

1 /child::osoby/child::osoba[child::imie = ’Tomasz’]2 child::osoba[child::imie = ’Tomasz’]/child::nazwisko3 //obiekt[attribute::nazwa][3]4 (1 to 10)[. mod 2 = 0]

T. Romanczukiewicz XML 03

Page 25: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie Wstep Wezły... Działania i instrukcje Osie

Skróty

Niektóre wyrazenia mozna skrócic:

os child mozna pominac

zamiast attribute mozna uzyc po prostu @

. zamiast self::node().

.. zamiast parent::node().

// zamiast /descendant-or-self::node()/.

Sciezki obliczane sa

od lewej do prawej

dla kazdego wezła z biezacej sekwencji kolejny krok wraz z predykatami

po kazdym predykacie cała sekwencja przekazywana jest do kolejnego predykatu

T. Romanczukiewicz XML 03

Page 26: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

Plan

1 XPath

2 XQuery

3 Podsumowanie

T. Romanczukiewicz XML 03

Page 27: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

Jezyk XQuery

Jezyk zapytan podobny do SQL, ale zamiast bazy korzysta z XML.

Zbudowany na podstawie XPath.

Wyciaganie danych z XML

Sortowanie, grupowanie, ...

Zapis wyniku jak w XSLT (XML / HTML / tekst).

Konstruowanie nowych wezłów.

Definiowanie własnych funkcji.

T. Romanczukiewicz XML 03

Page 28: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

Zastosowania

Wyciaganie danych z XML do uzytku w serwisach WWW

Do generowania raportów

Transformowanie danych z XML do XHTML

Przeszukiwanie dokumentów sieciowych

Podstawowe mozliwosci

Otwieranie pliku doc("books.xml")

Mozna poruszac sie po pliku xml jak w przypadku XPathdoc("books.xml")/bookstore/book[price<30]

T. Romanczukiewicz XML 03

Page 29: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

FLWOR

FLWOR

Skrót od "For, Let, Where, Order by, Return".

1 for $x in doc("books.xml")/bookstore/book2 where $x/price>303 order by $x/title4 return $x/title

for wybiera wszystkie elementy i wynik zapisuje w zmiennej $x

where wybiera te elementy sposród $x, które posiadaja element price o wartosciwiekszej niz 30

order okresla sortowanie wyniku

return Okresla co tak naprawde zostanie zwrócone

let uzyte zamiast for wybiera wszystkie elementy, ale w wyniku nic wiecej sie niepowtarza

T. Romanczukiewicz XML 03

Page 30: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

for vs let

1 for $x in (1 to 3)2 return <test>{$x}</test>34 <test>1</test>5 <test>2</test>6 <test>3</test>

1 let $x in (1 to 3)2 return <test>{$x}</test>34 <test>1 2 3</test>

T. Romanczukiewicz XML 03

Page 31: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

Funkcje

1 declare function prefix:function_name($parameter AS datatype)2 AS returnDatatype3 {4 ...function code here...5 }67 ...89 <name>{uppercase($booktitle)}</name>

10 doc("books.xml")/bookstore/book[substring(title,1,5)=’Harry’]11 let $name := (substring($booktitle,1,4))

T. Romanczukiewicz XML 03

Page 32: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

Plan

1 XPath

2 XQuery

3 Podsumowanie

T. Romanczukiewicz XML 03

Page 33: Przetwarzanie dokumentów XML i zaawansowane techniki WWW ...th.if.uj.edu.pl/~trom/XML/xml_03.pdf · Rozwiniete˛ sekcje CDATA oraz referencje do encji i znaków. Brak sasiaduj˛

XPath XQuery Podsumowanie

XPath jest to jezyk, który

Pozwala na posługiwanie sie dokumentem XML jak drzewem katalogowym

Posiada mozliwosc korzystania ze zmiennych, atomizacji, obliczen, sekwencji,kwalifikatorów, funkcji

Posiada mozliwosc definiowania osi, testów i predykatów

Jest uzywany w innych zastosowaniach XQuery, XSLT, DOM ...

XQuery jest to jezyk, który

Jest rozszerzeniem XPath

Posiada zapytania "bazodanowe", podobnie jak SQL

Mozna definiowac dodatkowo funkcje

T. Romanczukiewicz XML 03