Fondamenti di XML Cos il linguaggio XML Differenze

  • Slides: 60
Download presentation
Fondamenti di XML Ø Cos’è il linguaggio XML Ø Differenze tra XML e HTML

Fondamenti di XML Ø Cos’è il linguaggio XML Ø Differenze tra XML e HTML Ø Vantaggi di XML 20 Dicembre 2005 Stefano Clemente

World Wide Web Consortium (W 3 C) “Il World Wide Web Consortium (W 3

World Wide Web Consortium (W 3 C) “Il World Wide Web Consortium (W 3 C) W 3 C sviluppa tecnologie che garantiscono l'interoperabilità (specifiche, guidelines, software e applicazioni) per guidare il World Wide Web fino al massimo del suo potenziale agendo da forum di informazioni, comunicazioni e attività comuni” (dal sito del W 3 C Italiano). L'Ufficio W 3 C Italiano (W 3 C-IT) è il punto di contatto nazionale per le attività W 3 C in Italia. 20 Dicembre 2005 Stefano Clemente 2

Cos’è XML è l’acronimo di e. Xtensible Markup Language (linguaggio di marcatura estensibile). q

Cos’è XML è l’acronimo di e. Xtensible Markup Language (linguaggio di marcatura estensibile). q XML è un linguaggio di marcatura estensibile q XML è un linguaggio per la descrizione semantica dei dati q XML non è orientato ad uno specifico tipo di elaborazione q XML versus HTML 20 Dicembre 2005 Stefano Clemente 3

 XML è un linguaggio di marcatura q • XML deriva dal linguaggio SGML

XML è un linguaggio di marcatura q • XML deriva dal linguaggio SGML (Standard Generalized Markup Language). • Entrambi sono linguaggi di marcatura testuale, ossia inseriscono all’interno del documento delle etichette (o marcature, tag) che permettono di descrivere il contenuto del documento stesso. • In questo modo un’applicazione, ad esempio un motore di ricerca, è in grado di leggere le informazioni contenute nel documento e di elaborarle in maniera efficiente e corretta. 20 Dicembre 2005 Stefano Clemente 4

Esempio di un documento in formato XML che descrive gli estremi di una legge.

Esempio di un documento in formato XML che descrive gli estremi di una legge. <? xml version=“ 1. 0”? > <Legge> <Intestazione> <Data. Legge>7 Dicembre 2000</Data. Legge> <Numero. Legge>383</Numero. Legge> <Titolo. Legge>Disciplina delle associazioni di promozione sociale</Titolo. Legge> </Intestazione> </Legge> 20 Dicembre 2005 Stefano Clemente 5

 XML è un linguaggio di marcatura estensibile q • L'insieme delle marcature utilizzabili

XML è un linguaggio di marcatura estensibile q • L'insieme delle marcature utilizzabili per creare un documento XML non è predefinito, a differenza di HTML per il quale il W 3 C ha definito l'insieme dei tag utilizzabili e il loro significato. L'autore del documento XML definisce i propri tag in base alla tipologia dei dati da descrivere. Per autore s'intende l'insieme dei soggetti interessati alla distribuzione di documenti XML che descrivono una certa tipologia semantica e che concordano insieme una struttura comune da adottare (vedi lezione sui DTD). 20 Dicembre 2005 Stefano Clemente 6

 XML è un linguaggio per la descrizione semantica dei dati q • XML

XML è un linguaggio per la descrizione semantica dei dati q • XML è stato progettato per trattare la descrizione delle informazioni, ossia concentra l’attenzione sul significato dei dati. Ad esempio, nel documento XML precedente <? xml version=“ 1. 0”? > <Legge> <Intestazione> <Data. Legge>7 Dicembre 2000</Data. Legge> <Numero. Legge>383</Numero. Legge> <Titolo. Legge>Disciplina delle associazioni di promozione sociale</Titolo. Legge> </Intestazione> </Legge> le marcature indicano in maniera “non ambigua” il significato di ciascun dato; un’applicazione è così in grado di estrarre correttamente tutte le informazioni contenute nel documento senza incorrere in errori interpretativi. 20 Dicembre 2005 Stefano Clemente 7

 XML NON è orientato ad uno specifico tipo di elaborazione q • XML

XML NON è orientato ad uno specifico tipo di elaborazione q • XML è stato creato esclusivamente come uno strumento per strutturare, memorizzare e scambiare informazioni. Ad esempio, in questo documento che descrive un articolo di una legge, <? xml version=“ 1. 0”? > <Articolo Num=“ 1”> <Rubrica>Finalità e oggetto della legge</Rubrica> <Comma Num=“ 1”>La Repubblica conosce il valore. . . </Comma> </Articolo> non è contenuta alcuna istruzione finalizzata all’elaborazione dei dati; si tratta di pura informazione confezionata nelle marcature XML. Occorre utilizzare un’applicazione specifica per inviare, ricevere o visualizzare il documento XML. Le marcature, evidenziando la semantica delle informazioni contenute in un documento, rendono semplice la progettazione e la realizzazione di applicazioni in grado di elaborare i dati. 20 Dicembre 2005 Stefano Clemente 8

 XML versus HTML q I linguaggi XML e HTML sono stati progettati per

XML versus HTML q I linguaggi XML e HTML sono stati progettati per svolgere compiti diversi: • XML è stato pensato per descrivere i dati ed è incentrato sul valore semantico; XML riguarda la descrizione delle informazioni • HTML è stato pensato per visualizzare i dati ed è incentrato sull’aspetto con il quale il dato è presentato; HTML tratta la visualizzazione delle informazioni • XML è estensibile, è un metalinguaggio nel senso che permette di definire altri linguaggi di marcatura (esempio: il linguaggio Wireless Markup Language usato per le connessioni senza cavo) • HTML non è estensibile • XML mantiene separate la struttura del documento dalle regole per la sua visualizzazione (lo capiremo meglio in seguito. . . ) • HTML usa elementi per la struttura insieme ad elementi per la visualizzazione 20 Dicembre 2005 Stefano Clemente 9

Benefici di XML q Condivisione dati indipendente da hardware e software q Applicazioni Web

Benefici di XML q Condivisione dati indipendente da hardware e software q Applicazioni Web più potenti q Applicazioni Web più flessibili 20 Dicembre 2005 Stefano Clemente 10

 Condivisione dati indipendente da hardware e software q Con XML è possibile condividere

Condivisione dati indipendente da hardware e software q Con XML è possibile condividere e scambiare dati in modo indipendente dall’hardware e dal software. Poichè i dati sono memorizzati in formato testuale piatto, ossia senza caratteri speciali aggiuntivi, XML fornisce un modo di condividere e scambiare i dati indipendente dal sistema operativo (Mac, Windows, UNIX) e dal software. Attualmente i sistemi di database contengono dati in formati incompatibili fra loro. Fino ad oggi, le società di software hanno investito molte risorse nello studio e nella realizzazione di programmi per lo scambio di dati su Internet fra diversi sistemi. La conversione in XML riduce fortemente la complessità dei programmi e crea documenti che possono essere letti da molte applicazioni di tipo diverso. 20 Dicembre 2005 Stefano Clemente 11

 Applicazioni Web più potenti q Dal momento che XML consente di evidenziare, attraverso

Applicazioni Web più potenti q Dal momento che XML consente di evidenziare, attraverso i tag, la semantica di un testo, è possibile semplificare la creazione di applicazioni che elaborano documenti elettronici in modo intelligente. Esempio: un motore di ricerca sarà in grado di reperire tutti gli articoli di una legge che contengono riferimenti normativi esterni, oppure di trovare gli articoli che contengono una certa parola nella rubrica, ecc. . . In questo modo è possibile superare uno dei limiti dell’HTML, i cui dati sono formattati per la presentazione a video e risultano difficili da trattare per una elaborazione di altro tipo. 20 Dicembre 2005 Stefano Clemente 12

 Applicazioni Web più flessibili q I documenti basati sull’XML possono essere utilizzati da

Applicazioni Web più flessibili q I documenti basati sull’XML possono essere utilizzati da un Web client elaborando i dati che vi sono contenuti in differenti processi software non predeterminati. Esempio: è possibile sviluppare applicazioni che richiedono al Web client di presentare viste diverse degli stessi dati. 20 Dicembre 2005 Stefano Clemente 13

Fondamenti di XML Sommario Ø In questa lezione abbiamo appreso: • XML è un

Fondamenti di XML Sommario Ø In questa lezione abbiamo appreso: • XML è un acronimo di e. Xtensible Markup Language • XML è un linguaggio di marcatura come HTML, ma con diverse finalità • XML è un linguaggio di marcatura estensibile • XML è stato progettato per descrivere dati Ø Passi successivi: la prossima lezione sarà dedicata alla sintassi di XML e ci permetterà di comprendere alcuni esempi di documenti XML. 20 Dicembre 2005 Stefano Clemente 14

Sintassi di XML Ø Struttura logica di un documento XML Ø Sintassi di elementi

Sintassi di XML Ø Struttura logica di un documento XML Ø Sintassi di elementi e attributi Ø Albero di un documento XML Ø Documento XML ben formato 20 Dicembre 2005 Stefano Clemente

Struttura logica di un documento PROLOGO <? xml version="1. 0"? encoding=“. . . ”

Struttura logica di un documento PROLOGO <? xml version="1. 0"? encoding=“. . . ” standalone=“. . . ”> <!-- Questo è un documento XML --> <!DOCTYPE. . . > <documento> <titolo>Documento XML</titolo> <data>22/03/2003</data> <testo>Documento testuale in XML</testo> </documento> CORPO DEL DOCUMENTO 20 Dicembre 2005 Stefano Clemente 16

Prologo • Il prologo contiene informazioni utili per l’interpretazione del documento. • In particolare,

Prologo • Il prologo contiene informazioni utili per l’interpretazione del documento. • In particolare, può contenere: § Una dichiarazione che il documento è in formato xml (opzionale). § Una descrizione esplicita della struttura del documento (Document Type Definition) (opzionale). § Commenti e informazioni per applicazioni software che utilizzeranno il documento (zero o più). § Eventuali commenti. 20 Dicembre 2005 Stefano Clemente 17

Processing Instructions § I documenti XML vengono solitamente processati da applicazioni software. § Può

Processing Instructions § I documenti XML vengono solitamente processati da applicazioni software. § Può essere necessario fornire a questi programmi informazioni necessarie per elaborare un documento (processing instructions). § Le processing instructions vanno inserite nel prologo del documento e sono sempre racchiuse tra <? e ? >. q Ad esempio, informare un browser che deve utilizzare un certo foglio di stile per visualizzare i dati in HTML (lo verdremo. . . ). <? xml-stylesheet type=“text/css” href=“style. css”? > 20 Dicembre 2005 Stefano Clemente 18

Corpo del documento: Elementi Un elemento XML è l’insieme di un tag di apertura,

Corpo del documento: Elementi Un elemento XML è l’insieme di un tag di apertura, un tag di chiusura e dei dati compresi fra i due tag. Esempio: <Titolo. Legge>Disciplina delle associazioni di promozione sociale</Titolo. Legge> Alcuni elementi XML possono essere vuoti, cioè privi di valore; in questo caso si possono usare le seguenti due codifiche alternative ed equivalenti: • <Data. Fine. Lezione> </Data. Fine. Lezione> • <Data. Fine. Lezione/> 20 Dicembre 2005 Stefano Clemente 19

Regole sintattiche Il tag di chiusura deve essere sempre presente. In XML tutti gli

Regole sintattiche Il tag di chiusura deve essere sempre presente. In XML tutti gli elementi devono avere un tag di chiusura. Esempio: <Comma>1. . . . </Comma> <Comma>2. . . . </Comma> NOTA: ciò non è richiesto in HTML, dove alcuni elementi possono non avere il tag di chiusura, dato che la sintassi del linguaggio non lo richiede obbligatoriamente. Esempio: <p>Questo è un paragrafo. <b>Questo è un testo in grassetto. 20 Dicembre 2005 Stefano Clemente 20

Altre regole. . . XML è case-sensitive, quindi c’è differenza tra caratteri maiuscoli e

Altre regole. . . XML è case-sensitive, quindi c’è differenza tra caratteri maiuscoli e minuscoli. I seguenti elementi: <Titolo. Legge>Protezione dell’ambiente</Titolo. Legge> <titololegge>Protezione dell’ambiente</titololegge> sono diversi tra loro! Il tag di apertura e il corrispondente tag di chiusura devono avere lo stesso nome anche in termini di maiuscole e minuscole: <TAG> </TAG> è corretto <TAG> </Tag> non è corretto 20 Dicembre 2005 Stefano Clemente 21

Altre regole. . . Gli elementi devono essere correttamente nidificati. • In XML un

Altre regole. . . Gli elementi devono essere correttamente nidificati. • In XML un elemento può essere contenuto (nidificato) in un altro; nell’esempio che segue, l’elemento Comma è nidificato all’interno dell’elemento Articolo. Esempio: <Articolo> <Comma>1. . . </Comma> </Articolo> • L’ordine di chiusura dei tag deve essere inverso rispetto all’ordine di apertura (in HTML non è sempre richiesto). Esempio errato: <Articolo> <Comma>1. . . </Articolo> </ Comma > • Deve esistere un tag (unico) che contenga tutti gli altri e questo tag si dice tag root (radice). 20 Dicembre 2005 Stefano Clemente 22

Altre regole. . . I nomi dei tag possono essere inventati a nostro piacere,

Altre regole. . . I nomi dei tag possono essere inventati a nostro piacere, a patto che rispettiamo alcune regole di definizione dei nomi: • Devono iniziare con un carattere o con un underscore ( _ ). • Non possono iniziare con numeri. • Possono contenere un qualsiasi numero di lettere, numeri, trattini, punti, underscore. • Non possono contenere spazi. • Conviene evitare di utilizzare le tre lettere xml nei nomi dei tag perchè spesso queste corrispondono a nomi utilizzati anche da tecnologie elaborate dai gruppi di lavoro sull’XML del W 3 C. 20 Dicembre 2005 Stefano Clemente 23

Caratteri riservati Nel caso in cui sia necessario scrivere all’interno del testo del documento

Caratteri riservati Nel caso in cui sia necessario scrivere all’interno del testo del documento dei caratteri particolari (come <, >, &, ecc. . . ) occorre fare riferimento al loro corrispondente entity-name, che consiste in una &, un nome e un punto e virgola finale. Esempio: se vogliamo scrivere la frase Carattere Entity-name < < & & L’Osservatorio nazionale, denominato in seguito con “Osservatorio”, . . . > > dobbiamo codificarlo nel seguente modo: " " ' &apos; 20 Dicembre 2005 L&apos; Osservatorio nazionale, denominato in seguito con " Osservatorio" , . . . Stefano Clemente 24

Attributi Gli attributi vengono utilizzati per aggiungere una caratteristica o una proprietà ad un

Attributi Gli attributi vengono utilizzati per aggiungere una caratteristica o una proprietà ad un elemento. • Un attributo è una coppia nome-valore separata da un segno di uguale (=) che può essere presente all’interno del tag di apertura di un elemento, dopo il nome dell’elemento stesso. • Un elemento può contenere uno o più attributi. • Il valore di un attributo deve essere racchiuso fra “ ” o ‘ ’. • Ogni attributo è sempre associato ad un elemento, non ha vita autonoma. • Lo stesso attributo può ricorrere anche in più elementi. 20 Dicembre 2005 Stefano Clemente 25

Attributi: esempi <Prezzo Valuta=“Euro”>10</Prezzo> <Prezzo Valuta=‘Euro’>20</Prezzo> CORRETTI <Prezzo Valuta=Euro>10</Prezzo> <Prezzo>20</Prezzo Valuta=“Euro” > SBAGLIATI 20

Attributi: esempi <Prezzo Valuta=“Euro”>10</Prezzo> <Prezzo Valuta=‘Euro’>20</Prezzo> CORRETTI <Prezzo Valuta=Euro>10</Prezzo> <Prezzo>20</Prezzo Valuta=“Euro” > SBAGLIATI 20 Dicembre 2005 Stefano Clemente 26

Albero XML Ogni documento XML deve contenere un solo elemento radice, cioè un elemento

Albero XML Ogni documento XML deve contenere un solo elemento radice, cioè un elemento che racchiude tutti gli altri elementi secondo una struttura di relazione padre-figlio, cioè strettamente gerarchica. L’elemento radice è il primo elemento di un documento XML. Le relazioni gerarchiche esistenti fra i vari elementi danno vita al cosiddetto albero XML. 20 Dicembre 2005 Stefano Clemente 27

Albero XML: esempio Versione testuale Versione grafica <Legge> . . . <Titolo. Legge>. .

Albero XML: esempio Versione testuale Versione grafica <Legge> . . . <Titolo. Legge>. . . </Titolo. Legge> <Articolato> <Capo Num=“I”> <Articolo Num=“ 1”> <Rubrica></Rubrica> <Comma Num=“ 1”>. . . </Comma> <Comma Num=“ 2”>. . . </Comma> </Articolo> </Capo> </Articolato> </Legge> 20 Dicembre 2005 Stefano Clemente elemento radice Legge Titolo. Legge Articolato Capo Articolo Rubrica Comma 28

Documento ben formato (1 di 3) Un documento XML si dice ben formato se:

Documento ben formato (1 di 3) Un documento XML si dice ben formato se: • Tutti i tag di apertura e chiusura corrispondono, anche nei caratteri maiuscoli e minuscoli. Esempio: <Titolo>Tesi di Laurea</Titolo> • Ogni elemento (tag) deve essere chiuso esplicitamente, o con un tag di chiusura o con una forma contratta. Esempio: <Libro isbn="2 -266 -04744 -2"> <Titolo>Il libro della Giungla</Titolo> <Prezzo euro=“ 7”/> </Libro> 20 Dicembre 2005 Stefano Clemente 29

Documento ben formato (2 di 3) • Tutti i tag sono correttamente nidificati. Esempio:

Documento ben formato (2 di 3) • Tutti i tag sono correttamente nidificati. Esempio: <Articolo Num=“ 1”> <Rubrica>Finalità e oggetto della legge</Rubrica> <Comma Num=“ 1”>La Repubblica. . . </Comma> </Articolo> • Esiste un elemento radice che contiene tutti gli altri. Esempio: <Legge> . . . </Legge> 20 Dicembre 2005 Stefano Clemente 30

Documento ben formato (3 di 3) • Tutti i valori degli attributi sono racchiusi

Documento ben formato (3 di 3) • Tutti i valori degli attributi sono racchiusi fra apici o doppi apici. Esempio: <Articolo Num=“ 1”> • Un elemento non può avere più attributi con lo stesso nome. Esempio corretto: <libro> <autore>Rossi</autore> <autore>Verdi</autore> </libro> Esempio scorretto: 20 Dicembre 2005 <libro autore=“Rossi” autore=“Verdi”/> Stefano Clemente 31

Esempio: documento ben formato <? xml version=“ 1. 0”? > <Libro> <Titolo>XML tascabile</Titolo> <Editore>Mondadori

Esempio: documento ben formato <? xml version=“ 1. 0”? > <Libro> <Titolo>XML tascabile</Titolo> <Editore>Mondadori Informatica Libri</Editore> <Prezzo Valuta=“Euro”>7. 70</Prezzo> <Descrizione>Si tratta di un tascabile che accompagna il lettore nella scoperta della tecnologia XML e delle sue applicazioni concrete nello sviluppo di software. </Descrizione> <Struttura> <Pagine>288</Pagine> <Capitoli>12</Capitoli> <Appendici>2</Appendici> </Struttura> </Libro> 20 Dicembre 2005 Stefano Clemente 32

Esempio: documento non ben formato <? xml version=“ 1. 0”? > <Libro> <Titolo>XML tascabile</Titolo>

Esempio: documento non ben formato <? xml version=“ 1. 0”? > <Libro> <Titolo>XML tascabile</Titolo> <Editore>Mondadori Informatica Libri</Editore> <Prezzo Valuta=Euro>7. 70</Prezzo> <Descrizione>Si tratta di un tascabile che accompagna il lettore nella scoperta della tecnologia XML e delle sue applicazioni concrete nello sviluppo di software. </descrizione> <Struttura> <Pagine>288<Capitoli> </Pagine>12</Capitoli> <Appendici>2</Appendici> </struttura> </Libro> 20 Dicembre 2005 Stefano Clemente 33

Parser XML (1 di 2) Per elaborare un documento XML occorre un apposito programma

Parser XML (1 di 2) Per elaborare un documento XML occorre un apposito programma software chiamato parser processore XML Operazioni svolte dal parser: • legge il documento XML • controlla se è ben formato, cioè controlla la sua sintassi • segnala eventuali errori • elabora il contenuto del documento 20 Dicembre 2005 Stefano Clemente 34

Parser XML (2 di 2) • Molti parser XML possono essere scaricati gratuitamente dal

Parser XML (2 di 2) • Molti parser XML possono essere scaricati gratuitamente dal Web. • Alcuni applicazioni, come ad esempio il browser Microsoft Internet Explorer 5 (IE 5), includono i loro parser XML. • Nel prossimo esempio utilizzeremo il parser XML di IE 5, chiamato msxml. Fra i parser più noti figurano Xerces di Apache, Java API for XML Parsing (JAXP) di Sun Microsystem e XML for Java (XML 4 J) dell’IBM. 20 Dicembre 2005 Stefano Clemente 35

Il parser msxml (1 di 3) • Un documento XML contiene dati, non informazioni

Il parser msxml (1 di 3) • Un documento XML contiene dati, non informazioni formattate. Quando un documento XML viene caricato in IE 5, viene elaborato dal parser msxml. • Se il documento è ben formato, il parser mette a disposizione dell’applicazione (IE 5) i dati, utilizzando il documento XML. • L’applicazione può formattare e rappresentare i dati o svolgere altre elaborazioni. • Creiamo per esempio un documento XML chiamato intro. xml. 20 Dicembre 2005 Stefano Clemente 36

Il parser msxml (2 di 3) • Carichiamo il file intro. xml in IE

Il parser msxml (2 di 3) • Carichiamo il file intro. xml in IE 5: il browser visualizza i dati (come indica la videata sotto), applicando un foglio di stile (stylesheet) che formatta e colora i simboli di markup. • Il foglio di stile potrebbe applicare altri tipi di formattazione per rappresentare il documento XML, ma questa formattazione è quella di default scelta di Microsoft. 20 Dicembre 2005 Stefano Clemente 37

Il parser msxml (3 di 3) • Se un documento XML non è ben

Il parser msxml (3 di 3) • Se un documento XML non è ben formato, il parser genera un errore. 20 Dicembre 2005 Stefano Clemente 38

Sintassi di XML Sommario Ø In questa lezione abbiamo appreso: • qual’è la struttura

Sintassi di XML Sommario Ø In questa lezione abbiamo appreso: • qual’è la struttura logica di un documento XML • cos’è un elemento XML • cos’è un attributo XML • la definizione di documento ben formato • che cos’è un parser XML (msxml) Ø Passi successivi: la prossima lezione sarà dedicata allo spazio dei nomi, o Namespace. 20 Dicembre 2005 Stefano Clemente 39

XML Namespaces Ø Problema: conflitto di nomi Ø Soluzione: Namespaces Ø Namespaces in XML

XML Namespaces Ø Problema: conflitto di nomi Ø Soluzione: Namespaces Ø Namespaces in XML 20 Dicembre 2005 Stefano Clemente

Conflitto di nomi Sulla base di quanto visto finora sembra che la produzione di

Conflitto di nomi Sulla base di quanto visto finora sembra che la produzione di documenti XML lasci molto spazio al libero arbitrio, in particolare se pensiamo ai nomi che si possono assegnare ai tag e agli attributi. In effetti, a patto che si rispettino le regole viste nei lucidi precedenti, i nomi dei tag e degli attributi li possiamo davvero inventare a nostro piacere! Nasce quindi un problema: cosa succede se inventiamo dei nomi a cui ha già pensato qualcun altro? CONFLITTO DI NOMI!!! (elementi semanticamente differenti con lo stesso nome) 20 Dicembre 2005 Stefano Clemente 41

Conflitto di nomi: esempio <? xml version=“ 1. 0”? > <Prodotto> <Codice>PP 2305</Codice> <Prezzo

Conflitto di nomi: esempio <? xml version=“ 1. 0”? > <Prodotto> <Codice>PP 2305</Codice> <Prezzo Valuta=“Euro”>347</Prezzo> </Prodotto> Rappresenta un codice di un prodotto. <? xml version=“ 1. 0”? > <Cliente> <Codice>GC 1234</Codice> <Nome>Giulio</Nome> <Cognome>Rossi</Cognome> </Cliente> Rappresenta un codice di un cliente. 20 Dicembre 2005 Stefano Clemente 42

Soluzione: Namespaces • Per Namespace in generale si intende un insieme di parole e

Soluzione: Namespaces • Per Namespace in generale si intende un insieme di parole e quindi di nomi. Nel caso dell’XML, per Namespace si intende l’insieme delle parole chiave che si utilizzano per denominare i tag e gli attributi. IDEA: se nel momento in cui produciamo un documento XML associamo le parole chiave a un Namespace, allora possiamo evitare confusione e conflitti! • Esempio: ogni volta che dobbiamo parlare di un cliente, dobbiamo indicare che stiamo utilizzando le parole chiave che per noi riguardano la descrizione di un cliente. • Quindi il problema di rendere distinguibili le parole chiave si sposta alla sola distinzione dei Namespace a cui le parole appartengono. 20 Dicembre 2005 Stefano Clemente 43

Soluzione: Namespaces (1) scienza giornalismo grammatica <articolo> La Ferrari trionfa ancora! </articolo> <articolo> Un

Soluzione: Namespaces (1) scienza giornalismo grammatica <articolo> La Ferrari trionfa ancora! </articolo> <articolo> Un </articolo> prodotti <articolo> Aspirapolvere WS-02 </articolo> <articolo> A Relational Model of Data for Large Shared Data Banks </articolo> 20 Dicembre 2005 Stefano Clemente 44

Soluzione: Namespaces (2) giornalismo scienza prodotti <? xml version="1. 0"? > <notizia> <articolo>La Ferrari

Soluzione: Namespaces (2) giornalismo scienza prodotti <? xml version="1. 0"? > <notizia> <articolo>La Ferrari trionfa ancora!</articolo> Grazie al nuovo <articolo>alettone</articolo> descritto in <articolo>Improving F 2003 -GA performance</articolo> la rossa… </notizia> 20 Dicembre 2005 Stefano Clemente 45

Namespaces Come rendere unico un Namespace? Tramite il suo nome! E’ sufficiente assegnare un

Namespaces Come rendere unico un Namespace? Tramite il suo nome! E’ sufficiente assegnare un nome unico e privo di ambiguità alla nostra famiglia di parole chiave per rendere riconoscibili anche le sue parole. • Il gruppo di lavoro del W 3 C che ha elaborato i Namespace si è preoccupato di definire come questi debbano essere utilizzati nei documenti ed ha adottato come tecnica di denominazione quella degli URI (Uniform Resource Identifier). 20 Dicembre 2005 Stefano Clemente 46

URIs in XML Namespaces (1) • Un URI viene utilizzato per identificare univocamente un

URIs in XML Namespaces (1) • Un URI viene utilizzato per identificare univocamente un Namespace • Un URI può avere la forma di un URL (Uniform Resource Locator) o URN (Uniform Resource Name) • Per essere sicuri di identificare in maniera unica un Namespace si preferisce usare gli URLs Nota importante: l’uso di un URL potrebbe confondere perchè sembra un indirizzo Web, ma non è così! Il processore XML NON va a controllare questo indirizzo!! Infatti, in molti casi, l’URL è un indirizzo fittizio e non c’è nessun documento all’indirizzo Web referenziato dall’URL. L’URL serve solamente come identificatore unico per un Namespace 20 Dicembre 2005 Stefano Clemente 47

URIs in XML Namespaces (2) La ragione principale per la quale vengono utilizzati gli

URIs in XML Namespaces (2) La ragione principale per la quale vengono utilizzati gli URLs come URIs per i Namespaces è che gli URLs sono unici! Molti autori di documenti XML solitamente posseggono nomi di domini per i quali hanno diritti esclusivi. Questo significa che costruendo URLs fittizi basati su questi nomi di domini, gli autori possono garantire che i loro identificatori di Namespace saranno unici. Gli URIs devono essere unici per assicurare che nessuna dichiarazione abbia lo stesso URI. 20 Dicembre 2005 Stefano Clemente 48

Utilizzare i Namespaces (1) In XML un namespace viene identificato da un URI (URL

Utilizzare i Namespaces (1) In XML un namespace viene identificato da un URI (URL o URN). http: //www. giornalismo. it/schema Per brevità e comodità, questo URI può essere associato a un nome più breve (alias o prefisso) per poi utilizzarlo all’interno del documento. news 20 Dicembre 2005 http: //www. giornalismo. it/schema Stefano Clemente 49

Utilizzare i Namespaces (2) Infine, il nome che si riferisce al namespace viene associato

Utilizzare i Namespaces (2) Infine, il nome che si riferisce al namespace viene associato agli elementi (o attributi) che si vuole caratterizzare. http: //www. giornalismo. it/schema news : articolo 20 Dicembre 2005 Stefano Clemente 50

Namespaces e XML (1) In XML un namespace viene identificato da un URI. <?

Namespaces e XML (1) In XML un namespace viene identificato da un URI. <? xml version=“ 1. 0”? > <notizia xmlns='http: //www. giornalismo. it/schema'> <articolo>…</articolo> </notizia> L’attributo xmlns indica all’intero documento che qualsiasi tag o attributo dovrà essere ricondotto al Namespace che ha nome http: //www. giornalismo. it/schema (salvo che non vi siano indicazioni diverse su tag a livello di profondità maggiore). 20 Dicembre 2005 Stefano Clemente 51

Namespaces e XML (2) Per brevità e comodità, questo URI può essere associato a

Namespaces e XML (2) Per brevità e comodità, questo URI può essere associato a un nome più breve (alias o prefisso) per poi utilizzarlo all’interno del documento. <? xml version=“ 1. 0”? > <notizia xmlns: news='http: //www. giornalismo. it/schema'> <articolo>…</articolo> </notizia> 20 Dicembre 2005 Stefano Clemente 52

Namespaces e XML (3) Infine, il nome che si riferisce al namespace viene associato

Namespaces e XML (3) Infine, il nome che si riferisce al namespace viene associato agli elementi (o attributi) che si vuole caratterizzare. <? xml version=“ 1. 0”? > <notizia xmlns: news=‘http: //www. giornalismo. it/schema’ xmlns: sport=‘http: //www. giornalismo. it/sport’> <news: articolo>…</news: articolo> <sport: risultato>…</sport: risultato> </notizia> Ogni tag o attributo che ha davanti il nome news: fa parte del Namespace indicato con la sintassi xmlns: news, mentre qualsiasi tag o attributo preceduto da sport: è da riferire a xmlns: sport. 20 Dicembre 2005 Stefano Clemente 53

Dichiarazioni di Namespaces Abbiamo visto due modi per dichiarare un Namespace: 1) Dichiarazione di

Dichiarazioni di Namespaces Abbiamo visto due modi per dichiarare un Namespace: 1) Dichiarazione di default Namespace: si usa l’attributo xmlns. <doc xmlns=“http: //www. cs. unibo. it/articoli”>. . . </doc> 2) Dichiarazione di Namespace con alias (o prefisso): si usa l’attributo xmlns seguito da : e da un alias che sarà poi utilizzato come prefisso del nome di tag o attributo. <doc xmlns=“http: //www. cs. unibo. it/articoli” xmlns: lib=“http: //libri. org”>. . . </doc> 20 Dicembre 2005 Stefano Clemente 54

Esempio <? xml version=“ 1. 0”? > <Ordine xmlns=“http: //www. xmltascabile. it/NS/Ordine” xmlns: prodotto=“http:

Esempio <? xml version=“ 1. 0”? > <Ordine xmlns=“http: //www. xmltascabile. it/NS/Ordine” xmlns: prodotto=“http: //www. xmltascabile. it/NS/Prodotto” xmlns: cliente=“http: //www. xmltascabile. it/NS/Cliente”> <prodotto: Prodotto> <prodotto: Codice>PP 2305</prodotto: Codice> <prodotto: Prezzo Valuta=“Euro”>347</prodotto: Prezzo> </prodotto: Prodotto> <cliente: Cliente> <cliente: Codice>GC 1234</cliente: Codice> <cliente: Nome>Giulio</cliente: Nome> <cliente: Cognome>Rossi</cliente: Cognome> </cliente: Cliente> </Ordine> 20 Dicembre 2005 Stefano Clemente 55

Visibilità dei Namespaces (1) Il Namespace di default si applica: • All’elemento in cui

Visibilità dei Namespaces (1) Il Namespace di default si applica: • All’elemento in cui è dichiarato, se non c’è una associazione esplicita con altro Namespace. • Agli elementi discendenti, se non ci sono associazioni esplicite con altri Namespace. <doc xmlns=“http: //www. cs. unibo. it/articoli” xmlns: lib=“http: //libri. org”> <titolo>Guida a Win. MX</titolo> <lib: autori lib: id-gruppo=“g 03”> <autore id=“ 001”>Pinco Palla</autore> </lib: autori> </doc> 20 Dicembre 2005 Stefano Clemente 56

Visibilità dei Namespaces (2) Il Namespace con alias si applica: • Agli elementi discendenti

Visibilità dei Namespaces (2) Il Namespace con alias si applica: • Agli elementi discendenti (compreso sè stesso), ove sia presente il prefisso. • Agli attributi di elementi discendenti (compresi i propri), ove sia presente il prefisso. <doc xmlns=“http: //www. cs. unibo. it/articoli” xmlns: lib=“http: //libri. org”> <titolo>Guida a Win. MX</titolo> <lib: autori lib: id-gruppo=“g 03”> <autore id=“ 001”>Pinco Palla</autore> </lib: autori> </doc> 20 Dicembre 2005 Stefano Clemente 57

Esempio <? xml version=“ 1. 0”? > <!-- Uso dei namespace --> <directory xmlns:

Esempio <? xml version=“ 1. 0”? > <!-- Uso dei namespace --> <directory xmlns: text = “urn: deitel: text. Info” xmlns: image = “urn: deitel: image. Info”> <text: filename = “book. xml”> <text: description> Un libro. . . </text: description> </text: file> <image: filename = “funny. jpg”> <image: description> Una figura. . . </image: description> <image: size width = “ 200” height = “ 100” /> </image: file> </directory> 20 Dicembre 2005 Stefano Clemente 58

Osservazione E’ sempre una buona idea assegnare Namespaces ai propri documenti XML! Anche se

Osservazione E’ sempre una buona idea assegnare Namespaces ai propri documenti XML! Anche se apparentemente non ci sono conflitti di nomi all’interno dei vostri documenti (o con altri documenti), un altro autore potrebbe in futuro aggiungere o cambiare elementi in un proprio documento XML. Queste modifiche potrebbero creare conflitti di nomi che inizialmente non erano presenti nei vostri documenti. 20 Dicembre 2005 Stefano Clemente 59

Namespaces Sommario Ø In questa lezione abbiamo appreso: • il problema del “conflitto dei

Namespaces Sommario Ø In questa lezione abbiamo appreso: • il problema del “conflitto dei nomi” • la sua soluzione: utilizzo di Namespaces • utilizzare i Namespaces in XML • visibilità dei Namespaces in documenti XML Ø Passi successivi: la prossima lezione sarà dedicata al Document Type Definition (DTD). 20 Dicembre 2005 Stefano Clemente 60