Abilità Informatiche A.A. 2010/2011 Lezione 10: XML & DBMS Facoltà di Lingue e Letterature Straniere Un documento testuale Dal punto di vista del calcolatore un testo è una sequenza di caratteri alfabetici intervallati da separatori, come ad esempio lo spazio bianco o un segno di interpunzione, e caratteri di scorrimento (o controllo) del testo, come ad esempio il “ritorno carrello” (carriage return, per tornare accapo) e il comando “nuova riga” (line feed, per spostarsi sulla riga successiva) Per noi, invece, il testo è molto di più di una semplice sequenza di caratteri alfabetici, separatori e caratteri di controllo (dati) 2 Dati e struttura il testo è innanzitutto struttura (informazione) ciascun elemento costitutivo dei dati testuali entra a far parte di un elemento più grande: i caratteri formano sillabe, le sillabe parole, le parole frasi, le frasi paragrafi, i paragrafi capitoli ecc. i capitoli si compongono a loro volta di numero, titolo e corpo del testo le frasi si compongono di sequenze di parole semanticamente coese dette sintagmi le stesse parole presentano al loro interno costituenti più piccoli solitamente chiamati morfemi nel testo (come nel linguaggio) questa struttura è quasi sempre implicita ad esempio, ogni parola del testo non „„mostra” la sua struttura morfemica interna; analogamente, una frase del testo non presenta esplicitamente la sua segmentazione in costituenti sintagmatici il calcolatore può cogliere questa struttura implicita del testo solo se: conosce le regole che la governano (o il codice sottostante), oppure questa struttura è rappresentata esplicitamente nel testo 3 Struttura e Rappresentazione di un documento Un documento è composto di tre livelli: contenuto, struttura e rappresentazione. La rappresentazione può essere utile per migliorare la leggibilità per favorire la percezione della struttura …ma non per recuperare l‟informazione Nel momento in cui occorre recuperare l‟informazione le informazioni sulla struttura sono rilevanti Infatti attraverso la struttura dell‟informazione è possibile ideare piani di recupero efficiente Struttura Contenuto Rappresentazione 4 I limiti di HTML La potenza di HTML rappresenta anche il punto di massima debolezza Se infatti realizzare pagine HTML è estremamente facile riuscire a effettuare ricerche su tali documenti è molto inefficiente Il principale motivo? Manca il concetto di struttura dei dati. Si pone l‟enfasi solo sulla rappresentazione Struttura e rappresentazione sono indistinte e confuse 5 <i>, <b>, <hr>, … ? <h1>, <ul>, <p>, … XML - Introduzione XML = Extensible Markup Language “XML is a language for creating markup languages that describe structured data.” Mike Edwards, Microsoft Descrive i dati e non la loro rappresentazione Ha un formato aperto e leggibile visualmente simile all‟HTML Elimina la necessità di Browser e tool intermedi per aggiungere TAG speciali 6 Un semplice esempio etichetta elemento semplice <messaggio> <da>Rachele</da> <a>Vito</a> <intestazione>pro memoria</intestazione> <testo>ricorda di portare il cd!</testo> </messaggio> dati elemento complesso 7 XML - Introduzione eXtensible - non rigido come HTML Ottimo per la trasmissione di dati da server e browser Ottimo per la trasmissione da applicazione a applicazione, da macchina a macchina… E‟ un MetaLinguaggio usato per definire nuovi domini applicativi o linguaggi specifici Attenzione esclusivamente al contenuto La Rappresentazione corrispondente può essere assegnata in un momento successivo 8 XML è informazione “espandibile” supponiamo che il nostro messaggio codificato in XML possa essere interpretato da un‟applicazione di interfaccia, che lo legge come segue: MESSAGE To: Vito From: Rachele heading: pro-memoria ricorda di portare il cd! 9 XML è “espandibile” supponiamo inoltre di aver arricchito il nostro messaggio codificato in XML, in modo tale che possa essere indicata anche la data: <messaggio> <data> 10.5.2003 </data> <da>Rachele</da> <a>Vito</a> <intestazione>pro memoria</intestazione> <testo>ricorda di portare il cd!</testo> </messaggio> 10 XML è “espandibile” l‟applicazione originaria continuerà ad interpretare correttamente il nostro nuovo messaggio, ignorando tuttavia il dato annotato, di cui non conosce la traduzione attraverso l‟interfaccia: MESSAGE To: Vito From: Rachele heading: pro-memoria ricorda di portare il cd! 11 XML - Aree Applicative Oracle Applicazioni che richiedono al Web Client di mediare tra due o più DB eterogenei Applicazioni che cercano di distribuire porzioni significanti di dati tra Client/Server 12 … SQL XML – Aree Applicative Compito Applicazioni che richiedono al Web Client di mostrare più viste dello stesso dato a diversi utenti Testo Esercizio Soluzione Client User1 Testo Esercizio Client User2 Soluzione Applicazioni in cui Agenti Web Intelligenti decidono su informazioni utili per un utente a partire dalle sue caratteristiche 13 Agente Client con caratteristiche A, B, C, …. XML e HTML XML non specifica né la semantica né un insieme di TAG XML è un metalinguaggio per la descrizione dei linguaggi di markup XML fornisce un modo per definire i tag ed i rapporti strutturali fra loro Poiché non vi è un insieme predefinito di TAG, non ci può essere alcuna semantica preesistente 14 XML – Standard collegati XML è una lingua “franca” che permette di descrivere la struttura di documenti Il W3C ha definito svariati standard per poter integrare la definizione di XML per consentire la: Definizione metadati Definizione link tra più documenti Trasformazione/Rappresentazione documenti XML Definizione di linguaggi di interrogazione Manipolazione documenti XML “da programma” Rappresentazione di informazione grafica 15 Rappresentazione/Trasformazione documenti XML Lo standard XML permette di strutturare documenti XML No rappresentazione Nasce XSL. XSL permette di Identificare parti di documento da rappresentare (Xpath) Trasformare le parti (attraverso il linguaggio XSLT) Rappresentare (HTML, PDF, ...) il documento risultante (attraverso il linguaggio XSL-FO) 16 XML, DTD, CSS Sintassi ed esempi 17 Elemento Un elemento è un blocco elementare dei documenti XML Elemento Start-tag Contenuto End-tag Un elemento è una parte del documento delimitata da 2 TAG es: <AUTHOR>Dante Alighieri</AUTHOR> 18 Anatomia di un elemento XML Ogni elemento XML può essere definito da una o più coppie “attributo/valore”: Esempio: dato (PCDATA) etichetta <destinatario sesso=“maschile”> vito </destinatario> <testo formato=“corsivo”> questo è il testo del messaggio … </testo> nome attributo 19 valore attributo (CDATA) Tag I tag appaiono, normalmente, in coppia, tag di apertura (start-tag) tag di chiusura (end-tag) <NOME_TAG>Dante Alighieri</NOME_TAG> Il tag rappresenta il nome dell‟elemento 20 Struttura gerarchica degli elementi LIBRO CAPITOLO SEZIONE SEZIONE CAPITOLO LIBRO SEZIONE CAPITOLO 21 Struttura gerarchica degli elementi LIBRO CAPITOLO SEZIONE CAPITOLO 22 NO! Ogni elemento deve essere completamente incluso da un altro elemento Document Element È l‟elemento più esterno in un documento XML Viene anche detto elemento radice Contiene tutti gli elementi del documento Esempio: <libro> … </libro> Deve sempre esistere 23 Attributi Un elemento può avere degli attributi Gli attributi possono essere pensati come aggettivi che descrivono gli elementi Ogni attributo ha nome valore Tutti gli attributi di un elemento devono essere distinti Gli attributi vengono inseriti come parte dello start-tag: <AUTHOR nome_attributo=”valore_attributo"> Dante Alighieri </AUTHOR> 24 Esempio di elemento con attributi <AUTHOR laurea=”lettere"> Dante Maria Rossetti </AUTHOR> <AUTHOR laurea=”lettere"> <name>Dante</name> <name>Maria</name> <lastname>Rossetti</lastname> </AUTHOR> <AUTHOR laurea=”lettere” name1 = ”Dante” name2 = ”Maria” lastname = ”Rossetti” /> 25 Elementi Vs Attributi Quando è meglio usare elementi o attributi per rappresentare un‟informazione? Un elemento, quando: Si richiede di recuperare i dati velocemente È visibile a tutti È rilevante per il significato del documento 26 Un attributo, quando: Esprime una scelta È utilizzato dal sistema Non è rilevante per il significato del documento Un documento XML Un file XML è un semplice file di testo con tag XML al suo interno Esso ha una estensione .xml nome_file.xml Un file XML contiene tre sezioni Una dichiarazione che si tratta di un file XML Una dichiarazione (opzionale) del tipo di documento, sul nome della DTD associata e sul nome della CSS associata Il contenuto del documento con tag XML 27 Cosa ci serve per iniziare Pochissimo: Il blocco-note di Windows (o altro editor di testo); Internet Explorer 5.5 e superiori, Firefox 2 28 questi browser contengono un parser o processore XML che legge il documento XML e ne controlla la sintassi e segnala eventuali errori Esempio <?xml version="1.0" encoding="iso-8859-1"?> <!-- Proviamo a scrivere un file xml che gestisca una rubrica di indirizzi --> <!-- apertura del tag radice --> <rubrica> <!-- istanze dell'elemento contatto --> <contatto> <nome>Andrea</nome> <cognome>Crevola</cognome> <telefono>011-555-1234</telefono> <email>[email protected]</email> </contatto> <contatto> <nome>Mario</nome> <cognome>Rossi</cognome> <telefono>011-555-5678</telefono> <email>[email protected]</email> </contatto> <contatto> <nome>Carlo</nome> <cognome>Bianchi</cognome> <telefono>011-555-2468</telefono> <email>[email protected]</email> </contatto> <!-- chiusura del tag radice --> </rubrica> 29 Conformità dei documenti XML Indicazione della versione: Un documento XML deve iniziare con l‟istruzione <?xml version=“1.0” encoding="iso-8859-1"?> serve per indicare al programma che interpreterà il file quale set di regole XML il documento dovrà seguire; se il documento segue senza errori queste regole, è detto well formed; è presente anche l‟indicazione del set di caratteri che sarà utilizzato nel documento (attributo opzionale); 30 Regole di conformità Un documento XML è well formed (sintatticamente conforme) se: È presente un solo elemento radice; Gli elementi hanno un tag di apertura e un tag di chiusura; I tag sono appropriatamente annidati; I valori degli attributi sono racchiusi da virgolette; Nomi di tag e attributi sono costituiti da una sola parola; Gli attributi hanno sempre un valore; Inoltre XML è case-sensitive: c‟è differenza tra lettere maiuscole e minuscole. ⇒ <nome> ≠ <Nome> ≠ <NOME> ≠ <nOmE> … ⇒ un tag di chiusura deve essere scritto in modo identico a quello di apertura (ad eccezione dello slash „/‟ iniziale); 31 Indicazione della DTD (1) Le specifiche della DTD possono essere inserite direttamente nel prologo del documento (DTD interna): <!DOCTYPE rubrica [ <!ELEMENT rubrica (contatto)+ > <!ELEMENT contatto (nome, cognome,telefono,email) > <!ELEMENT nome (#PCDATA) > <!ELEMENT cognome (#PCDATA) > <!ELEMENT telefono (#PCDATA) > <!ELEMENT email (#PCDATA) > ] La DTD interna vale solo per il documento a cui appartiene e non per altri file… questo significa che la dovrei riscrivere ogni volta… a meno che non la sposti al di fuori del file e la condivida tra tutti i documenti XML che ne hanno necessità. 32 Indicazione della DTD (2) Le specifiche della DTD possono essere collocate in un file esterno (es. rubrica.dtd); La DTD esterna viene richiamata con un comando presente nel prologo del documento XML; <!DOCTYPE rubrica SYSTEM “rubrica.dtd”> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> In questo modo tutti i file di cui si vuole verificare la validità possono riferirsi ad un unico insieme di regole, e se decido di modificare le regole, non dovrò riportare i cambiamenti su tutti i file su cui sto lavorando; Applicazioni diverse possono fare riferimento ad un‟unica DTD per valutare la validità dei file elaborati; 33 Indicazione dello stile Definito il tipo di documento (conformità) e le regole di validità (DTD), manca un comando per dire alle applicazioni come rappresentare i dati. <?xml-stylesheet type="text/css" href=“stile.css"?> 34 Esempio: file .xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- Inserisco il riferimento alla DTD esterna --> <!DOCTYPE rubrica SYSTEM "rubrica.dtd"> <!-- Inserisco il riferimento ad un foglio di stile esterno --> <?xml-stylesheet type="text/css" href="stile.css"?> <rubrica> <contatto> <nome>Andrea</nome> <cognome>Crevola</cognome> <telefono>011-555-1234</telefono> <email>[email protected]</email> </contatto> … </rubrica> prova.xml 35 Esempio: DTD <?xml version="1.0" ?> <!-- DTD della rubrica --> <!-- Dichiarazione di elementi e rispettivi attributi--> <!ELEMENT rubrica (contatto)+> <!ELEMENT contatto (nome, cognome, indirizzo, telefono+, email*, foto?)> <!ATTLIST contatto id ID #REQUIRED> <!ATTLIST contatto data-insert CDATA #REQUIRED> <!ATTLIST contatto sesso (M|F) "F"> <!ELEMENT nome (#PCDATA)> <!ELEMENT cognome (#PCDATA)> <!ELEMENT indirizzo (#PCDATA)> <!ELEMENT telefono (fisso|mobile)> <!ELEMENT fisso (#PCDATA)> <!ELEMENT mobile (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT foto EMPTY> <!ATTLIST foto src CDATA #REQUIRED> <!ATTLIST foto alt CDATA #REQUIRED> <!-- Fine della dichiarazione di elementi e attribuiti --> rubrica.dtd 36 Esempio: foglio di stile CSS rubrica { font-family: Verdana; } contatto { display:block; margin: 10px; background-color: #FFFFCC; padding: 10px; width: 300px; border-width: 2px; border-style: solid; } nome { display:inline; font-weight: bold; } cognome { display:inline; font-weight: bold; } email { display:inline; font-weight: bold; } telefono { display:block; font-family: courier; margin-bottom: 10px; } stile.css 37 XML e DataBase 38 Il problema Problema: è possibile/necessario memorizzare documenti XML in un DBMS? Quale tecnologia è necessaria a questo scopo? Risposta: è certamente possibile memorizzare e gestire documenti XML in un DBMS la tecnologia necessaria a questo scopo dipende dal perché vogliamo gestire documenti XML in un DBMS 39 Tipologie di documenti XML Due possibili usi per documenti XML: Data Centric: i documenti possono rappresentare lo strumento con il quale dati tradizionali (es. relazionali) vengono trasferiti su Web XML come veicolo per trasporto di dati Esempio: ordini di vendita, scheduling di voli, menù Document Centric: l‟informazione è rappresentata dal documento in sé XML come modello per la rappresentazione dei dati Esempio: libri, documenti in genere 40 Documenti Data Centric Struttura regolare Livello di dettaglio piuttosto fine Contenuto omogeneo L‟ordine con cui gli elementi allo stesso livello appaiono è ininfluente Utilizzati per “machine consumption” Esempi: ordini di vendita, scheduling di voli, menù,… 41 Esempio: ordini di vendita <Orders> <SalesOrder SONumber=“12345”> <Customer CustNumber=“543”> <CustName>ABC Industries</CustName> ... </Customer> <OrderDate>981215</OrderDate> <Line LineNumber=“1”> <Part PartNumber=“123”> <Description> Turkey wrench: Stainless steel, one piece... </Description> <Price>9.95</Price> </Part> <Quantity>10</Quantity> </Line> <Line LineNumber=“2”> ... </Line> </SaleOrder> </Orders> 42 Documenti Document Centric Struttura irregolare Livello di dettaglio meno fine Contenuto eterogeneo L‟ordine degli elementi allo stesso livello è significativo In genere progettati per “human consumption” Esempi: libri, email, … 43 Product Description <Product> <Name>Turkey Wrench</Name> <Developer>Full Fabrication Labs, Inc.</Developer> <Summary>Like a monkey wrench, but not as big.</Summary> <Description> <Para>The Turkey wrench, which comes in both right- and lefthanded versions ....</Para> <Para>You can:</Para> <List> <Item><Link URL=“Order.htm”>Order your turkey wrench</Link></Item> <Item><Link URL=“Wrench.html”>Read about wrenches</Link></Item> <Item><Link URL=“catalog.zip”>Download the catalog</Link></Item> </List> .... </Description> </Product> 44 XML e DBMS Ciascuna tipologia di documenti richiede una particolare tecnologia per la sua gestione data document 45 Relational/object-oriented DB DB basato su XML (XML è il modello dei dati) XML e DBMS XML-Native DBMS: comprendono un insieme di nuovi sistemi la cui architettura è stata progettata per supportare totalmente le funzionalità necessarie alla gestione di documenti XML utili per Document Centric Esempio:eXcelon XML-Enabled DBMS: comprendono tutti i DBMS che mantengono integra la propria architettura estendendola con funzionalità necessarie alla gestione di documenti XML sono tipicamente Object-Relational (DB2, Oracle8i,…) utili per Data Centric e parzialmente per Document Centric 46 XML-Enabled DBMS e documenti Data Centric 47 Problematiche per Data Centric Tre problematiche di base: come rappresentare i dati contenuti nei documenti XML nel DBMS XML doc DB come generare documenti XML partendo dai dati contenuti nel DBMS XML doc DB come interrogare i dati estratti da documenti XML 48 DB Rappresentazione dati È necessario definire un mapping tra la struttura dei documenti XML e lo schema del DB Per memorizzare i dati contenuti in un documenti XML in un DB, deve esistere una o più tabelle con lo schema richiesto dal mapping Vantaggi: approccio piuttosto semplice i dati sono facilmente interrogabili Svantaggi: Scarsa flessibilità: la tabella deve essere conforme al documento il documento di partenza non è più recuperabile 49 DBMS relazionale Un documento XML viene rappresentato come una singola tabella o un insieme di tabelle la struttura del documento XML è simile alla seguente: <database> <table> <row> <column1>...</column1> <column1>...</column1> ... </row> ... </table> ... </database> approccio tipico per DBMS relazionali, object-relational 50 Esempio Documento XML <clienti> <row> <numero> 7369 </numero> <nome> PAUL </nome> <cognome> SMITH </cognome> </row> <row> <numero> 7000 </numero> <nome> STEVE </nome> <cognome> ADAM </cognome> </row> </clienti> 51 Tabella Clienti Numero 2000 7369 7000 Nome MIKE PAUL STEVE Cognome SCOTT SMITH ADAM Interrogazione dati Poiché i dati vengono rappresentati secondo il modello supportato dal DBMS (es. relazionale), è possibile utilizzare i linguaggi supportati dal DBMS per l‟interrogazione dei dati memorizzati approccio template-based: la query viene rappresentata nel documento XML necessità di middleware 52 Flight Information <?xml version=“1.0”> <FlightInfo> <Intro>The following flights have available seats:</Intro> <SelectStmt> SELECT Airline, FltNumber, Depart, Arrive FROM Flights </SelectStmt> <Conclude>We hope one of these meets your needs</Conclude> </FlightInfo> <?xml version=“1.0”> <FlightInfo> <Intro>The following flights have available seats:</Intro> <Flight> <Row> <Airline>ACME</Airline><FltNumber>123</FltNumber> <Depart>Dec 12, 1998 13:43</Depart><Arrive>...<Arrive> <Row> </Flight> <Conclude>We hope one of these meets your needs</Conclude> </FlightInfo> 53 Interrogazione dati Doc Result Doc Query Middleware Extract Select Command Construct Document answer Submit SELECT Command Result DB 54 Generazione documenti XML Problema: fornire una rappresentazione XML ai dati recuperati tramite query dal DBMS si utilizza il mapping inverso rispetto a quello utilizzato per la memorizzazione operazione importante per attribuire un formato standard ai dati ritrovati, prima di inviarli sulla rete 55 Esempio SELECT nome, cognome FROM Clienti WHERE Numero = “7369 Documento XML Tabella Clienti Numero 2000 7369 7000 56 Nome MIKE PAUL STEVE Cognome SCOTT SMITH ADAM <clienti> <row> <nome> PAUL </nome> <cognome> SMITH </cognome> </row> </clienti> XML-Enabled DBMS e documenti Document Centric 57 Problematiche per Document Centric Due problematiche di base: come rappresentare i documenti XML nel DBMS come interrogare i documenti XML 58 XML doc DB XML doc DB Rappresentazione Permette di mantenere integro il documento XML Due approcci: rappresentazione non strutturata documento come unico oggetto rappresentazione ibrida documento parzialmente rappresentato secondo la rappresentazione strutturata e parzialmente secondo la rappresentazione non strutturata 59 Interrogazione documenti Dal punto di vista del DBMS, un documento memorizzato in modo non strutturato non è che un documento di testo in genere i DBMS supportano strumenti per ritrovare i documenti in base al contenuto nel caso di documenti XML, mettono a disposizione operatori avanzati da utilizzare in statement SQL per recuperare documenti XML in base al contenuto 60 XML su internet 61 http://www.w3schools.com/