+ All Categories
Home > Documents > XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re [email protected] Anno...

XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re [email protected] Anno...

Date post: 01-May-2015
Category:
Upload: robertina-vecchio
View: 215 times
Download: 0 times
Share this document with a friend
44
XPATH XPATH UNIVERSITA’ DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07
Transcript
Page 1: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

XPATHXPATH

UNIVERSITA’ DI CAMERINOCorso di laurea in Informatica

Barbara [email protected]

Anno Accademico 2006-07

Page 2: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 2

Agenda

Location Path e Location Step Assi Test di nodo Predicati (o filtri) Operatori e funzioni nei filtri Precisazioni Molti esempi…

Page 3: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 3

XPath

XPath è un linguaggio che permette di indirizzare parti di un documento XML

XPath opera sulla struttura logica del documento, non su quella sintattica, usando una sintassi non XML accettabile all’interno di URI e attributi

XPath dispone anche di primitive per eseguire semplici operazioni su stringhe, numeri e valori booleani

Page 4: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 4

Il documento secondo XPath

Dal punto di vista di XPath, il documento XML è un albero

Ogni elemento, commento, attributo, PI o stringa di testo (non-markup) è un nodo dell’albero

I tipi di nodo sonoradiceelementoattributotestonamespacecommentoprocessing-instruction

Page 5: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 5

Relazioni tra nodi

La struttura ad albero di XPATH ha un solo nodo radice che contiene tutti gli altri nodi dell’albero

I nodi radice e i nodi degli elementi contengono liste ordinate di nodi child

Tutti i nodi tranne quello radice hanno un padre I nodi parent possono avere qualsiasi numero di

nodi child Gli unici nodi che possono essere nodi child sono gli

elementi, i commenti, i testi e le istruzioni di elaborazione

Page 6: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 6

Attenzione

Sebbene il nodo di attributo o namespace possa avere cme nodo parent un nodo di elemento o il nodo radice i nodi degli attributi o namespace non sono considerati nodi child dei loro nodi parent

La relazione che sta alla base della definizione di nodo parent e nodo child consiste nel fatto che il nodo parent contiene il nodo child

Il nodo degli attributi sono quindi semplicemente usati per fornire informazioni descrittive sui loro parent

Page 7: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 7

Ancora sui nodi

Ogni nodo della struttura ad albero pu essere rappresentato da una stringa usata poi per confrontare in nodi

La stringa di un elemento è formata dalla concatenazione delle stringhe di tutti i suoi nodi di testo child

Il nodo di un attributo è formato dal valore nomalizzato dell’attributo

La stringa di un nodo di commento è formata soltato dal testo del commento esclusi I caratteri <!-- e -->

Page 8: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 8

Ancora sui nodi

La stringa di un nodo di eleaborazione è formata da ciò che resta dell’istruzione di elaborazione dopo il target, includendo il carattere vuoto ma escludendo I caratteri finali ?>

La stringa del nodo di namespace è formata dall’URI del namespace

Page 9: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 9

Nome espanso sui nodi

Gli elementi, gli attributi le istruzioni di elaborazione e I namespace possono avere un nome espanso che può essere usato per determinare I nodi specifici nella struttura ad albero

Forma: parte locale e URI del namespaceElementi Parte locale nome elemento URI del namespace o di default o quello associatoAttributi Parte locale nome attributo URI del namespace o di default o quello associatoIstruzione di elaborazione Parte locale target istruzione di elaborazione URI del namespace nullNamespace Parte locale prefisso (o vuota se di default) URI del namespace null

Page 10: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 10

Riassumendo!!

Page 11: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 11

Location Path e Location Step

Il Location Path specifica come spostarsi tra i nodi dell’alberoassoluti: iniziano con / e si riferiscono ai nodi dalla radicerelativi: non iniziano con / e si riferiscono ai nodi dal nodo contesto

Un Location Path è composto di una sequenza di passi di locazione (Location Step) separati da ‘/’, e letti da sinistra a destra. Ogni termine individua più precisamente un frammento della risorsa individuata in precedenza.

Un location step ha tre partiUn asse, che definisce la relazione tra i nodiUn nodo di test, che definisce il tipo ed il nome dei nodi selezionatiZero o più predicati che raffinano l’insieme dei nodi selezionati

axis::test[pred1][pred2]…[pred N]

Page 12: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 12

Esempi

/A/B/C seleziona gli elementi di C che sono figli degli elementi B che sono figli dell'elemento A che rappresenta la radice del documento XML

A//B/*[1] seleziona il primo elemento ("[1]"), figlio di B, indipendentemente dal suo nome, e dal numero di nodi che intercorrono tra A e B (//). Da notare che l'esperssione non inizia con "/", quindi A è un nodo del contesto corrente.

/child::A/child::B/child::C

child::A/descendant-or-self::B/child::node()[1]

Page 13: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 13

L’asse è un insieme di nodiMuovendosi sull’albero del documento, XPath permette di scegliere non solo tra i figli del nodo corrente, ma anche tra una serie di altri insiemi di nodi che sono in relazione con essoLa ricerca inzia sempre dal nodo corrente chiamato anche nodo di contesto

Gli assi identificano quali nodi riferiti al nodo di contesto devono essere inclusi nella ricerca

L’asse determina anche la sequenza di ricerca dei nodi: diretta o inversa

Gli assi che selezionano i nodi che seguono il nodo di contesto nella sequenza del documento si chiamano nodi successivi (sequenza diretta) Gli assi che selezionano i nodi che precedono il nodo di contesto nella sequenza del documento si chiamano nodi precedenti (sequenza inversa)

Gli Assi

Page 14: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 14

Gli Assi

selfContiene il nodo corrente

child Contiene gli elementi direttamente annidati nel contesto

parentContiene il padre dell’elemento corrente

attribute Contiene gli attributi del nodo corrente

ancestorContiene il padre del nodo, il padre del padre, ecc…

ancestor-or-self Come ancestor, ma contiene anche il nodo corrente

Page 15: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 15

Gli Assi

descendant Contiene tutti gli elementi annidati nel nodo corrente (con livello di annidamento arbitrario)

descendant-or-self Come descendant, ma contiene anche il nodo corrente

following Contiene tutti i nodi che si trovano dopo quello corrente all’interno del documento, esclusi i discendenti, gli attributi del nodo e i namespaces

following-sibling Contiene tutti i nodi che hanno lo stesso livello di nidificazione nell’elemento padre di quello corrente e sono posti dopo di esso (“fratelli”)

Page 16: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 16

Gli Assi

preceding Contiene tutti i nodi che si trovano prima quello corrente all’interno del documento, esclusi i suoi antenati (ancestors), gli attributi del nodo e i namespaces

preceding-sibling Contiene tutti i nodi che hanno lo stesso livello di nidificazione nell’elemento padre di quello corrente e sono posti prima di esso

namespace Contiene i nodi namespace dichiarati per l’elemento corrente.

Page 17: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 17

/

R

S

P

I B

I

SS

P P P

B

P P P P P

P

S

P

I

P

Asse self::

Asse parent::

Asse preceding-sibling::

Asse following-sibling::

Asse child::

Asse ancestor::

Asse preceding::

Asse following::

Asse descendant::

Un esempio di alcuni assi

Page 18: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 18

Le gerarchie secondo XPath

ancestor: [c,a]ancestor-or-self: [d,c,a] attribute: [x]child: [f]descendant: [f,g]descendant-or-self: [d,f,g]following: [i,h]following-sibling: [i]namespace: [y]parent: [c]preceding: [b,e]preceding-sibling: [e]self: [d]

Nod

o Co

rren

te

Nod

o Co

rren

te<a>

<c>

<b/>

</c>

</a>

<d xmlns:y=“…” x=“…”>

<e/>

</d>

<g/>

<f>

</f>

<i/>

<h/>

Page 19: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 19

Riassumendo: estesa - contratta

ancestor-or-self non disponibile nella sintassi abbreviata

following non disponibile nella sintassi abbreviata

preceding non disponibile nella sintassi abbreviata

following-sibling non disponibile nella sintassi abbreviata

preceding-sibling non disponibile nella sintassi abbreviata

self .

namespace non disponibile nella sintassi abbreviata

child default, non specificato nella sintassi abbreviata

attribute @

descendant non disponibile nella sintassi abbreviata

descendant-or-self //

parent ..

ancestor non disponibile nella sintassi abbreviata

Page 20: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 20

Esempi

//a/@href seleziona un attributo denominato href in un qualunque elemento dell'albero del documento

h3[.='See also'] seleziona un elemento denominato h3 nel contesto corrente, il cui testo è uguale a "See also".

Page 21: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 21

Test di nodo (node test)

Identifica, attraverso il nome o il tipo, l'oggetto da restituire e può essere del tipo

Il test può essere: Un nome: Seleziona tutti i nodi che hanno quel nometext(), processing-instruction(), comment(): Seleziona tutti i nodi di tipo testo, processing instruction o commento del nodo contesto node(): Seleziona tutti i nodi indipendentemente dal tipo* : Seleziona tutti i nodi dello stesso tipo di nodo principale

Page 22: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 22

I Predicati

Tutti i controlli che permettono una maggiore selezione (raffinamento/scrematura) su un dato insieme di nodi sono detti PREDICATI

L'insieme di nodi iniziale viene filtrato e alla fine restano quelli che soddisfano il predicato specificato

I predicati in XPath corrispondono a dei filtri sull’insieme dei nodi selezionandone una parte secondo particolari criteri

Il risultato di un filtro è l’insieme dei nodi filtratiEssi sono inseriti tra parentesi quadre []

In ciascuno step si possono inserire un numero arbitrario di filtri, che vengono richiamati nell’ordine in cui si presentano

I filtri vanno posti nello step sempre dopo il node test

Page 23: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 23

I Predicati

All’interno del filtro si possono usare espressioni che abbiano valore booleano

L’espressione del filtro viene valutata usando ciascun nodo del set come contesto, e se vale true il nodo viene aggiunto all’insieme dei risultati

Esistono due eccezioni:Se l’espressione restituisce un numero, viene selezionato il nodo in quella posizione nell’insieme (gli insiemi di nodi sono ordinati)Se l’espressione restituisce un insieme di nodi, allora vale true se l’insieme non è vuoto

Page 24: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 24

<collection>

<song>

</collection>

<title/>

</song>

<song>

<title/>

</song>

<album>

<title/>

</album>

<album>

<title/>

</album>

<song>

<title/>

</song>

<song>

<title/>

</song>

/collection/song/collection/song

<album>

<title/>

</album>

<album>

<title/>

</album>

//album//album

<album>

<title/>

</album>

//album[title=“S”]//album[title=“S”]

<song>

<title/>

</song>

/collection/song[…]/collection/song[…]

<title/>

/collection//collection/song[…]/song[…]/

titletitle

Esempi

Page 25: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 25

I Filtri - Esempi

/collection/album[title = “Supernatural”]/@IDgli ID di ogni album nella collection che abbia

un (figlio) title contenente il testo “Supernatural”.

/collection/album[@ID = “123”]tutti gli album nella collection con ID uguale a “123”.

/collection/song[

@album =//album[title =“Supernatural”]/@ID

]/titlei titoli di tutte le song nella collection che hanno un attributo album uguale

all’ID di uno degli elementi album (presenti in qualunque punto tra i discendenti del contesto corrente) che hanno come title “Supernatural”

Page 26: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 26

I Filtri - Esempi

//album/title[ . = “Supernatural”]il title di tutti gli album intitolati “Supernatural”

/collection/song[comment]tutte le song nella collection che hanno un comment

/collection/song[comment[1] = “Hit”]tutte le song nella collection il cui primo comment

contiene il testo “Hit”

//album[3]il terzo elemento album presente in tutto il file XML

Page 27: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 27

I Filtri - Esempi

//song[1][@album = “santana1”]la prima song nel documento, se ha un attributo album con valore “santana1”

//cd[owner = “myself”]/song[@album = “santana1”]/title

i title di tutte le song aventi un attributo album con valore “santana1” che si trovano in un cd avente un elemento

figlio owner con valore “myself”.

//[self::song or self::album]i nodi song o album nel documento corrente, a qualsiasi

livello di nidificazione

Page 28: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 28

Operatori nei Filtri

All’interno dei filtri si possono usare operatori:Confronto: ‘=’ (uguale), ‘!=’ (diverso), ‘>’ (maggiore), ‘>=’ (maggiore o uguale), ‘<’ (minore), ‘<=’ (minore o uguale).Logici (tra espressioni filtro valide): and, or, not(…)Insiemistici: (da usare tra insiemi di nodi, ma all’esterno dei filtri!): ‘|’ (unione).Raggruppamento (per dare precedenza a certe espressioni, si possono usare anche all’esterno dei filtri!): ‘(…)’Matematici: ‘+’, ‘-’, ‘*’, ‘/’, mod

Page 29: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 29

I Filtri - Esempi

//album[@tracks >= 5]

tutti gli album con attributo tracks

avente valore maggiore di cinque

//song[title and artist]

tutte le song aventi (almeno)

un figlio title e un figlio artist

//song[@album != “santana1” and not(comment)]tutte le song con un attributo album con valore

diverso da “santana1” e senza figli comment

//cd/song[1]

la prima song di tutti i cd

(//cd/song)[1]

la prima di tutte le song in tutti i cd

Page 30: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 30

Funzioni nei Filtri

All’interno dei filtri si possono usare vari tipi di funzioni:

funzioni su insiemi di nodifunzioni su stringhefunzioni numerichefunzioni booleanefunzioni XSLT - Specifiche (non presenti nella specifica XPath)

Page 31: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 31

Funzioni su Nodi

Principali funzioni sugli insiemi di nodicount(ns): dimensione dell’insieme di nodi ns.last(): indice dell’ultimo elemento nell’insieme di nodi corrente.position(): posizione del nodo corrente all’interno del suo genitore.document(...): permette di accedere a documenti XML esterniid(“…”): restituisce il nodo con l’attributi di tipo ID avente il valore dato.

Page 32: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 32

Funzioni sulle Stringhe

Principali funzioni sulle stringhe:string(o): converte l’oggetto o in una stringa.concat(s1,s2,...): concatena più stringhe.substring(s,x,y): sottostringa di s che inizia al carattere x ed è lunga y (opzionale)substring-after(s,t): la sottostringa di s che inizia dopo i caratteri tsubstring-before(s,t): la sottostringa di s che arriva fino ai caratteri tcontains(s,t): vero se s contiene t.starts-with(s,t): vero se s inizia con t.string-length(s): la lunghezza della stringa s.

Page 33: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 33

Funzioni Booleane

Principali funzioni sui valori booleani:boolean(o): converte l’oggetto o in un valore booleano.true(): vale sempre true.false(): vale sempre false.not(e): vale l’opposto di e.

Page 34: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 34

Funzioni Numeriche

Principali funzioni sui valori numerici:number(o): converte l’oggetto o in un valore numerico.ceiling(x): restituisce l’intero più piccolo che non sia minore di x.floor(x): restituisce l’intero più grande che non sia maggiore di x.round(x): arrotonda x a un intero.sum(ns): converte in numeri (usando number()) tutti i nodi nell’insieme ns, e ne restituisce la somma.

Page 35: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 35

I Filtri - Esempi

//song[position() = last()]l’ultima song nel documento.

//cd[sum(song/length) > 60]/titlei titoli di tutti i cd in cui la durata

totale delle song è maggiore di 60.

//cd[count(song) < 12]i cd con meno di 12 song.

//album[@ID = current()/@album]gli album il cui attributo ID è uguale all’attributo album del

contesto esterno corrente.

Page 36: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 36

Un ulteriore esempio di XPath

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Scrivere un XPath che identifichi:1.Tutti i biglietti di Luca Verdi2.Tutti i biglietti che costano più di

1000 euro3.Tutte le tappe di tutti i voli4.Tutti i biglietti del 6 agosto5.Tutti i biglietti che passano per

Roma6.Le date di tutti i biglietti che

arrivano a Napoli

Page 37: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 37

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Tutti i biglietti di Luca Verdi

//prenotazioni/biglietto[@nome=‘Luca Verdi’]

Un ulteriore esempio di XPath

Page 38: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 38

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Tutti i biglietti che costano più di 1000 euro

//prenotazioni/biglietto[prezzo > 1000]

Un ulteriore esempio di XPath

Page 39: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 39

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Tutte le tappe di tutti i voli:

//tappa

Un ulteriore esempio di XPath

Page 40: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 40

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Tutti i biglietti del 6 agosto

//biglietto[*/@data="6-8-2005"]

Un ulteriore esempio di XPath

Page 41: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 41

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Tutti i biglietti che passano per Roma

//biglietto[.//tappa/@t="Roma"]

Un ulteriore esempio di XPath

Page 42: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 42

<prenotazioni> <biglietto nome="Luca Verdi"> <voloAndata data=“1-8-2005”> <tappa t="Bologna"/><tappa t="Frankfurt"/><tappa t="NewYork"/> </voloAndata> <voloRitorno data=“8-8-2005”> <tappa t="NewYork"/><tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>990</prezzo> </biglietto> <biglietto nome="Luigi Bianchi"> <destinazione>Roma</destinazione> <voloAndata data=“6-8-2005”> <tappa t="Bologna"/><tappa t="Roma"/> </voloAndata> <voloRitorno data=“7-8-2005”> <tappa t="Roma"/><tappa t="Bologna"/> </voloRitorno> <prezzo>240</prezzo> </biglietto>...

Tutti i biglietti che arrivano a Napoli

//biglietto[.//tappa[last()]="Napoli"]

Un ulteriore esempio di XPath

Page 43: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 43

Riferimenti

Deitel et al, XML Corso di programmazione, Apogeo

Chris Bates, XML in theory and Practice, Wiley

XML Path Language (XPath) Version 1.0W3C Recommendation 16 November 1999http://www.w3.org/TR/xpath

W3Schools Online Web Tutorialshttp://www.w3schools.com/xpath/default.asp

Page 44: XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07.

Laboratorio Informatico in Database Turistici

Barbara Re 44

Ci sono domande?


Recommended