XML. (extensible Markup Language) Seconda parte



Documenti analoghi
La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it

extensible Markup Language

XQuery. è lo standard adottato dal W3C per la XML. - Consente di iterare sugli elementi di un documento - Consente di ristrutturare i contenuti XML

Introduzione a XML: Document Type Definition; parser XML; XML-schema; extensible Stylesheet Language. a.a. 2004/05 Tecnologie Web 1

XSL: extensible Stylesheet Language

Corso di Laurea Specialistica in Ingegneria Informatica. Corso di Linguaggi e Tecnologie Web A. A Language) Stylesheet.

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

4 - XML e basi di dati

Infrastrutture INFormatiche Ospedaliere 2 Corso di laurea di Ingegneria Medica. Indice

Dati relazionali e XML

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

Database. Si ringrazia Marco Bertini per le slides

Modellazione e Gestione di Informazioni non Strutturate

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

DBMS (Data Base Management System)

Sistemi per la gestione di database: MySQL ( )

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

XML Schema Definition (XSD)

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Le Basi di Dati. Le Basi di Dati

Lezione V. Aula Multimediale - sabato 29/03/2008

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

Linguaggi per il web oltre HTML: XML

(anno accademico )

DATABASE RELAZIONALI

Introduzione ai database relazionali

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

G I O R D A N I A L E S S A N D R A I T T S E R A L E G. M A R C O N I

Introduzione all Information Retrieval

Introduzione ai Sistemi di Gestione di Basi di Dati XML

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Direzione Centrale Entrate Direzione Centrale Sistemi Informativi e Tecnologici. Roma, Messaggio n. 5880

La rubrica degli indirizzi di posta elettronica associati al dominio scuole.piemonte.it

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

XML e Sistemi per la Gestione di Basi di Dati Relazionali

I Sistemi Informativi

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

OSSIF WEB. Manuale query builder

Specifiche tecniche di trasmissione per i Comuni

Una metodologia di progettazione di applicazioni web centrate sui dati

I database relazionali (Access)

XML e Basi di Dati Corso di Basi di Dati 1. XML e basi di dati. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Access. P a r t e p r i m a

Organizzazione delle informazioni: Database

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Vincoli di integrità

Organizzazione degli archivi

Dispensa di database Access

Costruzione del layout in gino cms

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Come modificare la propria Home Page e gli elementi correlati

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

GAUDI SSPC: Tracciato XSD flussi G01-G03 Gestore di rete GAUDI-SSPC GESTIONE FLUSSI G01 G03. Descrizione Tracciati File XSD Terna per Gestore di rete

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

1. BASI DI DATI: GENERALITÀ

Tecniche Multimediali

BASE DI DATI: sicurezza. Informatica febbraio ASA

Operazioni sui database

19. LA PROGRAMMAZIONE LATO SERVER

CONCETTO DI ANNIDAMENTO

Definizione di domini

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Il linguaggio XML. Capitolo Introduzione al linguaggio XML

Definire linguaggi XML XSchema

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

5.6.1 REPORT, ESPORTAZIONE DI DATI

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Il linguaggio SQL: viste e tabelle derivate

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Laboratorio di Basi di Dati e Web

Volumi di riferimento

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Transcript:

XML (extensible Markup Language) Seconda parte

XML Schema: motivazione XML è lo strumento ideale per esprimere documenti di testo, ma è anche molto di più è uno strumento per trasferire DATI STRUTTURATI

XML Schema: motivazione un meccanismo per convertire i dati dal formato interno di un applicazione ad un formato di trasporto, che a sua volta può essere facilmente riconvertito nel formato interno di altre applicazioni

XML Schema: motivazione "Many data-oriented applications are being defined which build their own data structures on top of an XML document layer, effectively using XML documents as a transfer mechanism for structured data. (http://www.w3.org/tr/schema-arch)

XML Schema: motivazione Per esprimere documenti di testo i DTD possono essere sufficienti. Tuttavia, la gestione e il trasferimento di blocchi di dati strutturati (es. i record di un database) richiedono, in generale, un meccanismo di verifica più raffinato.

XML Schema: motivazione XML Schema è stato pensato per fornire quel supporto di validazione che i DTD permettono solo parzialmente (in particolare sul contenuto degli elementi e sui valori degli attributi dei documenti XML).

XML Schema: motivazione Tramite XML Schema, si può realizzare una interfaccia tra applicazione ed applicazione, esprimendo un contratto dettagliato sul formato e l organizzazione dei dati. Il rispetto di questo contratto permette l interoperabilità tra applicazioni differenti.

XML Schema: motivazione XML Schema applicazione 1 applicazione 2 XML formato interno 1 formato interno 2

XML Schema Documentazione ufficiale su XML Schema: http://www.w3.org/xml/schema http://www.w3.org/tr/xmlschema-0/ http://www.w3.org/tr/xmlschema-1/ http://www.w3.org/tr/xmlschema-2/ Non entriamo nei dettagli. Ci limitiamo ad alcune osservazioni di carattere generale.

XML Schema XML Schema usa XML come sintassi, mentre i DTD usano una sintassi propria e particolare, che richiede parser e strumenti di verifica appositi. Per contro, XML Schema è estremamente più verboso, tre o quattro volte più lungo del corrispondente DTD.

XML Schema : <xsd:simpletype> XML Schema prevede più di quaranta tipi semplici predefiniti: - string - float - double un tipo semplice - decimal non può contenere - boolean markup o attributi - date - ecc

XML Schema Ogni tipo semplice è caratterizzato da alcune proprietà, dette facets, che ne descrivono vincoli e formati (es: minlength, maxlength). È possibile derivare nuovi tipi, sia semplici che complessi (strutturati).

Formato di un XML Schema Un documento di XML Schema è racchiuso in un elemento <schema>, e può contenere, in varia forma ed ordine, i seguenti elementi: <import> ed <include> per inserire altri frammenti di schema da altri documenti.

Esempio schema <?xml version = 1.0?> <xsd:schema xmlns:xsd=http://www.w3.org./2001/xmlschema> <xs: element name= proprietario > type= xs:string /> <xs: element name= etichette > type= xs:string /> minoccurs = 1 maxoccurs= 4 /> <xs: element name= editore > type= xs:string /> use=< required /> <xs: element name= pubblicazione type= xs:date /> <xs: element name= inventario type= xs:integer /> use=< required /> Continua

Esempio schema segue 1 <xs: complextype> <xs: sequence> <xs: element name= titolo > type= xs:string /> <xs: element name= autore > type= xs:string /> minoccurs = 1 maxoccurs= unbunded /> <xs: element name= editore > type= xs:string /> use=< required /> </xs:sequence> </xs: complextype>

Esempio schema segue 2 tipi enumerati <xs: simpletype> <xs: restriction base= xs:string /> <xs: enumeration value= rivista /> <xs: enumeration value= rilegato /> </xs:restriction> </xs: simpletype> <xs: element name= formato default rilegato /> </xs: schema>

Formato di un XML Schema <xsd :simpletype> e <xsd: complextype> per la definizione di tipi denominati usabili in seguito. <xsd:element> ed <xsd: attribute> per la definizione di elementi ed attributi globali del documento. <xsd :attributegroup> e <xsd: group> per definire gruppi di attributi e gruppi di elementi.

Il gruppo come contenitore di elementi <xsd : group name = STAFFTYPE > complextype <xsd : sequence> <xsd : element name = Matricola type STMATTIPO /> <xsd : element name = Posizione type STPOSTIPO /> <xsd : element name = DataN type xsd:date /> <xsd : element name = Stipendio type STSTIPTIPO /> </xsd : sequence> </xsd : group>

Il gruppo richiamato x una lista <xsd : element name = Lista STAFF > <xsd : complextype > <xsd : sequence> <xsd : group ref = STAFFTYPE minoccours = 0 maxoccurs= unbounded /> </xsd : sequence> </xsd : complextype> </xsd : element>

Impongo per il contatto - Un solo telefono - Un solo indirizzo e-mail Unicità dei valori <?xml version="1.0" encoding="iso-8859-1"?> <rubrica> <contatto> <nome> Mario </nome> <cognome> Rossi </cognome> <telefono> 011-555-5678 </telefono> <email> mario.rossi@libero.it </email> </contatto> </rubrica>

unicità dei valori Imponendo vincoli di : -Unicità -Valore NON NULLO Specifica di chiave <xsd: unique name= soloquesti > <xsd:selector xpath : = contatto /> <xsd: field xpath := telefono /> <xsd: field xpath := email /> </xsd: unique> <?xml version="1.0" encoding="iso-8859-1"?> <rubrica> <contatto> <nome> Mario </nome> <cognome> Rossi </cognome> <telefono> 011-555-5678 </telefono> <email> mario.rossi@libero.it </email> </contatto> </rubrica>

Formato di un XML Schema <xsd: notation> per definire notazioni non XML all interno di un documento XML. <xsd :annotation> per esprimere commenti per esseri umani o per applicazioni diverse dal parser di XML Schema.

Vocabolario Insieme di comandi o nomi che possono essere utilizzati nello schema (es. element, sequence, group, etc ).

L identificazione dei vocabolari Il proliferare di specifiche basate su XML rende opportuno poter sfruttare vocabolari definiti altrove, purché ciò avvenga senza determinare conflitti e ambiguità all interno dei documenti. Uno stesso documento XML potrebbe contenere alcuni elementi definiti in un vocabolario ed altri in un altro.

L identificazione dei vocabolari Il problema è identificare esattamente l'ambito di ciascun elemento, conciliando la presenza di più vocabolari, e soprattutto conciliando la presenza di elementi aventi lo stesso nome ma differente significato. I namespace sono stati introdotti per rispondere a questa esigenza.

Vocabolario Insieme di comandi o nomi che possono essere utilizzati nello schema (es. element, sequence, group, etc ). I namespace permettono di identificare nomi di elementi e relazioni in documenti XML in modo da evitare conflitti nella definizione di elementi che: - hanno lo stesso nome - Sono definiti da piu di un vocabolario

Esempio posso creare due namespace: uno per le persone e uno per i siti <riferimento> <nome> Mario Rossi </nome> <indirizzo> Via Roma, 73 </indirizzo> </riferimento> <riferimento> <nome> XML Italia </nome> <indirizzo> http://www.xml.it </indirizzo> </riferimento>

Namespace in XML NAMESPACE: COLLEZIONE DI NOMI, associati a elementi e attributi di documenti XML, IDENTIFICATA DA UN URI (Uniform Resource Identifier) Visibilità al di fuori del singolo documento

Namespace <xsl:stylesheet xmlns: xsl =http://www.w3.org/tr/wd-xsl> Utilizzo di namespace per la definizione del foglio di stile

Esempio <riferimento xmlns:a= http://www.unica.it/prova/a/ xmlns:b= http://www.unica.it/prova/b> <a:nome> Mario Rossi </a:nome> <b:indirizzo> http://www.xml.it </b:indirizzo> </riferimento>

Namespace in XML N.B. I namespace servono a togliere l ambiguità sui nomi, non a definire i nomi. L URI che identifica il namespace non punta necessariamente a un DTD o a uno schema o a qualunque definizione.

Namespace e DTD È difficile far coesistere i DTD e i namespace (i primi sono nati con XML, i secondi sono stati introdotti successivamente) Per validare documenti XML contenenti namespace, occorre creare dei DTD che contengano la dichiarazione completa dei nomi con i prefissi

Namespace e XML Schema XML Schema offre invece un supporto estensivo per la qualificazione di elementi e attributi tramite namespace. Un documento può essere validato in relazione ad uno o più schemi: alle componenti di ciascuno schema è associato uno specifico namespace, detto targetnamespace

Namespace e XML Schema È possibile specificare regole di validazione solo su alcuni e non tutti i namespace che compaiono in un documento. È possibile dare indicazioni al parser per controllare la coesistenza con elementi di altri namespace.

Presentazione dei dati Oltre a definire il tipo di documento (conformità) e le regole di validità, occorre specificare le modalità secondo cui le applicazioni dovranno rappresentare i dati. CONTENUTO documento XML PRESENTAZIONE foglio di stile

Presentazione dei dati Il foglio di stile (stylesheet) specifica come devono essere rappresentati i singoli elementi del documento XML. I fogli di stile più semplici sono quelli a cascata (CSS), che offrono tuttavia funzionalità limitate (a ciascun elemento è assegnata una caratterizzazione puramente tipografica ).

Indicazione dello stile <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE rubrica SYSTEM "rubrica.dtd"> <?xml-stylesheet type="text/css" href="stile.css"?> <rubrica> <contatto> foglio di stile <nome> Mario </nome> <cognome> Rossi </cognome> <telefono> 011-555-5678 </telefono> <email> mario.rossi@libero.it </email> </contatto> </rubrica>

XSL (Extensible Stylesheet Language) Funzionalità più avanzate per la presentazione dei documenti XML sono offerte dal linguaggio XSL (Extensible Stylesheet Language). L XSL è definito tramite lo stesso XML ed è suddiviso in due parti: un linguaggio di trasformazione (XSLT) un linguaggio di formattazione (XSL:FO)

XSLT XSLT (XSL Transform): insieme di regole per selezionare ed elaborare il contenuto dei documenti Grazie all XSLT è possibile interpretare un file XML e trasformarlo in qualcos altro, ad esempio in HTML.

LE QUERY

XML Query Working Group Formato dal W3 nel 1999 per definire : - Un modello dei dati per documenti XML - Un insieme di OPERATORI per query su questo modello - Un LINGUAGGIO di Query su questi operatori

XQuery :cos e? - Linguaggio di Query di tipo dichiarativo - Fornisce una semplice sintassi per interrogare porzioni di documenti XML - Ricerca collezioni di documenti specificando un path simile ad una directory -Permette condizioni di qualifica sul path per semplificare la ricerca

XQuery : cos e? - XQuery è per XML l equivalente di SQL per i database - XQuery è basato su espressioni XPath - XQuery è supportato da tutti i piu popolari DBMS (Oracle,IBM,Microsoft etc ) -XQuery usa funzioni per estrarre i dati dai documenti XML: doc( nomefile ) apre il documento XML data(nome_elem) estrae i dati dall elemento

XPATH : a cosa serve XQuery usa espressioni XPath per navigare in XML. Ogni documento è visto come un albero La ricerca parte da un context node prosegue secondo una espressione XPath che specifica come navigare nel documento

Espressione XPATH E composta da una serie di step Separati da / come nelle usuali directory Ogni step consente, rispetto allo step precedente, uno spostamento in profondità nell albero che descrive il documento

Espressione XPATH Operatori nodo seleziona tutti i figli di un nodo / seleziona nodo radice // tutti i sottonodi del nodo corrente. nodo corrente.. tutti i genitori del nodo corrente @ seleziona gli attributi * ogni elemento del nodo @* ogni attributo del nodo

Predicati XPATH XQuery usa i predicati Xpath per limitare la selezione dei dati [i] i-esimo elemento della xpath expression [last()] ultimo elemento della xpath expression [last()-i] variazione del precedente [position()<i] elementi da i a i-1 della xpath expression. [@attname] nodi con attributo attname [@attname= val ] nodi con attributo attname=val [@attname> val ] nodi ii cui elementi soddifano espressione data

Location Path E composto da una sequenza di espressioni (location steps) separate dal carattere /

Location Path... / // /child::staff (/STAFF) child::staff (STAFF) attribute::nome (@nome) attribute::* (@*) child::staff[3] Significato Nodo contesto Genitore del nodo contesto Nodo radice Discendente nodo corrente Elementi STAFF figli della radice Elemento STAFF figlio delcontesto Attributo nome del nodo contesto Tutti gli attributi del contesto Terzo el. STAFF figlio context

Location path /child::staff[@nome=rossi] /child::staff[@nome=rossi] [position()=1] Significato Tutti gli elementi di staff il cui nome è instanziato con il valore Rossi Il primo elemento di staff il cui nome è instanziato con il valore Rossi

Esempi Di utilizzo di Xpath in una XQuery

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> <STAFF bn= B3 > <STAFFN> SL22</STAFFN> <NOME> <BNOME> Anna </BNOME> <COGNOME>Rossi </COGNOME></NOME> <POSIZIONE> Assistente </POSIZIONE> <DATA> 21-1-76 </DATA> <STIPENDIO> 1200 </STIPENDIO> </STAFF> <STAFFLIST>

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> Numero di staff (STAFFN)del primo componente dello staff doc( s-list.xml ) /STAFFLIST /STAFF[1] //STAFFN Apre file elemento nodostaff il suo codice doc( s-list.xml )/STAFFLIST/STAFF[1]//STAFFN oppure doc( s-list.xml )//STAFF[1]//STAFFN

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> Numero di staff dei primi DUE componenti dello staff doc( s-list.xml ) /STAFFLIST /STAFF[1 TO 2] //STAFFN Apre file elemento i primi 2 I loro codici doc( s-list.xml )/STAFFLIST/STAFF[1 TO 2]//STAFFN

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> COGNOMI componenti staff B5 doc( s-list.xml ) /STAFFLIST /STAFF[@BN= B5 ] //COGNOME doc( s-list.xml )/STAFFLIST/ STAFF [@BN= B5 ] //COGNOME Predicato che delimita la query

Altro esempio: specifiche DTD <!ELEMENT rubrica (contatto+) > <!ELEMENT contatto (nome, cognome, telefono, email*,eta?,sesso) > <!ELEMENT nome (#PCDATA) > <!ELEMENT cognome (#PCDATA) > <!ELEMENT telefono (#PCDATA) > <!ELEMENT email (#PCDATA) <!ELEMENT eta (#PCDATA)..segue

Altro Esempio: specifiche DTD <!ELEMENT sesso (maschio femmina) > <!ELEMENT maschio EMPTY> <!ELEMENT femmina EMPTY> <!ATTLIST contatto num ID #REQUIRED> <!ATTLIST contatto gruppo (casa amici lavoro) amici> <!ATTLIST contatto bestfriends IDREF #IMPLIED> <!ATTLIST nome nickname CDATA #IMPLIED>

Altro Esempio: le query doc ( rubrica.xml)/rubrica/contact/nome doc ( rubrica.xml)/rubrica/contact [@*] doc ( rubrica.xml)//contact/sesso/* doc ( rubrica.xml)//contact [@gruppo= amici ] doc ( rubrica.xml)//contact [eta>25]

Per gentile concessione IBM

Le FLWOR expressions (leggi FLOWER) Utilizzate per formulare le XQUERY FOR forvar IN espressione LET LetVar:=letEspressione [WHERE espressione filtro] [ORDER BY tipo di ordinamento] RETURN espressione Una FLWOR expression: -comincia con una o piu clausole FOR e/o LET -seguite da WHERE e ORDER opzionali -si conclude con una clausola RETURN

Le FLWOR expressions (leggi FLOWER) Utilizzate per formulare le XQUERY FOR seleziona un insieme di elementi LET assegna un insieme di elementi ad una variabile [WHERE espressione filtro:impone condizioni sui valori] [ORDER BY tipo di ordinamento] RETURN restituisce i risultati della query for $x in doc ( rubrica.xml ) //contact where $x/eta >20 and $x/eta <30 order by $x/nome return $x

Le FLWOR expressions (leggi FLOWER) for $p in doc ( rubrica.xml ) //contact where $p [@group= casa ] return $p/name I nomi degli appartenenti al gruppo casa for $p in doc ( rubrica.xml ) //contact [@group= family ] where $p/eta>20 and $p/eta<30 order by $p/nome return $p I nomi degli appartenenti al gruppo amici Di età compresa tra 20 e 30, in ordine alf.

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> <STAFF bn= B3 > <STAFFN> SL22</STAFFN> <NOME> <BNOME> Anna </BNOME> <COGNOME>Rossi </COGNOME></NOME> <POSIZIONE> Assistente </POSIZIONE> <DATA> 21-1-76 </DATA> <STIPENDIO> 1200 </STIPENDIO> </STAFF> <STAFFLIST>

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> documentoxml Cosa rende la query LET $STIP := 3000 RETURN doc( s-list.xml )//STAFF [STIPENDIO=$STIP] Lista lo staff con stipendio=3000 <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF>

FLWOR expressions Le clausole FOR e LET effettuano un binding di valori di una o piu variabili utilizzando path expressions. La clausola LET effettua il binding della variabile $STIP con una lista contenente tutti gli elementi STAFF L operatore = è detto operatore di confronto generale utilizzato per il confronto di 2 valori atomici Altri operatori : eq ne lt le gt ge

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> La clausola FOR è utilizzata iterativamente in tutti gli elementi STAFF del documento: Ad ogni iterazione si effettua il test dell elemento STIPENDIO e dell attributo bn <STAFFN> SL21</STAFFN> Cosa rende la query FOR $S IN doc( s-list.xml )//STAFF WHERE $S/STIPENDIO >1500 AND $S/@bn = B5 RETURN $S/STAFFN Lista i componenti dello STAFF B5 che hanno stipendio >1500

La clausola FOR Utilizzata per esprimere un iterazione Associa (tramite IN) ad una variabile ($S) una espressione che rende una lista di nodi. L esito di una for e una tupla stream che associa al valore assunto dalla variabile uno o piu items che verificano il valore espresso dall espressione WHERE associata.

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> <STAFFN> SL21</STAFFN> <STAFFN> SL22</STAFFN> Cosa rende la query FOR $S IN doc( s-list.xml )//STAFF ORDER BY $S/STAFFN DESCENDING RETURN $S/STAFFN Lista tutti gli STAFF in ordine decrescente di STAFFN

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> <FAMLIST> <FAM> <STAFFN> SL21</STAFFN> <NOME> Signora Mariarosa </NOME> </FAM> </FAMLIST> QUERY su piu documenti Lista gli STAFF che hanno familiari FOR $S IN doc( s-list.xml )//STAFF, $FAM IN doc( f-list.xml )//FAM, WHERE $S/STAFFNO = $FAM/STAFFN RETURN <FAMIGLIA> {$S, $FAM/NOME } </FAMIGLIA>

<FAMIGLIA> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> <NOME> Signora Mariarosa </NOME> </FAMIGLIA> Esito della Query Gli elementi di staff che non hanno parenti sono esclusi. FOR $S IN doc( s-list.xml )//STAFF, $FAM IN doc( f-list.xml )//FAM, WHERE $S/STAFFNO = $FAM/STAFFN RETURN <FAMIGLIA> {$S, $FAM/NOME } </FAMIGLIA>

<STAFFLIST> <STAFF bn= B5 > <STAFFN> SL21</STAFFN> <NOME> <BNOME> Gianni </BNOME> <COGNOME>Bianchi </COGNOME> </NOME> <POSIZIONE> Manager </POSIZIONE> <DATA> 13-10-48 </DATA> <STIPENDIO> 3000 </STIPENDIO> </STAFF> <FAMLIST> <FAM> <STAFFN> SL21</STAFFN> <NOME> Signora Mariarosa </NOME> </FAM> </FAMLIST> QUERY su piu documenti Lista gli STAFF con i familiari (Outer Join SX) FOR $S IN doc( s-list.xml )//STAFF RETURN <FAMSTAFF> {$S } {FOR $FAM IN doc( f-list.xml )//FAM WHERE $S/STAFFN=$FAM/STAFFN RETURN $FAM/NAME } </FAMSTAFF>