La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy)

Presentazioni simili


Presentazione sul tema: "1 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy)"— Transcript della presentazione:

1 1 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di dati Quarta edizione McGraw-Hill, 2014 Capitolo 14: Basi di dati per XML

2 2 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Sommario Definizione e storia di eXtensible Markup Language (XML) elementi attributi Schemi documentali: Document Type Definition (DTD) XML Schema Definition (XSD) Linguaggi di interrogazione e trasformazione XQuery XSL

3 3 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XML eXtensible Markup Language Formato di file proposto dal W3C per distribuire documenti elettronici sul World Wide Web Esempi di documenti elettronici: libri, manuali, cataloghi di prodotti, moduli d’ordine, giornali, formule matematiche, messaggi,...

4 4 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Evoluzione dei modelli dei dati NF2 Data Model Nested Relations Hierarchical Fields Predefined simple Types XML Data Model Self-defining Data Standard DDL Extended/Object Relational Data Model Objects & Functions Predefined complex Types Relational Data Model Flat Relations Predefined, simple Types Web data

5 5 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XML Concezione originale: un meta-linguaggio per la specifica di linguaggi di markup Come in HTML I dati XML sono documenti Le proprietà dei dati sono espresse mediante marcatura del contenuto Come nelle basi di dati Esiste un modello dei dati (DTD, XSD) Esistono linguaggi di query e trasformazione (XQuery, XSL) I dati sono neutri rispetto alle modalità di rappresentazione

6 6 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Evoluzione 1986: Standard Generalized Markup Language (SGML) ISO Novembre 1995: HTML 2.0 Gennaio 1997: HTML 3.2 Agosto 1997: XML W3C Working Draft Feb 10, 1998: XML 1.0 Recommendation Dec. 13, 2001: XML 1.1 W3C Working Draft Oct. 15, 2002 : XML 1.1 W3C Candidate Recommendation 2003 : XML 1.1 Standard

7 7 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XML XML HTML: insieme fisso di tagHTML: insieme fisso di tag XML: standard per creare linguaggi di markup con tag personalizzati (erede di SGML); possono essere usati in qualunque dominioXML: standard per creare linguaggi di markup con tag personalizzati (erede di SGML); possono essere usati in qualunque dominio HTML vs XMLHTML vs XML The Idea Methodology di S. Ceri, P. Fraternali Addison-Wesley US$ 49 The Idea Methodology S. Ceri P. Fraternali Addison-Wesley US$ 49

8 8 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio di documento XML Forno Frigo

9 9 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XML vs HTML XML non rimpiazza HTML!XML non rimpiazza HTML! XML e HTML sono nati con scopi diversi:XML e HTML sono nati con scopi diversi: XML progettato per descrivere DATI  cosa sono i datiXML progettato per descrivere DATI  cosa sono i dati HTML progettato per visualizzare i dati  come appaiono i datiHTML progettato per visualizzare i dati  come appaiono i dati

10 10 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Usi di XML Separare i dati dal modo con cui vengono visualizzatiSeparare i dati dal modo con cui vengono visualizzati Scambiare i dati tra sistemi eterogeneiScambiare i dati tra sistemi eterogenei Scambiare informazioni in sistemi B2BScambiare informazioni in sistemi B2B Condividere datiCondividere dati Memorizzare datiMemorizzare dati Supportare nei moderni browser visualizzazione, validazione, embedding in documenti HTML, trasformazioni con XSL, visualizzazioni con CSS È un documento di testo  il software che tratta documenti testuali tratta anche XMLÈ un documento di testo  il software che tratta documenti testuali tratta anche XML

11 11 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Sintassi XML (http://www.w3schools.com/xml) Un documento XML ben formato deve:Un documento XML ben formato deve: Cominciare con una direttiva standard che specifica la versione di XML, ad esempio:Cominciare con una direttiva standard che specifica la versione di XML, ad esempio: Il documento può contenere elementi. Ogni elemento può contenere sia testo che altri elementi. Un elemento dotato di contenuto è delimitato da due tag: uno di apertura e uno di chiusura. Il tag di chiusura deve avere lo stesso nome del tag di apertura, con in più il prefisso “/”. I nomi di tag sono case sensitive.Il documento può contenere elementi. Ogni elemento può contenere sia testo che altri elementi. Un elemento dotato di contenuto è delimitato da due tag: uno di apertura e uno di chiusura. Il tag di chiusura deve avere lo stesso nome del tag di apertura, con in più il prefisso “/”. I nomi di tag sono case sensitive.

12 12 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Sintassi XML (http://www.w3schools.com/xml) In un documento XML ben formato:In un documento XML ben formato: Se un elemento è privo di contenuto, ha un solo tag, che deve terminare con il simbolo “/>”.Se un elemento è privo di contenuto, ha un solo tag, che deve terminare con il simbolo “/>”. Il documento deve avere un elemento radice che racchiude l’intero contenuto.Il documento deve avere un elemento radice che racchiude l’intero contenuto. Se un elemento contiene sotto-elementi, il tag di chiusura di ciascun sottoelemento deve precedere il tag di chiusura del sopra-elemento.Se un elemento contiene sotto-elementi, il tag di chiusura di ciascun sottoelemento deve precedere il tag di chiusura del sopra-elemento. I valori degli attributi degli elementi devono essere contenuti tra virgolette (singole o doppie).I valori degli attributi degli elementi devono essere contenuti tra virgolette (singole o doppie).

13 13 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elementi Forno a ventilazione forzata 624 Possono avere un contenuto (testo o altri elementi) Sono in relazione gerarchica (padre-figlio) Possono avere attributi

14 14 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Attributi Forno 104 Proprieta con valori di tipo stringa I valori vanno racchiusi tra “ ” Differiscono dagli elementi perché non possono contenere elementi figli In genere sono usati per memorizzare metadati, ad esempio l’identificatore di un elemento, la data di creazione o modifica di un dato, ecc..In genere sono usati per memorizzare metadati, ad esempio l’identificatore di un elemento, la data di creazione o modifica di un dato, ecc..

15 15 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l.Namespace Metodo per evitare conflitti di nome

....
Si introduce un prefisso ... Un XML namespace è una collezione di nomi (attributi, elementi,…), identificata da un URI (Uniform Resource Identifier) URI = nozione estesa di URL (Uniform Resource Locator) Un documento XML può far riferimento ad oggetti diversi (DTD, documenti XML, etc.). È più importante identificare un oggetto che localizzarlo

16 16 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Document Type Definition (DTD) Detta il tipo di un documento, cioè:Detta il tipo di un documento, cioè: i tag ammessii tag ammessi le regole di annidamento dei tagle regole di annidamento dei tag Scopi:Scopi: Accordarsi su formato/struttura dei documentiAccordarsi su formato/struttura dei documenti Validare documenti XML secondo certe regoleValidare documenti XML secondo certe regole Esempio di dichiarazione di un elemento:Esempio di dichiarazione di un elemento: L’elemento prodotto contiene al suo interno un elemento descrizione seguito da un elemento prezzo

17 17 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Validazione di un documento XML Un documento XML la cui sintassi è corretta (cioè soddisfa le regole di scrittura di documenti XML) è detto “well-formed” (ben formato) Un documento che rispetta i vincoli dettati da un DTD è detto “valid” (valido)

18 18 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Modello di contenuto Elementi con un elemento figlioElementi con un elemento figlio … … Elementi con una sequenza di elementi figliElementi con una sequenza di elementi figli … … … … … … … … Elementi con contenuto di tipo PCDATA (parsed character data = brano di testo qualunque)Elementi con contenuto di tipo PCDATA (parsed character data = brano di testo qualunque) Un testo qualsiasi Un testo qualsiasi

19 19 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Modello di contenuto Contenuto alternativoContenuto alternativo.... Contenuto mistoContenuto misto testo testo.... Elementi vuoti Elementi vuoti Contenuto arbitrario Contenuto arbitrario del testo libero del testo libero Luca del testo libero Luca del testo libero

20 20 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Occorrenze di un sottoelemento 1 volta1 volta 1 o più volte1 o più volte 0 o più volte0 o più volte 0 o 1 volta 0 o 1 volta

21 21 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio di DTD Forno Frigo NOTA: un DTD NON è un documento XML

22 22 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Dichiarazioni di attributi Per ogni elemento dice:Per ogni elemento dice: quali attributi può avere che valori può assumere ciascun attributo se esiste e qual è il valore di default Esempio di dichiarazione di attributo:Esempio di dichiarazione di attributo:

23 23 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Tipi di attributi CDATA: dati di tipo carattereCDATA: dati di tipo carattere (val1 | val2 | val3): un valore della lista(val1 | val2 | val3): un valore della lista ID: identificatoreID: identificatore IDREF, IDREFS: valore di un attributo di tipo ID nel documento (o insieme di valori)IDREF, IDREFS: valore di un attributo di tipo ID nel documento (o insieme di valori) ENTITY, ENTITIES: nome (nomi) di entitàENTITY, ENTITIES: nome (nomi) di entità NMTOKEN, NMTOKENS: caso ristretto di CDATA (una sola parola o insieme di parole)NMTOKEN, NMTOKENS: caso ristretto di CDATA (una sola parola o insieme di parole) codice ID #REQUIRED label CDATA #IMPLIED Status (disponibile|terminato) ‘disponibile’

24 24 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Vincoli sugli attributi #REQUIRED: il valore deve essere specificato#REQUIRED: il valore deve essere specificato #IMPLIED: il valore può mancare#IMPLIED: il valore può mancare #FIXED “valore”: se presente deve coincidere con “valore”#FIXED “valore”: se presente deve coincidere con “valore” Default : si può specificare un valore come default, usato quando l’attributo è mancanteDefault : si può specificare un valore come default, usato quando l’attributo è mancante  vale 10  vale 15

25 25 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Un esempio completo

26 26 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Relazione tra documento e DTD DTD esternoDTD esterno.. DTD internoDTD interno ..

27 27 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XML Schema Storia: - inizialmente proposto da Microsoft - divenuto W3C recommendation (maggio ‘01) Scopo: definire gli elementi e la composizione di un documento XML in modo più preciso del DTD Un XML Schema definisce regole riguardanti: Elementi Attributi Gerarchia degli elementi Sequenza di elementi figli Cardinalità di elementi figli Tipi di dati per elementi e attributi Valori di default per elementi e attributi

28 28 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSD vs DTD XML Schema = insieme di elementi XML standard per definire schemi di documenti detti XSD = XML Schema Definition: schema di un tipo di documenti Gli XSD sono: Estendibili (ammettono tipi riusabili definiti dall’utente) In formato XML Più ricchi e completi dei DTD Capaci di supportare tipi di dati diversi da PCDATA Capaci di gestire namespace multipli

29 29 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Documento XML con riferimento a XSD Tove Jani Reminder Don’t forget me this weekend! Note: xmlns: namespace di default xmlns:xsi: URI (Universal Resource Identifier) che introduce l’uso dei tag di XML Schema xsi:schemaLocation: dichiara dove reperire il file XSD (sempre attraverso URI)

30 30 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio di XML Schema xs: namespace per XSchema (contiene tutti i tag XSD)

31 31 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elementi semplici (Simple elements) Possono contenere solo testo (no elem. o attributi) Forme di dichiarazione: Tipi: stringhe, numerici, date, time, Boolean, ecc.. Esempi di definizione di elementi semplici in XSD Esempi di elementi semplici XML 65 Rossi

32 32 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Attributi Definizione di attributi Esempio di definizione di attribute Esempio di uso di un attributo qwerty Valore di default o fisso Obbligatorio o opzionale

33 33 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Restrizioni Consentono di dichiarare vincoli sui valori di un tipo elementare (detti tipi base)

34 34 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Enumerazione Particolare tipo di restrizione che consente di enumerare i valori di un elemento o attributo

35 35 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elementi complessi (Complex elements) Esistono quattro tipi di elementi complessi: Vuoti (empty) Contenenti solo altri elementi Contenenti solo testo Contenenti testo e/o altri elementi Sintassi per definire elementi complessi:.. element content..

36 36 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Costrutto sequence Sequenza (= record): gli elementi devono apparire nell’ordine indicato La sequenza può contenere sia sottoelementi che attributi

37 37 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Costrutto sequence con attributi

38 38 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Specifica del contenuto: costrutto all Come la sequenza ma gli elementi possono apparire nel documento in qualsiasi ordine

39 39 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Costrutto choice Sequenza (= OR) Gli elementi interni appaiono in alternativa nel documento

40 40 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elementi EMPTY Gli elementi senza sottoelementi interni si dichiarano come complex type privi di sottoelementi

41 41 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elementi MIXED Esempio Dear Mr. John Smith. Your order 1032 will be shipped on

42 42 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Specifica della cardinalità Indica la cardinalità dei sotto-elementi La sintassi prevede l’uso di due attributi: maxOccurs: max numero di occorrenze minOccurs: min numero di occorrenze Se non specificati: default = 1

43 43 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Definizioni di tipi riusabili Consente di definire tipi e riusarli per: Tipare attributi Definire altri tipi ATTENZIONE: Definizione di tipo, non di elemento Riuso del tipo, per definire elementi/attributi

44 44 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Definizione di gruppi di elementi Consente di definire blocchi di elementi e riusarli per definire altri tipi o elementi (si può fare anche con attributi, usando attributeGroup) Definizione di gruppo riusablie Riuso di “custGroup”

45 45 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Altre caratteristiche di XML Schema Estensioni di tipi Costrutti ANY/ANYATTRIBUTE Elementi contenenti solo testo, testo e attributi

46 46 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Riferimenti

47 47 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSL

48 48 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSL Standard W3C: 16 novembre 1999 (1.0) XSL = eXtensible Stylesheet Language Un foglio di stile è un file in cui sono condensate le specifiche modalità di presentazione si può quindi separare (più o meno nettamente) la definizione dei contenuti dalla loro resa grafica

49 49 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Fogli di stile 1996: DSSSL - standard che definisce fogli di stile per SGML (ISO/IEC 10179:1996) : CSS - fogli di stile per HTML - sono attualmente disponibili due specifiche: CSS1 e CSS2 (approvati dal W3C rispettivamente nel Dicembre 1996 e nel Maggio 1998) Agosto 1997: Microsoft, Arbortext e Inso Corp. sottopongono la specifica XSL al W3C (sottoinsieme di DSSSL) per dati XML altamente strutturati - è diventato standard nel 1999

50 50 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSL Linguaggio per rappresentare l’output di XML formattato e per convertire un documento XML in un altro documento (XML, HTML, o qualunque formato) Usa la notazione XML

51 51 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSLT XSL = XSLT + XSL FO XSLT (XSL Transformation) Trasforma un documento XML in un altro documento XML o altro tipo di documento (HTML, ecc.) Può: aggiungere nuovi elementi; rimuovere elementi presenti; riorganizzare gli elementi; decidere quali visualizzare, ecc. XSL FO (Formatting Object) contiene le istruzioni per formattare l’output di un documento XML

52 52 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSLT XML XSLT XML XSLHTML

53 53 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XSLT Utilizza XPath per definire le parti del documento sul quale effettuare le trasformazioni Per gli elementi sui quali devono essere applicate le trasformazioni vengono definiti dei template

54 54 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Template Per assegnare uno stile ad un particolare elemento XML oppure per applicare delle trasformazioni si usa un template nel foglio di stile Il foglio di stile può essere eseguito da un processore XSLT che scandisce il documento XML sorgente, identifica gli elementi per i quali è stato definito un template nel foglio di stile, ed effettua le azioni specificate nel template.

55 55 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio di template (1) … La clausola match definisce su quali elementi si applica il template Per ogni elemento si possono specificare più template (si applica il più specifico oppure si assegna una priorità per l’applicazione) Un template può specificare lo stile per più elementi

56 56 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio di template (2) All’interno del template si specifica come si devono processare gli elementi figli (xsl:apply-templates) Nell’esempio: gli elementi “paragrafo” diventano oggetti di formattazione “blocco” che vengono visualizzati con 10 punti e 12 punti di spazio dopo ogni blocco

57 57 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Match Si possono specificare gli elementi figli da processare utilizzando i seguenti simboli: | operatore or. Elemento corrente // discendenti / figli.. identifica un attributo first-of-any(), first-of-type() last-of-any(), last-of-type()

58 58 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Struttura di un documento XSL xsl:stylesheet template per il documento (template per un elemento figlio)* azione sul documento azione sull’elemento figlio [azione] [azione] [azione]...

59 59 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Intestazione Il foglio di stile è interamente contenuto in un tag di tipo xsl:stylesheet, e inizia con una intestazione come segue: Possiamo riconoscere due dichiarazioni: spazio dei nomi e numero di versione. Lo spazio dei nomi è obbligatorio, e deve utilizzare l'URL mostrato. Serve a distinguere il particolare formato XSLT utilizzato. Il numero di versione serve a distinguere un foglio di stile che usa un certo standard da eventuali future revisioni. Tutte le regole di trasformazione sono contenute nel corpo di questo tag.

60 60 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. match specifica il nodo da sostituire L'attributo match usa una espressione XPath per specificare a quali nodi si deve applicare. Nella maggior parte dei casi seleziona solo uno specifico tipo di nodo. C'è da tenere presente che le espressioni XPath sono relative al nodo corrente. Quindi indicare solamente un tipo di nodo permette di selezionare uno dei figli del nodo corrente. In ogni caso è abbastanza frequente specificare nodi che non sono figli del nodo corrente, come pure è possibile selezionare attributi o altri elementi del documento XML.

61 61 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio Questa regola serve a iniziare la trasformazione di documento. Il nodo radice viene trasformato in un documento HTML con lo sfondo bianco che contiene una tabella.

62 62 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Mode, modalità di processing L'attributo mode permette di applicare un template in casi diversi. La modalità viene specificata da apply-templates. Così si possono avere due template con la stessa espressione di match (si riferiscono agli stessi nodi) ma usati in casi distinti. Per esempio, un template per costruire l'indice e un altro per il corpo del documento, ma che si applicano agli stessi in momenti diversi.

63 63 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Name, nome di un template Un template può avere un nome e può venire chiamato esplicitamente utilizzando xsl:call-template, per di più specificando dei parametri. Definizione Uso

64 64 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. xsl:apply-templates A xsl:apply-templates si ricorre all'interno di un template. Serve a selezionare i nuovi nodi che devono essere aggiunti alla lista corrente. Se non viene specificato alcun attributo vengono selezionati tutti i nodi figli del nodo corrente. Si specifica con l'attributo select, usando XPath, quali nodi devono essere ulteriormente elaborati. Non necessariamente sono figli ma posso essere i nipoti oppure degli antenati, o ancora possono essere trattati in maniera particolare gli attributi.

65 65 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. xsl:for-each equivale a (senza una regola)

66 66 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. xsl:value-of È infatti possibile utilizzare delle espressioni che calcolano l'output. Il corpo della regola non contiene altri tag ma semplicemente xsl:value-of. Questo comando serve a produrre un output calcolato.

67 67 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. xsl:value-of Nell'esempio si seleziona il nodo corrente (.). Le regole per il calcolo del valore di un nodo (valore che viene inviato nell'output) sono abbastanza intuitive: Il valore di un nodo testo è uguale al testo stesso. Il valore di un nodo tag è uguale alla concatenazione dei valori dei nodi contenuti.

68 68 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. value template Gli attributi in output hanno una prerogativa: possono essere calcolati senza utilizzare xsl:value-of (attribute value template) Negli attributi si possono inserire espressioni tra graffe. Il valore dell'attributo non è scritto esplicitamente ma calcolato in base all'espressione tra graffe. Ciò che è fuori dalle graffe è considerato testo normale (copiato così com'è) mentre l'espressione tra graffe viene calcolata, come la select di xsl:value-of. L'espressione dell'esempio imposta l'attributo value uguale all'attributo title del document.

69 69 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Output Fin qui abbiamo costruito l'output semplicemente copiando i tag che non fanno parte dell'XSLT. Ma in generale possiamo creare tag arbitrari, con nomi derivati dall'input. Per fare questo usiamo una serie di comandi che permettono di comporre a volontà l'output.

70 70 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Document / Element Elenco Element Libro Element Libro Element Libro Element Titolo Element Autore Element Data Element ISBN Element Editore... Text Il signore.. Text Tolkien Text 2002 Text … Text Bompiani azione Estrarre il testo azione

71 71 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Trasformazione Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli

72 72 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elenco libri … Creare un documento HTML

73 73 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Trasformazione Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli Book Catalogue Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli

74 74 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio: creare una tabella Elenco libri Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli

75 75 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Elenco libri Esempio: creare una tabella

76 76 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Trasformazione XML-XML Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli Il Signore degli Anelli Bompiani Il nome della rosa Il sospetto Feltrinelli Il nuovo elenco per ogni libro contiene solo il loro titolo e, se questo è disponibile, anche la sua casa editrice.

77 77 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Trasformazione XML-XML

78 78 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Associare un foglio di stile ad un documento XML Il Signore degli Anelli J.R.R. Tolkien Bompiani …

79 79 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Linguaggi di interrogazione per XML

80 80 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Interrogazione di dati XML XML è un formato di rappresentazione di dati semi- strutturati Un insieme di documenti o anche un singolo documento (ad es: la Divina Commedia) possono essere considerati come depositi interrogabili di informazione Nasce l’esigenza di tecnologie di memorizzazione persistente e di interrogazione di dati in formato XML

81 81 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XQuery Linguaggio “alla SQL” per l’interrogazione di dati XML, definito da W3C Inizio lavori 1998 Proposta W3C: 15 Febbraio 2001 Si basa su XPath per identificare frammenti XML

82 82 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio di documento Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli File: libri.xml

83 83 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Path expression in XPath Idea: usare una sintassi simile a quella dei pathname dei file per “navigare” la struttura ad albero di un documento Una espressione XPath è una stringa contenente nomi di elementi e operatori di navigazione e selezione:.Nodo corrente..Nodo padre del nodo corrente / nodo radice, o figlio del nodo corrente //discendente del nodo del nodo corrente *qualsiasi nodo [p]predicato (se l’espressione p, valutata, ha valore booleano) [n]posizione (se l’espressione n, valutata, ha valore numerico)

84 84 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempi base di path expressions Una path expression può iniziare con doc(posizione_documento) Restituisce l’elemento radice del documento specificato e tutto il suo contenuto: doc (“libri.xml”) A partire dalla radice del documento si possono specificare delle espressioni per estrarre il contenuto desiderato Esempio: doc (“libri.xml”)/Elenco/Libro Restituisce la sequenza di tutti gli elementi di tipo Libro contenuti nel documento libri.xml

85 85 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempi di path expressions doc (“libri.xml”)/Elenco/Libro Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli c Il Signore degli Anelli J.R.R. Tolkien Bompiani Il nome della rosa Umberto Eco Bompiani Il sospetto F. Dürrenmatt Feltrinelli

86 86 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Condizioni su elementi/attributi Esempio: doc (“libri.xml”)/Elenco/Libro[Editore=‘Bompiani’]/Titolo Restituisce la sequenza di tutti i titoli dei libri dell’editore Bompiani che si trovano nel documento Risultato: Il Signore degli Anelli Il nome della rosa

87 87 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Ricerca di sotto-elementi a qualsiasi livello Esempio: doc(“libri.xml”)//Autore Restituisce la sequenza di tutti gli autori che si trovano nel documento libri.xml, annidati a qualunque livello J.R.R. Tolkien Umberto Eco F. Dürrenmatt

88 88 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Condizione sulla posizione dei sottoelementi e uso di wildcard Esempio: doc (“libri.xml”)/Elenco/Libro[2]/* Restituisce tutti i sottoelementi (*) contenuti nel secondo libro del documento libri.xml Il nome della rosa Umberto Eco Bompiani

89 89 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. XQuery Linguaggio “alla SQL” per l’interrogazione di dati XML, definito da W3C Si basa su XPath per identificare frammenti XML È BASATO SULLA ELABORAZIONE DI SEQUENZE DI NODI

90 90 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Espressioni FLWOR Una interrogazione XQuery è un’espressione complessa che consente di estrarre parti di un documento e costruire un altro documento Si basa (tipicamente) su 5 clausole (cfr SQL): FORiterare i valori di variabili su sequenze di nodi LET legare variabili a intere sequenze di nodi WHERE esprimere condizioni sui legami effettuati ORDER BY imporre un ordinamento alla sequenza risultante RETURN costruire il risultato (strutturato - cfr select in OQL)

91 91 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Espressioni FOR Esempio: for $libro in doc(“libri.xml”)//Libro return $libro La clausola for valuta la path expression, che restituisce una sequenza di elementi, e la variabile $libro itera all’interno della sequenza, assumendo ad ogni iterazione il valore di un nodo (libro) diverso La clausola return costruisce il risultato, in questo caso l’interrogazione restituisce semplicemente ogni valore legato a $libro - cioè di tutti i libri del documento

92 92 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Espressioni FOR annidate Le espressioni FOR possono essere annidate: for $libro in doc(“libri.xml”)//Libro for $autore in $libro/Autore return $autore Semantica: per ogni valore di $libro (libro), per ogni valore di $autore (un autore del libro corrente), inserisci nel risultato l’autore legato a $autore

93 93 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Espressioni LET Consentono di introdurre nuove variabili: let $libri := doc(“libri.xml”)//Libro return $libri La clausola let valuta l’espressione (//Libro) e assegna alla variabile $libri l’intera sequenza restituita La valutazione di una clausola let assegna alla variabile un singolo valore: l’intera sequenza dei nodi che soddisfano l’espressione La query dell’esempio precedente è esprimibile come: for $libro in doc(“libri.xml”)//Libro let $a := $libro/Autore (: $a vale l’intera sequenza degli autori del libro :) return $a

94 94 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Espressioni LET for $libro in doc(“libri.xml”)//Libro let $a := $libro/Autore return { $libro/titolo } { $a } for $libro in doc(“libri.xml”)//Libro for $a := $libro/Autore return { $libro/titolo } { $libro/titolo } { $a }

95 95 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. FLWR expressions: interpretazione FOR : iterazione ogni valore nella sequenza partecipa a una diversa “tupla di legami” LET : assegnamento di una sequenza a una variabile (non aumenta il numero di tuple di legami) WHERE : filtraggio viene valutata su ogni tupla separatamente, filtrandole in base alle condizioni espresse RETURN : ricostruzione è eseguita una volta per ciascuna tupla di legami

96 96 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Clausola WHERE La clausola WHERE esprime una condizione: solamente le tuple che soddisfano tale condizione vengono utilizzate per invocare la clausola RETURN Le condizioni nella clausola WHERE possono contenere diversi predicati connessi da AND e OR. Il not() è realizzato tramite una funzione che inverte il valore di verità Esempio: for $libro in doc (“libri.xml”)//Libro where $libro/Editore=“Bompiani” and return $libro Restituisce tutti i libri pubblicati da Bompiani che sono disponibili

97 97 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Clausola WHERE Spesso le clausole where possono essere omesse usando opportune Path Expression Esempio: for $libro in doc(“libri.xml”)//Libro[Editore=“Bompiani” return $libro Restituisce tutti i libri pubblicati da Bompiani che sono disponibili

98 98 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Clausola RETURN Genera l’output di un’espressione FLWR che può essere: Un nodo Una “foresta” ordinata di nodi Un valore testuale (PCDATA) Può contenere dei costruttori di nodi, dei valori costanti, riferimenti a variabili definite nelle parti FOR e LET, ulteriori espressioni annidate F. Dürrenmatt J.R.R. Tolkien Umberto Eco F. Dürrenmatt

99 99 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Clausola RETURN Un costruttore di elemento consta di un tag iniziale e di un tag finale che racchiudono una lista (opzionale) di espressioni annidate che ne definiscono il contenuto Esempio: for $libro in doc(“libri.xml”)//Libro where $libro/Editore=“Bompiani” return { $libro/Titolo } nuovo elemento Il Signore degli Anelli Il nome della rosa espressione annidata

100 100 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Clausola RETURN Esempio (variante): for $libro in doc(“libri.xml”)//Libro where $libro/Editore=“Bompiani” return { $libro/Titolo/text() } Il Signore degli Anelli Il nome della rosa estrae il solo contenuto PCDATA di un elemento

101 101 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. “Cardinalità” delle sequenze costruite nel risultato La clausola return è eseguita tante volte quanti sono i distinti assegnamenti delle “tuples of bound variables” Nel seguente esempio, in base alla semantica della clausola let, la return è eseguita una sola volta (si nota che il nuovo tag è creato una sola volta): let $libri := doc(“libri.xml”)//Libro[ Editore=“Bompiani” ] return { $libri/Titolo } Il Signore degli Anelli Il nome della rosa Path expression che inizia da una sequenza

102 102 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Ordinare il risultato Esempio: for $libro in doc(“libri.xml”)//Libro order by $libro/Titolo return { $libro/Titolo, $libro/Editore } I libri vengono ordinati rispetto al titolo I matching della variabile, inizialmente generati in “document order”, sono riordinati prima di essere passati alla clausola return per generare il risultato

103 103 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Funzioni aggregate Esempio: for $e in doc(“libri.xml”)//Editore let $libro := doc(“libri.xml”)//Libro[Editore = $e] where count($libro) > 100 return $e Restituisce gli editori con oltre 100 libri in elenco ATTENZIONE: la “cardinalità” del risultato, cioè il numero di editori, dipende da quante volte è eseguita la return, e questo a sua volta dipende dalle clausole for (la clausola let non influenza tale cardinalità) Ogni editore “promosso” viene restituito oltre cento volte !!!

104 104 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. distinct-values() Iteriamo $e solo sui distinti valori di Editore: for $e in distinct-values( doc(“libri.xml”)//Editore ) let $libro := doc(“libri.xml”)//Libro[Editore = $e] where count($libro) > 100 return $e Restituisce gli editori con oltre 100 libri in elenco Ogni editore “promosso” è considerato una sola volta (si “candida” una sola volta ad essere filtrato da parte della clausola where)

105 105 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Espressioni condizionali Estrarre, per ogni libro con almeno un autore, il titolo e i primi due autori, aggiungendo un elemento vuoto et-al se il libro ha più di due autori. { for $book in doc("libri.xml")//libro where count($book/autore) > 0 return {$book/titolo} {for $author in $book/autore[position()<=2] return $author } {if (count($book/autore) > 2) then else () } }

106 106 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Costruzione di strutture con attributi Estrarre una lista con un elemento per ogni libro, e il numero degli autori di ciascuno inserito come attributo { for $libro in doc("libri.xml")//libro let $authors := $libro/autore return }

107 107 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Comandi di aggiornamento XQuery Update permette di esprimere comandi di modifica Inserire come autore Italo Calvino nel libro intitolato «Il Visconte dimezzato» insert node Italo Calvino as first into doc ("libri.xml")//libro[titolo="Il Visconte dimezzato"] Rimuovere il secondo autore dal libro intitolato «Il Visconte dimezzato» delete node doc ("libri.xml")//libro[titolo="Il Visconte dimezzato"]/autore[position()=2]

108 108 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Estensioni in XQuery 3.0 XQuery 3.0 ha introdotto alcune novità Clausola group by Consente di esprimere raggruppamenti in modo più compatto ed efficace rispetto a XQuery 1.0 Opzione allowing empty nel for nidificato Equivalente al join esterno (outer join) di SQL Supporto per la gestione di flussi (stream) di dati

109 109 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Basi di dati XML Due principali famiglie di sistemi Basi di dati XML native Sfruttano tecnologie specifiche per XML per memorizzare e indicizzare collezioni di documenti Adottano linguaggi di interrogazione specifici per XML (es: XQuery) Basi di dati relazionali con supporto XML Usano il modello relazionale, esteso in modo opportuno per supportare dati XML Sfruttano estensioni di SQL per l’interrogazione (es: SQL/XML)

110 110 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Basi di dati XML native Adottano un modello logico dei dati non-relazionale, standard o proprietario ES: DOM, XPath Data Model, XML Information Set Utilizzano schemi fisici di memorizzazione proprietari: ES: metodi basati su testo (CLOB), metodi mutuati dalle basi ad oggetti Sono in grado di gestire tutte le caratteristiche sintattiche dei documenti (si parla di document-centric XML data) ES: entity, ordine dei sottoelementi, commenti ecc.. Organizzano i dati in collezioni di documenti, con un ruolo simile alle istanze di database dei sistemi relazionali Esempi di DBMS: Tamino, Xyleme, ecc..

111 111 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Basi di dati relazionali con supporto XML Memorizzano internamente i documenti XML in tabelle Implicano una conversione di ingresso XML  relazionale e in uscita relazionale  XML Differiscono per lo schema relazionale usato per mappare i dati XML Fisso, indipendente dal DTD Variabile, dipendente dal DTD Normalmente non preservano tutte le caratteristiche sintattiche di XML

112 112 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Mapping XML-relazionale Custom Il progettista definisce volta per volta a mano lo schema del database in cui riversare documenti XML Canonico Insieme di tabelle fisso indipendente dal tipo di documento. Può porre vincoli sullo schema dei documenti XML memorizzabili che devono contenere elementi predefiniti Basato sullo schema del documento: Detta regole generali per mappare strutture XML in tabelle, per esempio per mappare un generico elemento e i suoi attributi in una tabella equivalente. Non pone vincoli sui documenti memorizzabili, ma lo schema relazionale risultante varia per diversi tipi di documento

113 113 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Architettura Il DBA può caricare documenti nel sistema ed effettuare query da console Le applicazioni passano attraverso una interfaccia programmativa (API) per memorizzare o interrogare documenti Le conversioni di formato sono a carico del processore XML, oppure dell’applicazione (con l’aiuto della API a disposizione)

114 114 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio: supporto per dati XML in Oracle 9i -- query Uso di colonne CLOB OracleText (un tipo proprietario) e di operatori che estendono il predicato SQL CONTAINS per il reperimento di elementi in documenti XML Es: INPATH(XPath) restringe una ricerca di stringhe all’interno del frammento XML denotato dall’espressione XPath Uso del tipo SQL 99 XMLType, con metodi per la creazione e manipolazione di dati XML Es: existNode(varchar XPath): conta le occorrenze di sotto- elementi denotati dall’espressione in ingresso; extract(varchar XPath) estrae un frammento di XML

115 115 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio: supporto per dati XML in Oracle 9i -- API XML SQL Utility (XSU) fornisce una API per programmi PL/SQL e Java Trasforma tabelle o view relazionali in documenti XML Divide in frammenti documenti XML e li inserisce in tabelle relazionali Usa un mapping canonico a tre elementi,, Supporta tabelle con colonne di tipo complesso Si appoggia su JDBC e facilita la trasformazione del risultato di una query in un albero DOM, la modifica e creazione di dati XML

116 116 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. SQL/XML Un’estensione di SQL per sfruttare caratteristiche di XML Studiato dal consorzio SQLX Parte dello standard ISO Contiene varie parti: XMLType, funzioni XSL su colonne di tipo XML, funzioni di generazione di XML da dati relazionali

117 117 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Generazione di XML da dati relazionali Esprimibile mediante funzioni nella clausola SELECT XMLELEMENT: crea una lista di elementi XMLATTRIBUTES: crea attributi all’interno di elementi XMLFOREST: crea una lista di elementi contenenti altri elementi

118 118 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Esempio CREATE TABLE movie ( movie_ID INTEGER, title CHAR VARYING (100), year_released SMALLINT, genre CHAR VARYING (20) ARRAY [ 10 ], description CHAR VARYING (300), long_description CHAR LARGE OBJECT (2500), run_time INTEGER, MPAA_rating CHAR (4) )

119 119 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Costruzione di elementi con attributi SELECT XMLELEMENT( NAME “movieTitle”, XMLATTRIBUTES(B.year_released as “movieYear”) B.Title ) AS xmldata FROM movie AS B WHERE B.Title like ”%Rose%” Risultato The Rose The name of the Rose The war of the Roses

120 120 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy) S.r.l. Riferimenti DOM: XPath Data Model: Data Model: XML Infoset: Infoset: XQuery: –XQuery Use Cases: cases/ cases/http://www.w3.org/TR/xquery-use- cases/ SQL/XML: J. Melton, Advanced SQL:1999, Morgan Kaufmann, 2003SQL/XML: J. Melton, Advanced SQL:1999, Morgan Kaufmann, 2003 eXist, Saxon, Galax... BaseX:eXist, Saxon, Galax... BaseX: –eccellente per esercitarsi


Scaricare ppt "1 P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati. Modelli e linguaggi di interrogazione, 4e ©2013 McGraw-Hill Education (Italy)"

Presentazioni simili


Annunci Google