Presentazione del corso - Luca Andrea Ludovico | Official

Download Report

Transcript Presentazione del corso - Luca Andrea Ludovico | Official

Presentazione 7.1
Introduzione a
Extensible Markup Language (XML)
Informatica Generale (Prof. Luca A. Ludovico)
Introduzione
• XML (acronimo di eXtensible Markup Language) è un
metalinguaggio di markup, ovvero un linguaggio
marcatore che definisce un meccanismo sintattico
che consente di estendere o controllare il significato
di altri linguaggi marcatori.
• Il nome indica quindi che si tratta di un linguaggio
marcatore (markup language) estensibile (eXtensible)
in quanto permette di creare tag personalizzati.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Cos’è, e cosa non è XML
• XML è contemporaneamente:
–
–
–
–
Linguaggio di annotazione o etichettatura o marcatura (markup) che
permette di creare gruppi di marcatori o etichette (tag set)
personalizzati
Formato standard per lo scambio dei dati
Metalinguaggio per creare documenti arricchiti da informazioni
addizionali
Un supporto per la costruzione di formati specifici per gli usi più
disparati
(esempi: MathML, XHTML, ChemicalML, ecc..)
• XML non è:
–
–
Un sostituto di HTML: le pagine web continueranno ad essere scritte in
HTML. XML è un metalinguaggio, HTML è un linguaggio
Un linguaggio di programmazione: ogni documento XML contiene dati ed
informazioni sui dati. Questi vengono poi estratti ed elaborati dalle varie
applicazioni.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Il background di XML
• Sottoinsieme di Standard Generalized Markup
Language (SGML)
• La sua adozione estensiva deriva dal successo
dell’HMTL come linguaggio per descrivere pagine Web
• Standard approvato dal World Wide Web Consortium
(W3C, http://www.w3.org)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Benefici di XML
• Interscambiabilità su Internet
• Struttura gerarchica
• Intelligibilità
• Estensibilità
• Disponibilità di tool per l’implementazione del
formato
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
I tag in XML (1)
• In un documento XML possiamo “inventare” i tag
<?xml version="1.0"?>
<note>
<from>Carlo</from>
<to>Luca</to>
<title>Appuntamento</title>
<message>Ricordati la riunione del <date>9/1/2008</date></message>
</note>
• La scelta dei tag può essere effettuata a seconda
delle informazioni che interessa rappresentare.
I tag in XML (2)
• La prima linea del documento (opzionale) identifica lo stesso
come un XML ed indica anche la versione
• Il primo tag <note> identifica la radice del documento. In
linguaggio naturale: “questo documento è una nota”.
• I restanti tag specificano il contenuto della nota in termini di
titolo, mittente, destinatario e messaggio
• L’ultimo tag </note> conclude la descrizione della nota
• I tag si dividono in:
– Tag di apertura (start tag): <nometag> es: <note>
– Tag di chiusura (end tag): </nometag> es: </note>
– Tag vuoti (empty tag): <nometag/>
es: <note/>
Un esempio in XML
<?xml version="1.0" encoding="UTF-8"?>
<utenti>
<utente>
<nome>Luca</nome>
<cognome>Ruggero</cognome>
<indirizzo>Milano</indirizzo>
</utente>
<utente>
<nome>Max</nome>
<cognome>Rossi</cognome>
<indirizzo>Roma</indirizzo>
</utente>
</utenti>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Elementi
• Un elemento XML è tutto ciò che è compreso tra un tag di apertura
(incluso) ed il corrispettivo tag di chiusura (incluso)
<nometag>contenuto</nometag>
• Tra i due tag si trova il contenuto dell’elemento, che può essere:
–
–
–
–
Simple content: se il contenuto è un semplice testo.
Esempio: l’elemento <title>
Element content: se il contenuto è costituito da altri elementi.
Esempio: l’elemento <note>
Mixed content: se contiene testo inframezzato da altri elementi.
Esempio: l’elemento <message>
Empty content: se il contenuto dell’elemento è vuoto
• Per un elemento vuoto la coppia apertura/chiusura può essere
sostituita da un tag vuoto
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Esempio
Markup
Start tag
<address>
<street>33, Terry Dr.</street>
Content
<city>Morristown</city>
</address>
End tag
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Esempio
• Un elemento può contenere:
– Altri elementi
<address>
<street>33, Terry Dr.</street>
<city>Morristown</city>
</address>
– Testo semplice
<street>33, Terry Dr.</street>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Estendibilità degli elementi
• Gli elementi in XML sono estendibili
• In questo modo è possibile mantenere compatibilità delle nuove
versioni del formato con versioni precedenti del software
(backward compatibility)
• Es:
Versione 1.0
<?xml version="1.0"?>
<note>
<from>Carlo</from>
<to>Luca</to>
<title>Appuntamento</title>
<message>Ricordati la riunione di
oggi</message>
</note>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Versione 2.0
<?xml version="1.0"?>
<note>
<from>Carlo</from>
<to>Luca</to>
<title>Appuntamento</title>
<message>Ricordati la riunione di
oggi</message>
<date>2003-01-10</date>
</note>
Modello ad albero
• Gli elementi in XML sono in relazione (di contenimento, di
paternità, …) tra di loro e queste relazioni determinano il modello
del documento
• Il documento è organizzato come un albero, in cui la relazione di
contenimento tra elementi è equivalente alla relazione nodosottonodo
• Es: <to>, <from>, <title> e <message> sono sottoelementi di <note>
<?xml version="1.0"?>
<note>
<to>Luca</to>
<from>Carlo</from>
<title>Appuntamento</title>
<message>Ricordati la riunione di oggi</message>
</note>
• L’entità che non è sottoentità di nessuno (es: <note>) è l’elemento
radice (root element)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Attributi
• Gli attributi sono informazioni aggiuntive che possono essere
inserite negli elementi XML per completarne o arricchirne
l’informazione.
<nometag attr1=“val1” attr2=“val2” ...>...</nometag>
• Vengono inseriti solo nei tag di apertura (o nei tag vuoti)
• Sintassi: coppie nome = “valore”
• Il valore degli attributi è racchiuso o tra apici singoli o tra apici
doppi
• Nome attributo deve essere univoco nell’elemento.
<message language=“IT”>Ricordati la riunione di oggi</message>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Attributi o elementi?
• Spesso le stesse informazioni possono essere
rappresentate sia tramite attributi che tramite
(sotto)elementi.
Sottoelementi
<note>
<title>Appuntamento</title>
<to>Luca</to>
<from>Carlo</from>
<message>ABC123</message>
</note>
Attributi
<note title=“Appuntamento”>
<to>Luca</to>
<from>Carlo</from>
<message>ABC123</message>
</note>
<note title=“Appuntamento”
from=“Carlo” to=“Luca”>
ABC123
</note>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Attributi o elementi?
• La scelta tra attributi o elementi (quando si progetta il linguaggio)
è soggettiva, tuttavia le due soluzioni non sono in genere
equivalenti.
• Problemi con gli attributi:
– Non possono contenere valori multipli
<parent name=“Luca”><child>Marco</child> <child>Mario</child></parent>
– Sono difficilmente espandibili (aggiunta di sottoelementi)
– Non possono descrivere strutture
<book><author><name>..</name><surname>..</surname></author></book>
• E’ opportuno usare gli attributi per informazioni essenziali per
l’elemento, come ad esempio gli identificativi (ID)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Esempi
<padre nome="luca">
<figlio nome="carlo"/>
<figlio nome="giulia"/>
<figlio nome="giovanni"/>
</padre>
OK
<padre nome="luca" figlio="carlo" figlio="giulia" figlio="giovanni"/>
NO, perché non posso avere 3 attributi con identico nome nello stesso elemento.
<padre
nome="luca"
figli="carlo, giulia, giovanni"/>
Sintatticamente OK, però è difficile effettuare il parsing dei singoli valori.
Regole sintattiche
• Tutti i tag aperti devono essere chiusi.
Corretto
<p>paragrafo1</p>
<p>paragrafo2</p>
Non corretto
<p>paragrafo1
<p>paragrafo2
• I tag devono essere correttamente annidati (innestati, nested)
quindi l’ordine di chiusura deve essere inverso rispetto a quello di
apertura.
Corretto
<i><b>corsivo e
grassetto</b></i>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Non corretto
<i><b>corsivo e
grassetto</i></b>
Regole sintattiche
• Ogni documento XML deve avere uno ed un solo elemento radice.
Corretto
<note>
<to>Luca</to>
<from>Carlo</from>
<title>Appuntamento</title>
<message>…</message>
</note>
Non corretto
<to>Luca</to>
<from>Carlo</from>
<title>Appuntamento</title>
<message>…</message>
<note>…</note>
<note>…</note>
• Quando risolvere un certo problema di rappresentazione dei dati
implicherebbe l’uso di più nodi radice, è necessario sostituire il
nodo radice scelto con uno di significato più generale.
–
Ad esempio, se è necessario rappresentare tanti elementi <libro>…</libro>,
l’elemento radice sarà più propriamente <biblioteca>…</biblioteca> contenitore
di sottoelementi <libro>…</libro>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Regole sintattiche
• I valori degli attributi devono sempre essere inclusi tra apici
Corretto
<note date="12/11/2002">
Non corretto
<note date=12/11/2002>
• XML è “case sensitive”, cioè alle maiuscole/minuscole
Corretto
<to>Luca</to>
Non corretto
<to>Luca</To>
<to>Luca</TO>
• In XML gli spazi vengono preservati
• I commenti possono essere inseriti tra i segni <!-- e -->
<!-- Questo è un commento XML -->
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Well-formedness vs Validity
• Un documento è detto well-formed (ben formato) se segue le
regole grammaticali fornite dal W3C, di cui sono esempio le
regole sintattiche elencate.
Quindi, un documento è ben formato rispetto all’XML in
generale, non rispetto a un particolare formato basato su
XML.
• Un documento è detto valid (valido) se è conforme ad un
DTD che ne specifica la struttura.
Per essere valido, il documento deve essere innanzi tutto
ben formato > well-formedness è condizione necessaria, ma
non sufficiente per la validity.
La validità si verifica rispetto a un particolare linguaggio
basato su XML, ad esempio rispetto a MathML o XHTML.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Well-formedness vs Validity
• In altri termini:
– Un documento è detto well-formed (ben-formato) se segue le
regole grammaticali fornite dal W3C.
– Un documento è detto valid (valido) se è conforme ad un DTD
che ne specifica la struttura.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Esempio di documento XML
<?xml version="1.0" encoding="UTF-8"?>
<testo tipo= "articolo" >
L'album <title>The Beatles 1</title>, più noto
semplicemente come <title>1(One)</title>, è una
raccolta dei più grandi successi dei
<artista>Beatles</artista>, pubblicata nel 2000.
La compilation, prodotta da <artista>George
Martin</artista> come la quasi totalità degli album
della band di Liverpool, raccoglie su un unico disco 27
singoli che tra il 1962 e il 1970 raggiunsero la prima
posizione nelle classifiche di vendita del <paese>Regno
Unito</paese> o degli <paese>Stati Uniti</paese>. Tutte
le canzoni della raccolta sono famosissime e vengono
considerate dei capisaldi della storia del rock
mondiale. <title>1</title> è risultato l'album più
venduto nel 2000, con oltre 31 milioni di copie, di cui
10 solo negli <paese>Stati Uniti</paese>.
</testo>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Esempio di documento XML
<?xml version="1.0" encoding="UTF-8"?>
<!-- Questa è una riga di commento: nota la sintassi!!! -->
<cdl nome_corso="Scienze e tecnologie per i Beni Culturali">
<insegnamento>
<docente>Luca A. Ludovico</docente>
<orario>
<!-- Commento: sintassi poco elegante per un elemento vuoto -->
<giorno nome_giorno="mercoledì"
orario_giorno="10.30-15.30"></giorno>
<!-- Commento: sintassi più elegante -->
<giorno nome_giorno="giovedì" orario_giorno="13.30-17.30" />
</orario>
</insegnamento>
<insegnamento nome_insegnamento="Chimica">
<docente>Francesca Porta</docente>
<orario>…</orario>
</insegnamento>
<insegnamento nome_insegnamento="Fisica">
<docente>Pasquale Tucci</docente>
<orario>…</orario>
</insegnamento>
</cdl>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1
Esempio di documento XML
<?xml version="1.0" encoding="UTF-8"?>
<raccolta>
<ultimo_aggiornamento>
<data>18/11/2009</data>
<orario>
<ore>15</ore>
<minuti>12</minuti>
<secondi>05</secondi>
</orario>
</ultimo_aggiornamento>
<!-- Commento: sarebbe stato accettabile anche:
<ultimo_aggiornamento data_ora="18/11/2009, 15.12.05" />
-->
<cd titolo_album="One" artisti="The Beatles">
<traccia num="1">Love Me Do</traccia>
<traccia num="2">From Me To You</traccia>
...
</cd>
<cd titolo_album="So far so good" artisti="Bryan Adams">
<traccia num="1">Summer of '69</traccia>
<traccia num="2">Straight from the heart</traccia>
...
</cd>
</raccolta>
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 7.1