XML Path Language (XPath) - Przedmiot: XML i jego zastosowania

Transkrypt

XML Path Language (XPath) - Przedmiot: XML i jego zastosowania
XML Path Language (XPath)
XML Path Language (XPath)
Plan prezentacji
XML Path Language (XPath)
Wstęp
Przedmiot: XML i jego zastosowania
Operatory i funkcje
Dr inż. Stanisław Polak
Akademia Górniczo - Hutnicza w Krakowie, Katedra Informatyki
Przykłady
http://www.icsr.agh.edu.pl/~polak/
XPath 2.0
XPath 3.0
Dr inż. Stanisław Polak
1
Wstęp
Przedmiot: XML i jego zastosowania
XML Path Language (XPath)
Ogólna charakterystyka XPath 1.0
I
I
I
I
I
I
I
I
I
I
I
I
I
Korzeń
Element
Tekst
Atrybut
Przestrzeń nazw
Instrukcja przetwarzania
Komentarz
Zbiór węzłów (ang. node-set)
Wartość logiczna
Liczba
Napis (unicode)
XML Path Language (XPath)
Kontekst
I
Bieżący węzeł kontekstu
I
Para liczb naturalnych (pozycja węzła kontekstowego, liczebność zbioru
węzłów)
I
Zestaw powiązań zmiennych
I
Biblioteka funkcji
I
Zestaw deklaracji przestrzeni nazw
oś::test-węzła[[predykat]*]
Funkcje
Dr inż. Stanisław Polak
Wstęp
Przedmiot: XML i jego zastosowania
Składnia
[/]krok[/krok]*
Wartości wyrażeń:
I
2
Wyrażenie ścieżkowe
Specyfikacja wyrażeń służących do wyszukiwania i pobierania informacji
zawartej w dokumentach XML
Dokument XML — drzewo wezłów typu:
I
Dr inż. Stanisław Polak
3
Przedmiot: XML i jego zastosowania
Dr inż. Stanisław Polak
4
Przedmiot: XML i jego zastosowania
Wstęp
XML Path Language (XPath)
Osie
Wstęp
XML Path Language (XPath)
Testy węzła
I
self
I
ancestor
I
ancestor-or-self
I
Nazwa elementu
I
attribute
I
*
I
child
I
node()
I
descendant
I
text()
I
descendant-or-self
I
comment()
I
following
I
processing-instruction([nazwa])
I
following-sibling
I
parent
I
preceding
I
preceding-sibling
Źródło:
http://nwalsh.com/docs/tutorials/xsl/xsl/foil22.html
Dr inż. Stanisław Polak
5
Wstęp
Przedmiot: XML i jego zastosowania
XML Path Language (XPath)
Składnia skrócona
6
Operatory i funkcje
Przedmiot: XML i jego zastosowania
XML Path Language (XPath)
Operatory
Skrót
element
*
@
.
..
//
Dr inż. Stanisław Polak
Dr inż. Stanisław Polak
Złączenia
I |
Arytmetyczne
I +
I I *
I div
I mod
Porównania
I =
I !=
I < lub &lt;
I > lub &gt;
I <= lub &lt;=
I >= lub &gt;=
Logiczne
I or
I and
Znaczenie
child::element
child::*
attribute::
self::node()
parent::node()
/descendant-or-self::node()/
7
Przedmiot: XML i jego zastosowania
Dr inż. Stanisław Polak
8
Przedmiot: XML i jego zastosowania
Operatory i funkcje
XML Path Language (XPath)
Funkcje do obsługi zbioru węzłów
I
nr=count(zbiór)
I
węzeł=id(wartość)
I
nr=last()
I
str=local-name(węzeł)
I
str=name(węzeł)
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<CCC>
<DDD>
<BBB/>
<CCC/>
</DDD>
</CCC>
</AAA>
Dokument XML
uri=namespace-uri(węzeł)
I
nr=position()
XML Path Language (XPath)
Funkcje znakowe
1
2
3
4
5
6
7
8
9
10
11
12
I
Operatory i funkcje
1
2
3
4
5
6
7
count ( BBB ) −→ 0
count ( / / BBB ) −→ 4
// BBB [ last ( ) ] −→ wybierze ostatni
element ’ BBB ’
name ( / / BBB ) −→ ’ BBB ’
local−name ( / / BBB ) −→ pusta warto ś ć
namespace−uri ( / / BBB ) −→ pusta warto ś ć
// BBB [ position ( )<=3] −→ w y b i e r z e 3
p i e r w s z e e l e m e n t y ’ BBB ’
I
str=concat(wart1, wart2, ...)
I
bool=contains(wart,substr)
I
str=normalize-space(str)
I
bool=starts-with(str,substr)
I
string(wartość)
I
nr=string-length(str)
I
str=substring(str,start,dł)
I
str=substring-after(str,substr)
I
str=substring-before(str,substr)
I
str=translate(wartość,str1,str2)
1
2
3
4
5
6
7
8
9
10
concat ( ’ XPath ’ , ’ is ’ , ’ FUN ’ ) −→ ’ XPath is FUN ’
contains ( ’ XML ’ , ’ XM ’ ) −→ true
normalize−space ( ’ The
XML ’ ) −→ ’ The XML ’
starts−with ( ’ XML ’ , ’X ’ ) −→ true
string ( 3 1 4 ) −→ ’ 314 ’
string−length ( ’ Beatles ’ ) −→ 7
substring ( ’ Beatles ’ , 1 , 4 ) −→ ’ Beat ’
substring−after ( ’ 12/10 ’ , ’/ ’ )
−→ ’ 10 ’
substring−before ( ’ 12/10 ’ , ’/ ’ ) −→ ’ 12 ’
translate ( ’ 12 :30 ’ , ’ 0123 ’ , ’ abcd ’ ) −→ ’ bc:da ’
Przykłady
Przykłady
Dr inż. Stanisław Polak
9
Przedmiot: XML i jego zastosowania
Operatory i funkcje
XML Path Language (XPath)
Funkcje liczbowe
I
I
I
I
I
Dr inż. Stanisław Polak
10
Przedmiot: XML i jego zastosowania
Operatory i funkcje
XML Path Language (XPath)
Funkcje logiczne
1
2
3
4
nr=ceiling(nr)
<AAA>
<BBB>2</BBB>
<BBB>1</BBB>
</AAA>
1
Dokument XML
nr=floor(nr)
nr=number(wartość)
1
2
3
4
5
int=round(liczba)
nr=sum(zbiór)
ceiling ( 3 . 1 4 ) −→ 4
floor ( 3 . 1 4 ) −→ 3
number ( ’ 100 ’ ) −→ 100
round ( 3 . 1 4 ) −→ 3
sum ( / / BBB ) −→ 3
I
bool=boolean(wartość)
I
false()
I
bool=lang(język)
I
bool=not(wyrażenie)
I
true()
<p xml:lang=" en "> . . .</p>
Dokument XML
1
2
3
4
5
6
boolean ( 1 ) −→ true
false ( ) −→ false
lang ( " en " ) −→ true
lang ( " pl " ) −→ false
not ( true ( ) ) −→ false
true ( ) −→ true
Przykłady
Przykłady
Dr inż. Stanisław Polak
11
Przedmiot: XML i jego zastosowania
Dr inż. Stanisław Polak
12
Przedmiot: XML i jego zastosowania
Przykłady
XML Path Language (XPath)
Wybieranie elementów przez /
<AAA>
<BBB>
<CCC/>
<DDD/>
</BBB>
<XXX>
<DDD>
<EEE/>
<DDD/>
<CCC/>
<FFF/>
<FFF>
<GGG/>
</FFF>
</DDD>
</XXX>
<CCC>
<DDD/>
</CCC>
</AAA>
13
/*/*/DDD
Dr inż. Stanisław Polak
//BBB
I
//CCC/DDD
Dr inż. Stanisław Polak
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<CCC>
<DDD>
<BBB/>
<CCC/>
</DDD>
</CCC>
</AAA>
14
Przedmiot: XML i jego zastosowania
Przykłady
XML Path Language (XPath)
Wybieranie elementów w oparciu o predykaty
1
2
3
4
5
6
7
8
9
10
11
12
Wyrażenia ścieżkowe
I
I
XML Path Language (XPath)
Wybieranie elementów przez *
/AAA/CCC/DDD/*
1
2
3
4
5
6
7
8
9
10
11
12
Wyrażenia ścieżkowe
Przedmiot: XML i jego zastosowania
Przykłady
I
XML Path Language (XPath)
Wybieranie elementów przez //
1
2
3
4
5
6
Wyrażenia ścieżkowe
7
8
I /AAA
9
10
I /AAA/BBB
11
12
I
13
/AAA/XXX/preceding-sibling::* 14
15
16
17
18
19
20
Dr inż. Stanisław Polak
Przykłady
15
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<CCC>
<DDD>
<BBB/>
<CCC/>
</DDD>
</CCC>
</AAA>
1
2
3
4
5
6
7
8
9
10
11
12
Wyrażenia ścieżkowe
Przedmiot: XML i jego zastosowania
I
/AAA/BBB[1]
I
/AAA/BBB[last()]
Dr inż. Stanisław Polak
16
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<CCC>
<DDD>
<BBB/>
<CCC/>
</DDD>
</CCC>
</AAA>
Przedmiot: XML i jego zastosowania
Przykłady
XML Path Language (XPath)
Wybieranie atrybutów przez @
Przykłady
XML Path Language (XPath)
Użycie operatora złączenia
Wyrażenia ścieżkowe
I
//@id
I
//BBB[@id]
I
//BBB[not(@*)]
I
//BBB[@id=’1’]
I
//BBB[@name=’bbb’]
I
//BBB[normalize-space(@name)=’bbb’]
1
2
3
4
5
6
7
Dr inż. Stanisław Polak
<AAA>
<BBB id=" 1 " />
<BBB id=" 2 " />
<BBB name=" bbb " />
<BBB name=" bbb " />
<BBB/>
</AAA>
17
Przedmiot: XML i jego zastosowania
Przykłady
I
//BBB|//CCC
Dr inż. Stanisław Polak
XML Path Language (XPath)
Wybieranie elementów w oparciu o liczbę dzieci
1
2
3
4
Wyrażenie ścieżkowe
18
Wyrażenia ścieżkowe
I
//*[count(BBB)=3]
I
//*[count(*)=1]
Dr inż. Stanisław Polak
19
Przedmiot: XML i jego zastosowania
Przykłady
XML Path Language (XPath)
Wybieranie elementów w oparciu o ich nazwy
Wyrażenia ścieżkowe
1
2
3
4
5
6
7
8
<AAA>
<BBB/>
<CCC/>
</AAA>
<AAA>
<BBB/>
<BBB/>
<BBB/>
<CCC>
<BBB/>
</CCC>
</AAA>
Przedmiot: XML i jego zastosowania
I
//*[name()=’BBB’]
I
//*[starts-with(name(),’A’)]
I
//*[contains(name(),’D’)]
I
//*[string-length(name())=3]
I
//*[string-length(name())<3]
Dr inż. Stanisław Polak
20
1
2
3
4
5
6
7
8
9
10
<AAA>
<BBB/>
<ABC/>
<DEF/>
<ABD/>
<BBB/>
<BB>
<A/>
</BB>
</AAA>
Przedmiot: XML i jego zastosowania
XPath 2.0
XML Path Language (XPath)
XPath 2.0
XPath 2.0
XML Path Language (XPath)
Sekwencje
Ogólna charakterystyka
Sekwencje
I
I
I
I
I
I
Rekomendacja W3C — rok 2007
I
XPath 2.0
Kompatybilny wstecz
I
Uporządkowane
I
XPath 1.0
Podzbiór XQuery 1.0
I
Występują duplikaty
Elementy (ang. items)
I
Nieuporządkowane
I
Brak duplikatów
I
Używa go XSLT 2.0
I
Znacznie bardziej skomplikowany niż wersja 1.0
Znaczące różnice
I
I
I
I
21
XPath 2.0
Węzły
Wartości atomowe
Tworzenie
Typy danych oraz typowanie
Nowy model danych
Nowe funkcje (obsługa wyrażeń regularnych, obsługa sekwencji, ...),
operatory oraz wyrażenia
Dr inż. Stanisław Polak
Zbiory węzłów
Przedmiot: XML i jego zastosowania
I
(a, b, c)
I
(a, b, (x, y , z), y , c) −→ (a, b, x, y , z, y , c)
I
(1 to 10) −→ (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Dr inż. Stanisław Polak
XML Path Language (XPath)
Węzły
22
Przedmiot: XML i jego zastosowania
XPath 2.0
XML Path Language (XPath)
Kroki
Przykładowe testy węzła
I
I
I
I
I
I
I
I
I
I
node()
oś::test-węzła[[predykat]*]
Test-węzła
I
item()
I
element(date)
Rodzaj węzła (Element,
Komentarz, . . . )
Nazwa węzła (nazwa atrybutu,
...)
Typ XSD węzła
I
element(*,xs:date)
I
element(title,caption)
I
document-node()
I
schema-element(title)
I
attribute(price)
I
schema-attribute(color)
Dokument XML — drzewo wezłów typu:
I
Dokument (document node) ←− Korzeń (root node)
Element
Tekst
Atrybut
Przestrzeń nazw
Instrukcja przetwarzania
Komentarz
I
I
I
I
Węzły Element oraz Atrybut — typowanie XSD
Dr inż. Stanisław Polak
23
I
Przedmiot: XML i jego zastosowania
. 6= self::node()
Dr inż. Stanisław Polak
24
Przedmiot: XML i jego zastosowania
XPath 2.0
XML Path Language (XPath)
Wyrażenia
XPath 2.0
XML Path Language (XPath)
Przykładowe wyrażenia
XPath 1.0
I for $item in //item return
concat($item/productName, ’ ’,$item/@id)
I some $item in //item satisfies
($item/price * $item/quantity) > 1000
I every $item in //item satisfies
($item/price * $item/quantity) > 1000
I if(//item[2]/price > 1000) then ’Rabat’
else ’Brak rabatu’
I 5 cast as xs:integer
XPath 2.0
I
Zbiór węzłów (ang. node-set)
I
Wartość logiczna
I
I
I
Wszystkie typy zdefiniowane w
specyfikacji XML Schema
Liczba
I
Typy pochodne w/w typów
Napis (unicode)
I
Wartości atomowe
I //item[1]/productName castable as
xs:integer
I 3 instance of xs:integer
25
XPath 3.0
Przedmiot: XML i jego zastosowania
Dr inż. Stanisław Polak
XML Path Language (XPath)
XPath 3.0
4
5
6
7
8
9
10
11
12
13
14
<i t e m s>
<i t e m i d=" Z1 ">
<productName>Zestaw komputerowy</ productName
>
<q u a n t i t y>1</ q u a n t i t y>
<d a t e O f E x p o s u r e>2013−10−10</ d a t e O f E x p o s u r e>
<p r i c e>2000</ p r i c e>
</ i t e m>
<i t e m i d=" M1 ">
<productName> Monitor</ productName>
<q u a n t i t y>2</ q u a n t i t y>
<d a t e O f E x p o s u r e>2013−09−01</ d a t e O f E x p o s u r e>
<p r i c e>500</ p r i c e>
</ i t e m>
</ i t e m s>
Przykładowy dokument XML
I 5 treat as xs:float
I xs:date("2008-01-01") ⇔ "2008-01-01" cast
as xs:date
I data(//item[2]/dateOfExposure) <
xs:date(’2013-10-01’)
Dr inż. Stanisław Polak
1
2
3
Wynik ewaluacji wyrażenia
(’Zestaw komputerowy Z1’,’Monitor M1’) (true)
(false) (’Brak rabatu’) (5) (false) (true) Error
... Required item type of value in ’treat as’
expression is xs:float; supplied value has item
type xs:integer (2008-01-01) (true)
26
XPath 3.0
Przedmiot: XML i jego zastosowania
XML Path Language (XPath)
Funkcje inline
Ogólna charakterystyka
I
Proposed recommendation
I
Podzbiór XQuery 3.0
I
Używa go XSLT 3.0
I
Element = węzeł + wartość atomowa + funkcja
I
Możliwość definiowania zmiennych — wyrażenie let
I
Funkcje wyższego rzędu
Nowe funkcje
I
I
I
I
Dr inż. Stanisław Polak
1
2
3
4
5
let $ kwadrat :=
function ( $ a as xs:integer ) as xs:integer {
$a ∗ $a
}
return " Hello " | | $ kwadrat ( 2 )
Przykład użycia
Wynik
funkcje wyższego rzędu
funkcje do konwersji pomiędzy reprezentacją leksykalną a drzewiastą
...
27
Przedmiot: XML i jego zastosowania
Hello 4
Dr inż. Stanisław Polak
28
Przedmiot: XML i jego zastosowania
XPath 3.0
XML Path Language (XPath)
Przykładowe funkcje wyższego rzędu
I
1
I
fn:filter($seq, $f)
fn:filter ( 1 to 1 0 , function ( $ a ) {$a mod
2 = 0})
1
Przykład użycia
Przykład użycia
Wynik
Wynik
1
4
9
16
25
2
4
6
8
10
Dr inż. Stanisław Polak
29
Źródła
Elliotte Rusty Harold.
XML. Księga eksperta.
Helion, 2001.
Wendell Piez, Deborah A. Lapeyre.
Introduction to XPath 2.0.
http://www.mulberrytech.com/papers/XPath-2-0-User-Grp-HTML/.
Aaron Skonnard.
Introducing XPath 2.0.
http://msdn.microsoft.com/en-us/magazine/cc188789.aspx.
Przedmiot: XML i jego zastosowania
XML Path Language (XPath)
W3C.
XML Path Language (XPath) 3.0.
http://www.w3.org/TR/xpath-30/.
W3C.
XML Path Language (XPath) Version 1.0.
http://www.w3.org/TR/xpath/.
W3schools.
XML Schema Tutorial.
http://www.w3schools.com/schema/default.asp.
Zvon.
Tutorial XPath 1.0.
http:
//www.zvon.org/xxl/XPathTutorial/General_pol/examples.html.
31
Patryk Czarnik.
XML i nowoczesne technologie zarządzania treścią.
http://www.mimuw.edu.pl/~czarnik/.
Anders Møller, Michael I. Schwartzbach.
The XML Revolution. Technologies for the future Web.
http://www.brics.dk/~amoeller/XML/.
Źródła II
Dr inż. Stanisław Polak
XML Path Language (XPath)
Źródła I
fn:for-each($seq, $f)
fn:for−each ( 1 to 5 , function ( $ a ) { $ a ∗
$ a })
Źródła
Przedmiot: XML i jego zastosowania
Dr inż. Stanisław Polak
30
Przedmiot: XML i jego zastosowania