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

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

1 I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI.
I Namespace Mario Arrigoni Neri.
WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u Lesigenza e il funzionamento dei Namespace in XML.
LINGUAGGIO DI PROGRAMMAZIONE C
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
SQL applicato a SQL Server
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)
PHP.
Sintassi (prima parte)
XPath (XML Path Language)
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
XPath (XML Path Language) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
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.
ESPRESSIONI SENZA PARENTESI
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
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.
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
EQUAZIONI DI PRIMO GRADO
XML e XSL. XSL - eXtensible Stylesheet Language XSL è un linguaggio di annotazione che serve a "trasformare" la struttura di un documento in formato XML.
Basi di Dati II Sara Romano
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Introduzione e nozioni fondamentali di sintassi
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Elaborazione di Franco Grivet Chin
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net View State e controlli Elaborazione di Franco Grivet Chin.
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.
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
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
Parte 4 Elementi di Informatica di base
MODELLO LOGICO DEI DATI
Esecuzione dei programmi Prolog Liste ed operatori aritmetici
HTML Lezione 3 Stili.
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
XPATH.
JavaScript Generalità Cos'è JavaScript?
Script di shell (bash).
Introduzione a Javascript
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
I FILE I File sono l’ unità base di informazione nell’interazione tra utente e sistema operativo I File sono l’ unità base di informazione nell’interazione.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
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 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.
Documenti XML ben formati Altre componenti di un documento XML – Struttura dei documenti XML.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
XML (eXtensible Markup Language). XML è stato progettato per descrivere dati HTML è stato progettato per visualizzare dati XML (eXtensible Markup Language)
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

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

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)

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.

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.

XML Tree 1/2 <bib> <book price=“55”> <publisher>Addison-Wesley</publisher> <author>Serge Abiteboul</author> <author><first-name>Rick</first-name> <last-name>Hull</last-name> </author> <author>Victor Vianu</author> <title>Foundations of Databases</title> <year>1995</year> </book> <book> <publisher>Freeman</publisher> <author>Jeffrey D. Ullman</author> <title>Principles of Database and Knowledge Base Systems</title> <year>1998</year> </book> </bib>

XML Tree 2/2 The root The root element . . . . bib book book publisher author price=55 . . . . Addison-Wesley Serge Abiteboul

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 <library> <book> <chapter> </chapter> <chapter> <section> <paragraph/> <paragraph/> </section> </chapter> </book> </library>

Tipi di nodi Document: è il primo nodo e rappresenta l’intero documento XML. Questo nodo non corrisponde a nulla di visibile all’interno 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 l’attributo di un elemento del documento Text: contenuto testuale di un nodo (nodo foglia); Processing instruction: un nodo contenente un’istruzione da eseguire; Comment: un nodo utilizzato per commentare un documento XML; Namespace: un nodo associato ad un nodo Element che ne identifica il namespace

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..)

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

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 prova = il file (o directory) chiamato prova nella directory corrente section = ogni elemento section che è figlio dell’elemento corrente . = la directory corrente . = l’ elemento corrente .. = il padre dell’elemento corrente .. = la directory padre /users/sara/* = tutti i files in /users/dave /library/book/chapter/* = tutti gli elementi in /library/book/chapter

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 all’albero XML t. N.B. Per il modello di rappresentazione XML anche gli attributi e il testo sono nodi

locationStep1/locationStep2/.../locationStepn 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: locationStep1/locationStep2/.../locationStepn Con le regole abbreviate si possono definire solo alcuni percorsi e non tutti come nei location paths

axis::nodetest[filter1]…[filtern] Location Step Ogni location step ha la seguente forma: axis::nodetest[filter1]…[filtern] Un Axis, individua la direzione di specifica del location step nell’albero 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 l’insieme di nodi selezionati dal location step.

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;

Node test Il NodeTest identifica il tipo di oggetto da restituire. Se un’asse 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

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

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, 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).

Axis: esempi Partendo da un nodo, gli axis self, preceding, following, ancestor, e descendant si comportano nel seguente modo: <library> <book> <chapter/> <chapter> <section> <paragraph/> <paragraph/> </section> </chapter> <chapter/> </book> <book/> </library> //chapter[2]/self::* //chapter[2]/preceding::* //chapter[2]/following::* //chapter[2]/ancestor::* //chapter[2]/descendant::* Preceding e following selezionano ogni nodo del documento che sta prima o dopo il tag di chiusura del nodo corrente

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

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 nell’albero . - seleziona il nodo corrente .. - seleziona il padre del nodo corrente @ - per selezionare gli attributi dei nodi

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

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 livello; @* seleziona un nodo attribute; node() seleziona qualunque nodo

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;

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

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!

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”

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

Funzioni di XPath Un elenco delle funzioni fondamentali di XPath è il seguente: Funzioni che riguardano l’insieme dei nodi: fn:last() – Restituisce il numero di elementi nella node list che viene processata. Example: /book[last()] Risultato: Seleziona l’ultimo elemento book fn:position() – Restituisce l’indice 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.

Funzioni XPath Funzioni che riguardano l’insieme 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 dell’argomento 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

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. L’indice del primo carattere è 1. Example: substring('Beatles',1,4) Result: 'Beat' fn:stringlength(string) – Restituisce la lunghezza della stringa.

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

File XML di esempio <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book>   <title lang="eng">Harry Potter</title>   <price>29.99</price> </book> <book>   <title lang="eng">Learning XML</title>   <price>39.95</price> </book> </bookstore>

Esempi

Esempi

Riferimenti http://www.w3schools.com/xpath; www.w3.org/TR/xpath; Libro di testo “An introduction to XML”

Esercizi <bib> <book price=“55”> <publisher>Addison-Wesley</publisher> <author>Serge Abiteboul</author> <author><first-name>Rick</first-name> <last-name>Hull</last-name> </author> <author>Victor Vianu</author> <title>Foundations of Databases</title> <year>1995</year> </book> <book> <publisher>Freeman</publisher> <author>Jeffrey D. Ullman</author> <title>Principles of Database and Knowledge Base Systems</title> <year>1998</year> </book> </bib>

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

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