Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoRobertina Vecchio Modificato 11 anni fa
1
XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re barbara.re@unicam.it Anno Accademico 2006-07
2
Laboratorio Informatico in Database Turistici Barbara Re2 Agenda Location Path e Location Step Assi Test di nodo Predicati (o filtri) Operatori e funzioni nei filtri Precisazioni Molti esempi…
3
Laboratorio Informatico in Database Turistici Barbara Re3 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 allinterno di URI e attributi XPath dispone anche di primitive per eseguire semplici operazioni su stringhe, numeri e valori booleani
4
Laboratorio Informatico in Database Turistici Barbara Re4 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 dellalbero I tipi di nodo sono radice elemento attributo testo namespace commento processing-instruction
5
Laboratorio Informatico in Database Turistici Barbara Re5 Relazioni tra nodi La struttura ad albero di XPATH ha un solo nodo radice che contiene tutti gli altri nodi dellalbero 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
6
Laboratorio Informatico in Database Turistici Barbara Re6 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
7
Laboratorio Informatico in Database Turistici Barbara Re7 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 dellattributo La stringa di un nodo di commento è formata soltato dal testo del commento esclusi I caratteri
8
Laboratorio Informatico in Database Turistici Barbara Re8 Ancora sui nodi La stringa di un nodo di eleaborazione è formata da ciò che resta dellistruzione di elaborazione dopo il target, includendo il carattere vuoto ma escludendo I caratteri finali ?> La stringa del nodo di namespace è formata dallURI del namespace
9
Laboratorio Informatico in Database Turistici Barbara Re9 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 namespace Elementi Parte locale nome elemento URI del namespace o di default o quello associato Attributi Parte locale nome attributo URI del namespace o di default o quello associato Istruzione di elaborazione Parte locale target istruzione di elaborazione URI del namespace null Namespace Parte locale prefisso (o vuota se di default) URI del namespace null
10
Laboratorio Informatico in Database Turistici Barbara Re10 Riassumendo!!
11
Laboratorio Informatico in Database Turistici Barbara Re11 Location Path e Location Step Il Location Path specifica come spostarsi tra i nodi dellalbero assoluti: iniziano con / e si riferiscono ai nodi dalla radice relativi: 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 parti Un asse, che definisce la relazione tra i nodi Un nodo di test, che definisce il tipo ed il nome dei nodi selezionati Zero o più predicati che raffinano linsieme dei nodi selezionati axis::test[pred1][pred2]…[pred N]
12
Laboratorio Informatico in Database Turistici Barbara Re12 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]
13
Laboratorio Informatico in Database Turistici Barbara Re13 Lasse è un insieme di nodi Muovendosi sullalbero 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 esso La 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 Lasse 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
14
Laboratorio Informatico in Database Turistici Barbara Re14 Gli Assi self Contiene il nodo corrente child Contiene gli elementi direttamente annidati nel contesto parent Contiene il padre dellelemento corrente attribute Contiene gli attributi del nodo corrente ancestor Contiene il padre del nodo, il padre del padre, ecc… ancestor-or-self Come ancestor, ma contiene anche il nodo corrente
15
Laboratorio Informatico in Database Turistici Barbara Re15 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 allinterno 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 nellelemento padre di quello corrente e sono posti dopo di esso (fratelli)
16
Laboratorio Informatico in Database Turistici Barbara Re16 Gli Assi preceding Contiene tutti i nodi che si trovano prima quello corrente allinterno 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 nellelemento padre di quello corrente e sono posti prima di esso namespace Contiene i nodi namespace dichiarati per lelemento corrente.
17
Laboratorio Informatico in Database Turistici Barbara Re17 / R S P IB I SS PPP B P P P PP 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
18
Laboratorio Informatico in Database Turistici Barbara Re18 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] Nodo Corrente <a><a> <c><c> <f><f>
19
Laboratorio Informatico in Database Turistici Barbara Re19 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
20
Laboratorio Informatico in Database Turistici Barbara Re20 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".
21
Laboratorio Informatico in Database Turistici Barbara Re21 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 nome text(), 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
22
Laboratorio Informatico in Database Turistici Barbara Re22 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 sullinsieme dei nodi selezionandone una parte secondo particolari criteri Il risultato di un filtro è linsieme dei nodi filtrati Essi sono inseriti tra parentesi quadre [] In ciascuno step si possono inserire un numero arbitrario di filtri, che vengono richiamati nellordine in cui si presentano I filtri vanno posti nello step sempre dopo il node test
23
Laboratorio Informatico in Database Turistici Barbara Re23 I Predicati Allinterno del filtro si possono usare espressioni che abbiano valore booleano Lespressione del filtro viene valutata usando ciascun nodo del set come contesto, e se vale true il nodo viene aggiunto allinsieme dei risultati Esistono due eccezioni: Se lespressione restituisce un numero, viene selezionato il nodo in quella posizione nellinsieme (gli insiemi di nodi sono ordinati) Se lespressione restituisce un insieme di nodi, allora vale true se linsieme non è vuoto
24
Laboratorio Informatico in Database Turistici Barbara Re24 /collection/song //album //album[title=S] /collection/song[…] /collection/ song[…]/ title Esempi
25
Laboratorio Informatico in Database Turistici Barbara Re25 I Filtri - Esempi /collection/album[title = Supernatural]/@ID gli 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 ]/title i titoli di tutte le song nella collection che hanno un attributo album uguale allID di uno degli elementi album (presenti in qualunque punto tra i discendenti del contesto corrente) che hanno come title Supernatural
26
Laboratorio Informatico in Database Turistici Barbara Re26 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
27
Laboratorio Informatico in Database Turistici Barbara Re27 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
28
Laboratorio Informatico in Database Turistici Barbara Re28 Operatori nei Filtri Allinterno 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 allesterno dei filtri!): | (unione). Raggruppamento (per dare precedenza a certe espressioni, si possono usare anche allesterno dei filtri!): (…) Matematici: +, -, *, /, mod
29
Laboratorio Informatico in Database Turistici Barbara Re29 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
30
Laboratorio Informatico in Database Turistici Barbara Re30 Funzioni nei Filtri Allinterno dei filtri si possono usare vari tipi di funzioni: funzioni su insiemi di nodi funzioni su stringhe funzioni numeriche funzioni booleane funzioni XSLT - Specifiche (non presenti nella specifica XPath)
31
Laboratorio Informatico in Database Turistici Barbara Re31 Funzioni su Nodi Principali funzioni sugli insiemi di nodi count(ns): dimensione dellinsieme di nodi ns. last(): indice dellultimo elemento nellinsieme di nodi corrente. position(): posizione del nodo corrente allinterno del suo genitore. document(...): permette di accedere a documenti XML esterni id(…): restituisce il nodo con lattributi di tipo ID avente il valore dato.
32
Laboratorio Informatico in Database Turistici Barbara Re32 Funzioni sulle Stringhe Principali funzioni sulle stringhe: string(o): converte loggetto o in una stringa. concat(s 1,s 2,...): 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 t substring-before(s,t): la sottostringa di s che arriva fino ai caratteri t contains(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.
33
Laboratorio Informatico in Database Turistici Barbara Re33 Funzioni Booleane Principali funzioni sui valori booleani: boolean(o): converte loggetto o in un valore booleano. true(): vale sempre true. false(): vale sempre false. not(e): vale lopposto di e.
34
Laboratorio Informatico in Database Turistici Barbara Re34 Funzioni Numeriche Principali funzioni sui valori numerici: number(o): converte loggetto o in un valore numerico. ceiling(x): restituisce lintero più piccolo che non sia minore di x. floor(x): restituisce lintero 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 nellinsieme ns, e ne restituisce la somma.
35
Laboratorio Informatico in Database Turistici Barbara Re35 I Filtri - Esempi //song[position() = last()] lultima song nel documento. //cd[sum(song/length) > 60]/title i 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 allattributo album del contesto esterno corrente.
36
Laboratorio Informatico in Database Turistici Barbara Re36 Un ulteriore esempio di XPath 990 Roma 240... Scrivere un XPath che identifichi: 1.Tutti i biglietti di Luca Verdi 2.Tutti i biglietti che costano più di 1000 euro 3.Tutte le tappe di tutti i voli 4.Tutti i biglietti del 6 agosto 5.Tutti i biglietti che passano per Roma 6.Le date di tutti i biglietti che arrivano a Napoli
37
Laboratorio Informatico in Database Turistici Barbara Re37 990 Roma 240... Tutti i biglietti di Luca Verdi //prenotazioni/biglietto[@nome=Luca Verdi] Un ulteriore esempio di XPath
38
Laboratorio Informatico in Database Turistici Barbara Re38 990 Roma 240... Tutti i biglietti che costano più di 1000 euro //prenotazioni/biglietto[prezzo > 1000] Un ulteriore esempio di XPath
39
Laboratorio Informatico in Database Turistici Barbara Re39 990 Roma 240... Tutte le tappe di tutti i voli: //tappa Un ulteriore esempio di XPath
40
Laboratorio Informatico in Database Turistici Barbara Re40 990 Roma 240... Tutti i biglietti del 6 agosto //biglietto[*/@data="6-8-2005"] Un ulteriore esempio di XPath
41
Laboratorio Informatico in Database Turistici Barbara Re41 990 Roma 240... Tutti i biglietti che passano per Roma //biglietto[.//tappa/@t="Roma"] Un ulteriore esempio di XPath
42
Laboratorio Informatico in Database Turistici Barbara Re42 990 Roma 240... Tutti i biglietti che arrivano a Napoli //biglietto[.//tappa[last()]="Napoli"] Un ulteriore esempio di XPath
43
Laboratorio Informatico in Database Turistici Barbara Re43 Riferimenti Deitel et al, XML Corso di programmazione, Apogeo Chris Bates, XML in theory and Practice, Wiley XML Path Language (XPath) Version 1.0 W3C Recommendation 16 November 1999 http://www.w3.org/TR/xpath W3Schools Online Web Tutorials http://www.w3schools.com/xpath/default.asp
44
Laboratorio Informatico in Database Turistici Barbara Re44 Ci sono domande?
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.