1 / 120

Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di dati Quarta edizione McGraw-Hill, 2014

Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di dati Quarta edizione McGraw-Hill, 2014. Capitolo 14: Basi di dati per XML. Sommario. Definizione e storia di eXtensible Markup Language (XML) elementi attributi Schemi documentali: Document Type Definition (DTD)

darius-pope
Télécharger la présentation

Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di dati Quarta edizione McGraw-Hill, 2014

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di datiQuarta edizioneMcGraw-Hill, 2014 Capitolo 14: Basi di dati per XML

  2. 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. 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. Evoluzione dei modelli dei dati Web data XML Data Model Self-defining Data Standard DDL Extended/Object Relational Data ModelObjects & Functions Predefined complex Types NF2 Data Model Nested Relations Hierarchical Fields Predefined simple Types Relational Data Model Flat Relations Predefined, simple Types

  5. 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. Evoluzione 1986: Standard Generalized Markup Language (SGML) ISO 8879-1986 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. XML • HTML: insieme fisso di tag • XML: standard per creare linguaggi di markup con tag personalizzati (erede di SGML); possono essere usati in qualunque dominio • HTML vs XML <book> <title>The Idea Methodology </title> <author> S. Ceri </author> <author> P. Fraternali </author> <ed> Addison-Wesley </ed> <price> US$ 49 </price> </book> <h1>The Idea Methodology</h1><br> <ul> <li>di S. Ceri, P. Fraternali </li> <li> Addison-Wesley</li> <li> US$ 49 </li> </ul>

  8. Esempio di documento XML <?xml version="1.0"?> <elenco> <prodotto codice=“123kl14”> <descrizione> Forno </descrizione> <prezzo> 1040000 </prezzo> </prodotto> <prodotto codice=“432sd35”> <descrizione> Frigo </descrizione> </prodotto> </elenco>

  9. XML vs HTML XML non rimpiazza HTML! XML e HTML sono nati con scopi diversi: XML progettato per descrivere DATI  cosa sono i dati HTML progettato per visualizzare i dati  come appaiono i dati

  10. Usi di XML Separare i dati dal modo con cui vengono visualizzati Scambiare i dati tra sistemi eterogenei Scambiare informazioni in sistemi B2B Condividere dati Memorizzare 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

  11. Sintassi XML (http://www.w3schools.com/xml) Un documento XML ben formato deve: Cominciare con una direttiva standard che specifica la versione di XML, ad esempio: <?xml version= “ 1.0”?> 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. Sintassi XML (http://www.w3schools.com/xml) In un documento XML ben formato: 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. 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).

  13. Elementi <prodottocodice=“123kl14”> <descrizione> Forno a ventilazione forzata </descrizione> <prezzo valuta=“USD”> 624 </prezzo> <immagine src=“foto1.jpg” /> </prodotto> Possono avere un contenuto (testo o altri elementi) Sono in relazione gerarchica (padre-figlio) Possono avere attributi

  14. Attributi <prodottocodice=“123”> <descrizione> Forno </descrizione> <prezzo> 104 </prezzo> </prodotto> 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..

  15. Namespace Metodo per evitare conflitti di nome <table> <tr>...</tr> </table> <table> <product>..</product> </table> Si introduce un prefisso <h:table xmlns:h="http://www.w3.org/TR/html4/> <h:tr>...</h:tr> </h:table> <my:table xmlns:my="http://www.me.com/furniture> <my:product> ... </my:product> </my:table> 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. Document Type Definition (DTD) Detta il tipo di un documento, cioè: i tag ammessi le regole di annidamento dei tag Scopi: Accordarsi su formato/struttura dei documenti Validare documenti XML secondo certe regole Esempio di dichiarazione di un elemento: <!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO)> L’elemento prodotto contiene al suo interno un elemento descrizione seguito da un elemento prezzo

  17. 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. Modello di contenuto Elementi con un elemento figlio <!ELEMENT PRODOTTO (DESCRIZIONE)> <PRODOTTO> <DESCRIZIONE>…</DESCRIZIONE> </PRODOTTO> Elementi con una sequenza di elementi figli <!ELEMENT MAIL (TO, FROM, TITLE, BODY)> <MAIL> <TO>…</TO> <FROM>…</FROM> <TITLE>…</TITLE> <BODY>…</BODY> </MAIL> Elementi con contenuto di tipo PCDATA (parsed character data = brano di testo qualunque) <!ELEMENT DESCRIZIONE (#PCDATA)> <DESCRIZIONE>Un testo qualsiasi</DESCRIZIONE>

  19. Modello di contenuto Contenuto alternativo <!ELEMENT ARTICOLO (TESTO|FOTO)> <ARTICOLO><TESTO> . . </TESTO></ARTICOLO> <ARTICOLO><FOTO> . . </FOTO><ARTICOLO> Contenuto misto <!ELEMENT ARTICOLO (#PCDATA|FOTO)*> <ARTICOLO> testo </ARTICOLO> <ARTICOLO><FOTO> . . </FOTO><ARTICOLO> Elementi vuoti<!ELEMENT ARTICOLO EMPTY)> <ARTICOLO/> Contenuto arbitrario <!ELEMENT NOTA ANY)> <NOTA> del testo libero</NOTA> <NOTA> <AUTORE>Luca</AUTORE> del testo libero</NOTA>

  20. Occorrenze di un sottoelemento 1 volta <!ELEMENT PRODOTTO (DESCRIZIONE)> 1 o più volte <!ELEMENT LISTA (PRODOTTO+)> 0 o più volte <!ELEMENT LISTA (PRODOTTO*)> 0 o 1 volta<!ELEMENT PRODOTTO (DESCRIZIONE?)>

  21. Esempio di DTD <!ELEMENT ELENCO (PRODOTTO+)> <!ELEMENT PRODOTTO (DESCRIZIONE, PREZZO?)> <!ELEMENT DESCRIZIONE (#PCDATA)> <!ELEMENT PREZZO (#PCDATA)> <elenco> <prodotto codice=“123”> <descrizione> Forno </descrizione> <prezzo> 1040000 </prezzo> </prodotto> <prodotto codice=“432”> <descrizione> Frigo </descrizione> </prodotto> </elenco> NOTA: un DTD NON è un documento XML

  22. Dichiarazioni di attributi Per ognielemento dice: qualiattributipuòavere chevaloripuòassumereciascunattributo se esiste e qual è ilvalore di default Esempio di dichiarazione di attributo: <!ATTLIST PRODOTTO codice ID #REQUIRED label CDATA #IMPLIED status (disponibile|terminato) ‘disponibile’>

  23. Tipi di attributi CDATA: dati di tipo carattere (val1 | val2 | val3): un valore della lista ID: identificatore IDREF, IDREFS: valore di un attributo di tipo ID nel documento (o insieme di valori) ENTITY, ENTITIES: nome (nomi) di entità NMTOKEN, NMTOKENS: caso ristretto di CDATA (una sola parola o insieme di parole) codice ID #REQUIRED label CDATA #IMPLIED Status (disponibile|terminato) ‘disponibile’

  24. Vincoli sugli attributi #REQUIRED: il valore deve essere specificato #IMPLIED: il valore può mancare #FIXED “valore”: se presente deve coincidere con “valore” <!ELEMENT FAX (..)> <!ATTLIST FAX Mittente CDATA #FIXED “Politecnico di Milano"> Default : si può specificare un valore come default, usato quando l’attributo è mancante <!ELEMENT SCONTO EMPTY> <!ATTLIST SCONTO Valore CDATA “10"> <SCONTO/>  vale 10 <SCONTO valore=”15”/>  vale 15

  25. Un esempio completo <!DOCTYPE NEWSPAPER [  <!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)>  <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED> ]>

  26. Relazione tra documento e DTD DTD esterno <?XML version="1.0" standalone="no"?> <!DOCTYPE NEWSPAPER SYSTEM ”newspaper.dtd"> <NEWSPAPER>.. </NEWSPAPER> DTD interno <?XML version="1.0" standalone="no"?> <!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER(…)> ... ]> <NEWSPAPER>.. </NEWSPAPER>

  27. 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. 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. Documento XML con riferimento a XSD <?xml version="1.0"?><note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=http://www.w3schools.com/note.xsd” > <to> Tove </to><from> Jani </from> <head> Reminder </head><body> Don’t forget methis weekend!</body> </note> 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. Esempio di XML Schema <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="head" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> xs: namespace per XSchema (contiene tutti i tag XSD)

  31. Elementi semplici (Simple elements) Possono contenere solo testo (no elem. o attributi) Forme di dichiarazione: <xs:element name="nome" type="tipo"/> <xs:element name="nome" type=“tipo” default=“xyz” /> <xs:element name="nome" type=“tipo” fixed=“xyz” /> Tipi: stringhe, numerici, date, time, Boolean, ecc.. Esempi di definizione di elementi semplici in XSD <xs:element name=“età” type=“xs:integer”/> <xs:element name=“cognome” type=“xs:string”/> Esempi di elementi semplici XML <età> 65 </età> <cognome> Rossi </cognome>

  32. Attributi Definizione di attributi <xs:attribute name="name" type="type"/> <xs:attribute … default|fixed=“xyz” use=“required|optional”/> Esempio di definizione di attribute <xs:attribute name=“lang” type=“xs:string”/> Esempio di uso di un attributo <lastname lang=“it”> qwerty </lastname> Valore di default o fisso Obbligatorio o opzionale

  33. Restrizioni Consentono di dichiarare vincoli sui valori di un tipo elementare (detti tipi base) <xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element>

  34. Enumerazione Particolare tipo di restrizione che consente di enumerare i valori di un elemento o attributo <xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType></xs:element>

  35. 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: <xs:element name="name"> <xs:complexType> . . element content . . </xs:complexType> </xs:element>

  36. Costrutto sequence Sequenza (= record): gli elementi devono apparire nell’ordine indicato <xs:element name="libro"> <xs:complexType> <xs:sequence> <xs:element name="titolo“ type="xs:string"/> <xs:element name="autore" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> La sequenza può contenere sia sottoelementi che attributi

  37. Costrutto sequence con attributi <xs:element name="libro"> <xs:complexType> <xs:sequence> <xs:element name="titolo“ type="xs:string"/> <xs:element name="autore" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="editore" type="xs:string" use="required"/> <xs:attribute name="pubblicazione" type="xs:date"/> </xs:complexType> </xs:element>

  38. Specifica del contenuto: costrutto all Come la sequenza ma gli elementi possono apparire nel documento in qualsiasi ordine <xs:element name="libro"> <xs:complexType> <xs:all> <xs:element name="titolo“ type="xs:string"/> <xs:element name="autore" type="xs:string" maxOccurs="unbounded"/> </xs:all> </xs:complexType> </xs:element>

  39. Costrutto choice Sequenza (= OR) <xs:element name="parte"> <xs:complexType> <xs:choice> <xs:element name="capitolo" type="xs:string" maxOccurs="unbounded"/> <xs:element name="appendice" type="xs:string" maxOccurs="unbounded"/> </xs:choice> </xs:complexType> </xs:element> Gli elementi interni appaiono in alternativa nel documento

  40. Elementi EMPTY Gli elementi senza sottoelementi interni si dichiarano come complex type privi di sottoelementi <xs:element name="product"> <xs:complexType> <xs:attribute name="prodid“ type="xs:integer"/> </xs:complexType> </xs:element>

  41. Elementi MIXED <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:integer"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element> Esempio <letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>

  42. 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 <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>

  43. Definizioni di tipi riusabili Consente di definire tipi e riusarli per: Tipare attributi Definire altri tipi ATTENZIONE: Definizione di tipo, non di elemento <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> Riuso del tipo, per definire elementi/attributi <xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:attribute name="member" type="personinfo"/>

  44. 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) <xs:group name="custGroup">Definizione di gruppo riusablie <xs:sequence> <xs:element name="customer" type="xs:string"/> <xs:element name="orderdetails" type="xs:string"/> <xs:element name="billto" type="xs:string"/> </xs:sequence> </xs:group> <xs:element name="order" type="ordertype"/> <xs:complexType name="ordertype"> Riuso di “custGroup” <xs:group ref="custGroup"/> <xs:attribute name="status" type="xs:string"/> </xs:complexType>

  45. Altre caratteristiche di XML Schema Estensioni di tipi Costrutti ANY/ANYATTRIBUTE Elementi contenenti solo testo, testo e attributi

  46. Riferimenti www.w3schools.com www.w3schools.com/xml www.w3schools.com/dtd http://www.w3schools.com/schema/

  47. XSL

  48. 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. Fogli di stile 1996: DSSSL - standard che definisce fogli di stile per SGML (ISO/IEC 10179:1996) 1996-1998: 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. 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

More Related