XPath (XML Path Language) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u Lesigenza e il funzionamento dei Namespace in XML.
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
Estendere i linguaggi: i tipi di dato astratti
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
XPath (XML Path Language)
DTD Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation.
XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
Query OQL e XQUERY a confronto
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
RB-alberi (Red-Black trees)
WWW Link in XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u XLink.
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XML Prof. Barbara Pernici Politecnico di Milano aggiornato 10/12/2002.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano
Basi di Dati II Sara Romano
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Java base I: Sintassi e tipi di dati
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
Corso di PHP.
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
4 Tipi di dati & variabili
I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select.
Javascript: fondamenti, concetti, modello a oggetti
EXCEL E FTP.
Creare pagine web Xhtlm. Struttura di una pagina.
XPATH.
Informatica Umanistica A.A. 2007/2008 LEZIONE 4 eXtensible Markup Language (XML) INTRODUZIONE.
Introduzione a Javascript
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
WWW XSLT Ing. Michele Vindigni. WWW 2 Introduzione Oggi esaminiamo in breve: u XSLT, ovvero il linguaggio trasformazione per documenti XML con sintassi.
Introduzione alle Griglie computazionali - aa Introduzione alle griglie computazionali Introduzione alle griglie computazionali Università degli.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
Carluccio Antonio Carluccio Alessandra Caricola Giovanni Vizzino Anna Università degli Studi di Bari.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
WWW XBase, XPath e XPointer Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u XBase, XPath e XPointer.
I fogli di stile XSL.
WWW XSLT Fabio Vitali. WWW Fabio Vitali2 Introduzione Oggi esaminiamo in breve: u XSLT, ovvero il linguaggio di stile di XML.
WWW XBase, XPath e XPointer Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u XBase, XPath e XPointer.
EXtensible Stylesheet Language Transformations (XSLT) Giuseppe Della Penna Università degli Studi di L’Aquila
1 XSL:Rappresentare i documenti XML Marco Mesiti XSL, XSLT, XPath.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Approfondimenti SQL.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

XPath (XML Path Language) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis

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

XPath - XML Path Language3 XPath XPath è un linguaggio che permette di indirizzare parti di un documento XML XPath è una parte fondamentale di XSLT e di altre specifiche come XLink 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

XPath - XML Path Language4 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 Le relazioni tra i nodi sono semplici: Un elemento annidato è un nodo figlio (child node) dellelemento che lo contiene Commenti, PI e testo sono figli dellelemento che li contiene (o del documento) I nodi attributo e dei namespace non sono considerati child dei loro parent

XPath - XML Path Language5 Location Path e Location Step Il Location Path 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]

XPath - XML Path Language6 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 Gli assi identificano la direzione rispetto alla struttura del documento in cui andare a cercare loggetto da restituire rispetto al nodo contesto (NC) Lasse child degli elementi figli diretti è lasse predefinito Gli Assi

XPath - XML Path Language7 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

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

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

XPath - XML Path Language10 / 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

XPath - XML Path Language11 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>

XPath - XML Path Language12 I Tipi I tipi di nodo sono: radice elemento attributo testo namespace commento processing-instruction Ogni asse ha un tipo predefinito se lasse contiene elementi, il tipo predefinito è elemento se lasse non contiene elementi ma attributi, il tipo predefinito è attributo se lasse non contiene elementi ma namespace, il tipo predefinito è namespace

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

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. Nel caso si lavori su un insieme di nodi, tutte le operazioni vengono applicate iterativamente a ciascun nodo Il risultato è un insieme di nodi, ciascuno dei quali può essere ulteriormente attraversato 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

XPath - XML Path Language15 I Nomi Alcuni nodi possiedono anche un loro nome: I nodi elemento e attributo hanno il nome dellelemento e dellattributo stessi Per indicare il nodo con un particolare nome, si usa semplicemente il nome stesso come test Lo speciale test * fa match con tutti i nodi accessibili sullasse, con qualunque nome I test restituiscono linsieme dei nodi con quel particolare nome presenti sullasse

XPath - XML Path Language16 I Predicati 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 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

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

XPath - XML Path Language18 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

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

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

XPath - XML Path Language21 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

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

XPath - XML Path Language23 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

XPath - XML Path Language24 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

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

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

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

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

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

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

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

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

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

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

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

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

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

XPath - XML Path Language38 Alcune precisazioni Root node e document node Gli XPath assoluti iniziano sempre con /root (dove root è il nome dell'elemento radice), a parte /. Sono la stessa cosa? NO! Il nodo radice è più generale, e contiene l'elemento radice (corrispondente al tag radice), ma non coincide con lui Il nodo radice contiene la dichiarazione XML, la dichiarazione di tipo di documento (eventuali altre processing instruction) oltre al nodo dell'elemento radice, chiamato, per evitare confusioni, document element. Assi in ordine rovesciato La maggior parte degli assi identifica la posizione seguendo l'ordine degli elementi nel documento. Gli assi che indicano elementi precedenti al nodo (e.g., ancestor, preceding e preceding-sibling) vanno in ordine rovesciato, dunque preceding[1] viene dopo di preceding[2] ancestor[1] è il padre, non la radice

XPath - XML Path Language39 Alcune precisazioni Caratteri proibiti XPath viene usato in contesti con sintassi particolari (es. attributi XML o URI). In questi casi i caratteri leciti in XPath ma proibiti nel contesto vanno adeguatamente escapati. Da notare che – è sia un carattere lecito nei nomi XML sia un operatore matematico in XPath. Quindi è necessario precedere l'operatore matematico con uno spazio è diverso da - bar] ID in XPath La funzione id(foobar) richiede di identificare quell'elemento che abbia un attributo di tipo ID il cui valore sia foobar. E' necessario avere il DTD per riconoscere che un attributo è di tipo ID. Poiché i DTD non sono necessari nei documenti XML, questa funzione può essere verificata solo da un parser validante, e quindi non è universale.

XPath - XML Path Language40 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