La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

XPath Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano.

Presentazioni simili


Presentazione sul tema: "XPath Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano."— Transcript della presentazione:

1 XPath Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano

2 XML XML eXtensible Markup Language è un metalinguaggio; sviluppato dal consorzio World Wide Web (W3C); Utilizzato per rappresentare dati semistrutturati (dati che presentano una forma di struttura che non è così regolare e completa come nel caso dei dati strutturati)

3 Struttura di XML caratterizzato da una struttura gerarchica; ciascun elemento (tag) rappresenta un componente logico del documento e può contenere altri elementi (sottoelementi) o testo; ogni elemento può avere associate delle informazioni aggiuntive attraverso la definizione di attributi; L'organizzazione degli elementi segue un ordine gerarchico che prevede un elemento principale che è chiamato root element.

4 Document tree Il root element contiene l'insieme degli altri elementi del documento. Un documento XML è rappresentato attraverso un albero, generalmente noto come document tree.

5 XML Tree 1/2 Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998

6 XML Tree 2/2 bib book publisherauthor.. Addison-WesleySerge Abiteboul The root The root element price=55

7 Un po di terminologia library è padre di book ; book è il padre dei due nodi chapter I due nodi chapter sono figli di book, e il nodo section è figlio del secondo nodo chapter I due nodi chapter (figli del nodo book) sono fratelli (sibling) library, book, e il secondo chapter sono antenati (ancestors) del nodo section I due nodi chapter, il nodo section, e il nodo paragraph sono discendenti (descendents) del nodo book

8 Tipi di nodi Document: è il primo nodo e rappresenta lintero documento XML. Questo nodo non corrisponde a nulla di visibile allinterno del documento ma rappresenta il documento stesso; Element: è un nodo che rappresenta un generico elemento del documento XML (etichette); Attribute: è un particolare nodo che viene associato ad un nodo Element ma non viene considerato come suo nodo figlio; rappresenta lattributo di un elemento del documento Text: contenuto testuale di un nodo (nodo foglia); Processing instruction: un nodo contenente unistruzione da eseguire; Comment: un nodo utilizzato per commentare un documento XML; Namespace: un nodo associato ad un nodo Element che ne identifica il namespace

9 Cosè XPath? XPath è un linguaggio utilizzato per selezionare parti di un documento XML; È uno standard W3C dal 1999; XPath contiene una libreria di oltre 100 funzioni standard (manipolazione stringhe, valori numerici ecc..)

10 XPath Non è un XML (la sintassi non è XML) ma viene utilizzato in XSLT e XQuery (indispensabile); Il modo in cui XPath definisce percorsi lungo lalbero XML per estrarre elementi è simile al modo in cui un sistema operativo definisce percorsi ai file. XQueryXSLTXPath

11 Paths Operating system: XPath: / = la root directory /library = il root element (se ha nome library ) /users/sara/prova = il file (o directory) chiamato prova in sara in users /library/book/chapter/section = tutti gli elemente section in un chapter in ogni book nella library. = la directory corrente. = l elemento corrente.. = la directory padre.. = il padre dellelemento corrente /users/sara/* = tutti i files in /users/dave /library/book/chapter/* = tutti gli elementi in /library/book/chapter prova = il file (o directory) chiamato prova nella directory corrente section = ogni elemento section che è figlio dellelemento corrente

12 Node List Una espressione XPath produce come risultato una node list. Definizione (Node List): Dato un albero XML T=(N, E), una Node List NL={n | n N} è un insieme di nodi di nodi n appartenenti allalbero XML t. N.B. Per il modello di rappresentazione XML anche gli attributi e il testo sono nodi

13 Location Path Una espressione XPath è detta location path; Con i location paths è possibile definire qualsiasi percorso; Un LP identifica un node set (insieme di nodi); Un LP è costituito da una successione di Location Steps separati dal simbolo / e letti da sinistra verso destra; Un LP ha la seguente forma: locationStep 1 /locationStep 2 /.../locationStep n

14 Location Step Ogni location step ha la seguente forma: axis::nodetest[filter 1 ]…[filter n ] Un Axis, individua la direzione di specifica del location step nellalbero e rispetto al nodo corrente; Un NodeTest individua il tipo e il nome completo del nodo identificato dal location step; Un Filter è un predicato che raffinano ulteriormente linsieme di nodi selezionati dal location step.

15 Axis Gli assi possibili sono 13: child, descendant: figlio diretto e a qualunque livello del context node. parent, ancestor: il genitore immediato a qualunque livello del context node. self: il context node. attribute: gli attributi del context node. preceding-sibling, following-sibling: i nodi allo stesso livello ma precedenti o seguenti il context node. preceding, following: i nodi a qualunque livello, ma fuori al context node, che precedono o seguono il context node. descendan-tor-self, ancestor-or-self: come descendant e ancestor, ma considerando anche il context node. namespace: il nodo namespace;

16

17 Node test Il NodeTest identifica il tipo di oggetto da restituire. Se unasse identifica un nodo o un attributo (attribute), questo può essere verificato attraverso un test sul nome; Il test può essere: NameTest: condizione vera se il nodo (che sia elemento o attributo) possiede quel nome. NodeType: tipologie di nodi che diventano condizione di filtro. Le tipologie di nodi sono: text() per identificare nodi di tipo testo, c comment() per identificare nodi di tipo commento, node() identifica un generico nodo

18 Filter 1/2 Un Filter è un predicato che filtra linsieme dei nodi rispetto alla direzione indicata dallaxis per produrre un nuovo insieme di nodi. Il filtro può essere attuato sulla posizione di un nodo o valutando unespressione booleana. In questo secondo caso il risultato è quel sottoinsieme di nodi, tra quelli individuati finora, per cui lespressione booleana è vera. Il filter è sempre racchiuso tra parentesi quadre […]

19 Filter 2/2 Predicato: [a] con a espressione booleana. EspressioneBooleana: a or b, a and b, not a, c, con a e b espressioni booleane e c espressione relazionale. EspressioneRelazionale: a=b, a!=b, a b, a= b, c, con c espressione aritmetica. EspressioniAritmetiche: a+b, a-b, a*b, a div b, a mod b, c, con c espressione di disgiunzione. EspressioniDisgiunzione: a | b, c, con c espressione di path. Espressione di Path: LocationPath o Espressione primaria. EspressionePrimaria: numero, lettera o chiamata funzione (XPath possiede un insieme di funzioni predefinite).

20 Axis: esempi Partendo da un nodo, gli axis self, preceding, following, ancestor, e descendant si comportano nel seguente modo: //chapter[2]/self::* //chapter[2]/preceding::* //chapter[2]/following::* //chapter[2]/ancestor::* //chapter[2]/descendant::*

21 Axis: vista ad albero paragraph[1] paragraph[2] section[1] chapter[2]chapter[1]chapter[3] book[1] book[2] library self ancestor descendant preceding following Partendo da un nodo, gli axis self, preceding, following, ancestor, e descendant si comportano nel seguente modo:

22 Sintassi abbreviata Nodename: seleziona tutti i nodi figli del nodo nodename / - Seleziona a partire dalla radice // - seleziona nodi nel documento a partire dal nodo corrente indipndentemente dalla loro posizione nellalbero. - seleziona il nodo corrente.. - seleziona il padre del nodo - per selezionare gli attributi dei nodi

23 Location steps e sintassi abbreviata child:: può essere omesso dal location step perchè è laxis di default bib/book è equivalente a child::bib/child::book attribute:: può essere sostituito descendant-or-self:: può essere sostituito da // self::node() può essere abbreviato con.. //book è labbreviazione di self::node()/descendant-or-self::node()/child::book parent::node() può essere sostituito con.. attribute::lang può essere sostituito da

24 Selezionare nodi Per selezionare un nodo posso fare riferimento al suo nodename Per selezionare un qualunque nodo (o attributo) indipendentemente dal nome posso usare: * seleziona nodi element di un seleziona un nodo attribute; node() seleziona qualunque nodo

25 Operatori di XPath Una espressione XPath restituisce un node-set o una stringa o un booleano, o un numero; Le espressioni XPath possono utilizzare i seguenti tipi di operatori: Operatori aritmentici; Operatori di confronto; Operatori booleani;

26 Operatori Aritmetici +addizione -sottrazione *moltiplicazione div divisione (non si può usare / ) mod modulo

27 Operatori di confronto 1/2 = equals != not equals Attenzione: valore = node-set è vera se il node-set contiene qualche nodo che ha valore uguale a valore valore ! = node-set è vera se il node-set contiene qualche nodo che non ha valore uguale a valore quindi, value = node-set e value ! = node-set may possono essere entrambe vere nello stesso momento!

28 Operatori di confronto 2/2 I seguenti operatori possono essere usati solo per confronti su valori numerici: < minore <= minore o uguale > maggiore >= maggiore o uguale

29 Operatori logici and or not() (function) price=9.80 or price=9.70 è vera se price è 9.80 falsa se price è 9.50 price>9.00 and price<9.90 è vera se price è 9.80 falsa se price è 8.50

30 Funzioni di XPath Un elenco delle funzioni fondamentali di XPath è il seguente: Funzioni che riguardano linsieme dei nodi: fn:last() – Restituisce il numero di elementi nella node list che viene processata. Example: /book[last()] Risultato: Seleziona lultimo elemento book fn:position() – Restituisce lindice della posizione del nodo che viene processato. Example: /book[position()<=3] Risultato: Seleziona i primi tre elementi book fn:count((item, item…)) – Restituisce il numero di nodi; fn:id((string, string,… ), node) – Restituisce una sequenza di nodi che hanno ID il cui valore è uguale a uno o più valori specificati.

31 Funzioni XPath Funzioni che riguardano linsieme dei nodi: fn:namespace-uri() – Restituisce il namespace URI del nodo corrente; fn:name() – Restituisce il nome del nodo corrente; Funzioni che riguardano le Stringhe: fn:string(arg) – Restituisce il valore stringa dellargomento Example: string(314) Result: "314" fn:concat(string, string,..) – Restituisce la concatenazione delle stringhe. Example: concat('XPath ','is ','FUN!') Result: 'XPath is FUN!' fn:starts-with() – Restituisce vero se seting1 inizia con string2, falso altrimenti. Example: starts-with('XML','X') Result: true

32 Funzioni XPath fn:substring-before() {substringafter()} – Restituisce la parte a sinistra di string1 prima che string2 si presenti. Example: substring-before('12/10','/') Result: '12' fn:substring(string,start,len) – Restituisce la sottostringa a partire dalla posizione start fino alla lunghezza specificata. Lindice del primo carattere è 1. Example: substring('Beatles',1,4) Result: 'Beat' fn:stringlength(string) – Restituisce la lunghezza della stringa.

33 Funzioni XPath Funzioni Numeriche: fn:number(arg) – Restituisce il valore numerico dellargomento. Example: number('100') Result: 100 fn:sum(arg, arg, …) – Restituisce la somma degli argomenti. fn:round() - Example: round(3.14) Result: 3

34 File XML di esempio Harry Potter Learning XML 39.95

35 Esempi

36

37 Riferimenti Libro di testo An introduction to XML

38 Esercizi Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998

39 Esercizi Qualè la forma abbreviata per: /child::bib/child::book /child::bib/child::book/attribute::price /descendant-or- self::node()/child::author/parent::node()

40 Esercizi Cosa producono queste espressioni? /bib/book/author[first-name] /bib/book/author[first- name][address[zip][city]]/last-name


Scaricare ppt "XPath Corso di basi di dati II Prof. Francesco Cutugno Dott. Sara Romano."

Presentazioni simili


Annunci Google