La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

XPath (XML Path Language) Laurea Magistrale in Informatica.

Presentazioni simili


Presentazione sul tema: "XPath (XML Path Language) Laurea Magistrale in Informatica."— Transcript della presentazione:

1 XPath (XML Path Language) Laurea Magistrale in Informatica

2 XPath - XML Path Language2 Obiettivi

3 XPath - XML Path Language3 XPath XPath è un linguaggio che permette di localizzare parti di un documento XML XPath non è un linguaggio strutturato ma un linguaggio basato su stringhe ed espressioni che sono utilizzate da altre tecnologie XML XPath opera sulla struttura logica del documento, non su quella sintattica XPath dispone anche di primitive per eseguire semplici operazioni su stringhe, numeri e valori booleani

4 XPath - XML Path Language4 Il documento secondo XPath Dal punto di vista di XPath, il documento XML è un albero Ogni elemento, commento, attributo, namespace, PI o stringa di testo (non-markup) è un nodo dellalbero Le relazioni tra i nodi sono semplici: Il documento ha un solo nodo radice che contiene tutti gli altri Un elemento annidato è un nodo figlio (child node) dellelemento che lo contiene Commenti, PI e testo sono figli dellelemento che li contiene I nodi attributo e dei namespace non sono considerati child dei loro parent Non sono contenuti allinterno dei parent ma sono solo utilizzati per fornire informazioni descrittive

5 XPath - XML Path Language5 Un semplice documento XML e la sua struttura ad albero con XPATH

6 XPath - XML Path Language6 Un documento xml con due nodi di namespace ed un nodo PI

7 XPath - XML Path Language7 Location Path e Location Step Il Location Path ( path di posizione) specifica come spostarsi tra i nodi dellalbero 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 Un test di nodo Zero o più predicati axis::test[pred1][pred2]…[pred N]

8 XPath - XML Path Language8 Nodo di contesto Le ricerche iniziano dal nodo di contesto Se abbiamo una istruzione xpath che restituisce il primo child del nodo di contesto Nodo di contesto Head = nodo dellelemento Title Nodo di contesto HTML = nodo dellelemento Head

9 XPath - XML Path Language9 Lasse è un insieme di nodi Indica quali nodi riferiti al contesto debbono essere inseriti nella ricerca Determina la sequenza di ricerca dei nodi ( diretta o inversa) 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 Gli assi identificano la direzione rispetto alla struttura del documento in cui andare a cercare loggetto da restituire rispetto al nodo contesto (NC) Gli Assi

10 XPath - XML Path Language10 Gli Assi XPATH (I) 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

11 XPath - XML Path Language11 Gli Assi Xpath (II) 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)

12 XPath - XML Path Language12 Gli Assi Xpath (III) 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.

13 XPath - XML Path Language13 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

14 XPath - XML Path Language14 Test di nodo (node test) Per individuare un particolare nodo su un asse, si usano il suo tipo e/o il suo nome tramite i cosiddetti node test. un asse ha un tipo di nodo principale che corrisponde al tipo di nodo che lasse può selezionare Il test può essere: Un nome: vero se il nodo (elemento o attributo) ha quel nome text(), processing-instruction(), comment(): vero se il nodo è di tipo testo, processing instruction o commento. node(): vero sempre * : vero per tutti i nodi del tipo definito dallasse

15 XPath - XML Path Language15 Path di posizione con assi e test dei nodi Location step child::* Seleziona tutti i nodi degli elementi child del nodo di contesto Location step child::text() Seleziona tutti i nodi di testo child del nodo di contesto Location path child::*/child::text() Seleziona tutti i nodi di testo dei nipoti del nodo di contesto Esempio con html come nodo di contesto

16 XPath - XML Path Language16 child::*/child::text() Nodi degli elementi Head e Body Risultato nullo perché né Head né Body hanno figli text

17 XPath - XML Path Language17 Sintassi abbreviata In alcuni casi esistono delle forme abbreviate usabili invece della sintassi completa: Child::x si può abbreviare con x Attribute::a si può abbreviare Descendant si può abbreviare con //, self con., parent con.. Esempi: /doc/chapter[5]/section[2]: la seconda sezione del quinto capitolo del documento./chapter//para: tutti i para discendenti a qualunque livello di ogni nodo chapter figlio del NC //para: tutti i para discendenti a qualunque livello della radice del documento

18 XPath - XML Path Language18 Esempio Supponiamo di voler conoscere quali libri sono stati tradotti in giapponese /books/book/translation[. =Japanese]/../title Per selezionare lattributo edition /books/book/translation[.

19 XPath - XML Path Language19 I Predicati I predicati corrispondono a filtri sullinsieme dei nodi selezionandone una parte secondo particolari criteri Il risultato di un filtro è linsieme dei nodi filtrati 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 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

20 XPath - XML Path Language20 Operandi nei Filtri Allinterno dei filtri si possono usare espressioni XPath operandi: Espressioni XPath (compresi altri filtri nidificati!), che vengono valutate usando come contesto ciascun nodo dellinsieme di input Il valore di una espressione XPath, se usata con operatori di confronto, è il testo in essa contenuto (valore dellattributo o testo allinterno dellelemento). Se lespressione è un insieme, XPath restituisce true se cè almeno un suo elemento che soddisfi il test. Costanti numeriche o stringhe tra virgolette

21 XPath - XML Path Language21 I Filtri - Esempi /collection/album[title = gli ID di ogni album nella collection che abbia un (figlio) title contenente il testo Supernatural. = 123] tutti gli album nella collection con ID uguale a 123. =//album[title ]/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.

22 XPath - XML Path Language22 collection/song //album //album[title=S] collection/song[…] collection/ song[…]/ title = //album[title =

23 XPath - XML Path Language23 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 (non sottostringa!) //album[3] il terzo elemento album presente in tutto il file XML

24 XPath - XML Path Language24 I Filtri - Esempi = santana1] la prima song nel documento, se ha un attributo album con valore santana1 //cd[owner = = 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] tutti i nodi song o album nel documento corrente, a qualsiasi livello di nidificazione.

25 XPath - XML Path Language25 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

26 XPath - XML Path Language26 I Filtri - Esempi >= 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 != 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

27 XPath - XML Path Language27 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)

28 XPath - XML Path Language28 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.

29 XPath - XML Path Language29 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.

30 XPath - XML Path Language30 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.

31 XPath - XML Path Language31 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.

32 XPath - XML Path Language32 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[substring-after( = 2000] gli album in cui lattributo date è del tipo …/…/2000 = gli album il cui attributo ID è uguale allattributo album del contesto esterno corrente.

33 XPath - XML Path Language33 Un ulteriore esempio di XPath 990 Roma 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

34 XPath - XML Path Language Roma Tutti i biglietti di Luca Verdi Verdi] Un ulteriore esempio di XPath

35 XPath - XML Path Language Roma Tutti i biglietti che costano più di 1000 euro //prenotazioni/biglietto[prezzo > 1000] Un ulteriore esempio di XPath

36 XPath - XML Path Language Roma Tutte le tappe di tutti i voli: //tappa Un ulteriore esempio di XPath

37 XPath - XML Path Language Roma Tutti i biglietti del 6 agosto Un ulteriore esempio di XPath

38 XPath - XML Path Language Roma Tutti i biglietti che passano per Roma Un ulteriore esempio di XPath

39 XPath - XML Path Language Roma Tutti i biglietti che arrivano a Napoli //biglietto[.//tappa[last()]="Napoli"] Un ulteriore esempio di XPath

40 XPath - XML Path Language40 Uso delle funzioni di stringa

41 XPath - XML Path Language41

42 XPath - XML Path Language42 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 W3Schools Online Web Tutorials


Scaricare ppt "XPath (XML Path Language) Laurea Magistrale in Informatica."

Presentazioni simili


Annunci Google