27
Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Embed Size (px)

Citation preview

Page 1: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Extensible Markup Language (XML)

Presentazione 1.5

Architettura dell'informazione | Prof. Luca A. Ludovico

Page 2: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Introduzione a XML

• 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

Architettura dell'informazione Prof. Luca A. Ludovico

Page 3: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Cos’è XML (e cosa non è)

• 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.

Architettura dell'informazione Prof. Luca A. Ludovico

Page 4: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Il background di XML

• Sottoinsieme di Standard Generalized Markup Language (SGML), nato negli anni ‘60

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)

Architettura dell'informazione Prof. Luca A. Ludovico

XML

HTMLXHTMLMathML

MusicXML…

Page 5: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Pervasività di XML: alcuni esempi

• Dalla versione 2007 in avanti i software della suite Microsoft Office adottano principalmente i formati XML– .docx per Word, .pptx per PowerPoint, .xlsx per Excel– .odt e .odf di OpenOffice, principale competitor

• Molti siti (tra cui ludovico.net) sono scritti in XHTML, un linguaggio basato su XML per creare pagine Web

• Gran parte dei software per l’editing digitale della partitura supportano il formato MusicXML

• Il formato EPUB (electronic publication) per gli e-book è XML

Piè di pagina: spazio libero per eventuale nome struttura o altro

Page 6: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Benefici di XML

• Interscambiabilità su Internet (è plain text e supportato dal W3C)

• Struttura gerarchica

• Intelligibilità (è plain text e i marcatori sono evocativi)

• Estensibilità

• Enorme disponibilità di tool per la lettura, la creazione e la manipolazione dei documenti

Architettura dell'informazione Prof. Luca A. Ludovico

Page 7: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

I tag in XML

• In un documento XML possiamo “inventare” i tag

• La scelta dei tag (nomi, annidamento,…) può essere effettuata a seconda delle informazioni che interessa rappresentare

<?xml version="1.0" encoding="UTF-8"?> <note> <from>Carlo</from> <to>Luca</to> <title>Appuntamento</title> <message>Ricordati la riunione del <date>9/1/2008</date></message></note>

Architettura dell'informazione Prof. Luca A. Ludovico

Page 8: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Lettura intuitiva dell’XML

• 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/>

Architettura dell'informazione Prof. Luca A. Ludovico

Page 9: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

<?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>

• Si può notare somiglianza con le informazioni contenute nella tabella di un database (maggiore leggibilità ma verbosità)

Un esempio in XML

Architettura dell'informazione Prof. Luca A. Ludovico

Page 10: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• Un elemento XML è tutto ciò che è compreso tra un tag di apertura (incluso) ed il corrispettivo tag di chiusura (incluso)

• 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

<nometag>contenuto</nometag>

Elementi

Architettura dell'informazione Prof. Luca A. Ludovico

Page 11: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

<address>

<street>33, Terry Dr.</street>

<city>Morristown</city>

</address>

Esempio di etichettatura

Elemento

End tag

Content

Start tag

Architettura dell'informazione Prof. Luca A. Ludovico

Page 12: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Esempio

• Un elemento può contenere:

– Altri elementi <address>

<street>33, Terry Dr.</street><city>Morristown</city>

</address>

– Testo semplice

<street>33, Terry Dr.</street>

Architettura dell'informazione Prof. Luca A. Ludovico

Page 13: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• Gli elementi in XML sono estensibili

• In questo modo è possibile mantenere compatibilità delle nuove versioni del formato con versioni precedenti del software (retrocompatibilità, o backward compatibility)

• Es: Versione 1.0 Versione 2.0

<?xml version="1.0"?>

<note>

<from>Carlo</from>

<to>Luca</to>

<title>Appuntamento</title>

<message>Ricordati la riunione di

oggi</message>

</note>

<?xml version="1.0"?>

<note>

<from>Carlo</from>

<to>Luca</to>

<title>Appuntamento</title>

<message>Ricordati la riunione di

<bold>oggi</bold></message>

</note>

Estensibilità degli elementi

Architettura dell'informazione Prof. Luca A. Ludovico

Page 14: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• 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 nodo-sottonodo

• Es: <to>, <from>, <title> e <message> sono sottoelementi di <note>

• L’entità che non è sottoentità di nessuno (es: <note>) è l’elemento radice (root element)

<?xml version="1.0"?><note>

<to>Luca</to><from>Carlo</from><title>Appuntamento</title><message>Ricordati la riunione di oggi</message>

</note>

Architettura dell'informazione Prof. Luca A. Ludovico

Modello ad albero

Page 15: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

<?xml version="1.0"?><note> <from> <name>Carlo</name> <surname>Bianchi</surname> </from> <to> <name>Luca</name> <surname>Rossi</surname> </to> <title>Appuntamento</title> <message>Ricordati la riunione di oggi</message></note>

Architettura dell'informazione Prof. Luca A. Ludovico

Modello ad albero

Page 16: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• Gli attributi sono informazioni aggiuntive che possono essere inserite negli elementi XML per completarne o arricchirne l’informazione

• Vengono inseriti solo nei tag di apertura (o nei tag vuoti)• Sintassi: coppie nome_attributo="valore"• Il valore degli attributi è racchiuso o tra apici singoli o tra

apici doppi• nome_attributo deve essere univoco per ogni elemento

Attributi

<nometag attr1="val1" attr2="val2" ...>...</nometag>

Architettura dell'informazione Prof. Luca A. Ludovico

<message language="ITA">Ricordati la riunione di oggi</message>

Page 17: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• Spesso le stesse informazioni possono essere rappresentate sia tramite attributi che tramite (sotto)elementi. Queste sono alcune tra le molte varianti ammissibili:

Sottoelementi Attributi<note>

<title>Appuntamento</title>

<from>Carlo</from>

<to>Luca</to>

<message>ABC123</message>

</note>

<note title="Appuntamento">

<from>Carlo</from>

<to>Luca</to>

<message>ABC123</message>

</note>

<note title="Appuntamento"

from="Carlo" to="Luca">

ABC123

</note>

<note title="Appuntamento"

from="Carlo" to="Luca"

message="ABC123" />

Architettura dell'informazione Prof. Luca A. Ludovico

Attributi o elementi?

Page 18: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• La scelta tra attributi o elementi (quando si progetta il linguaggio) è soggettiva, tuttavia le due soluzioni non sono in genere equivalenti– Quando invece di progettare il formato si aderisce a un sottolinguaggio XML

specifico, le regole sulla codifica dell’informazione sono prefissate

• Problemi con gli attributi:– Non possono contenere valori multipli

<parent name=“Luca”><child>Marco</child> <child>Mario</child></parent>

– Sono difficilmente espansibili (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)

Architettura dell'informazione Prof. Luca A. Ludovico

Attributi o elementi?

Page 19: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

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.

Architettura dell'informazione Prof. Luca A. Ludovico

Page 20: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• Tutti i tag aperti devono essere chiusi

• I tag devono essere correttamente annidati, o innestati (nested) quindi l’ordine di chiusura deve essere inverso rispetto a quello di apertura

Corretto Non corretto

<p>paragrafo1</p>

<p>paragrafo2</p>

<p>paragrafo1

<p>paragrafo2

Corretto Non corretto

<i><b>corsivo e grassetto</b></i>

<i><b>corsivo e grassetto</i></b>

Architettura dell'informazione Prof. Luca A. Ludovico

Regole sintattiche

Page 21: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• Ogni documento XML deve avere uno ed un solo elemento radice.

• Quando una data 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>

Corretto Non corretto<note>

<to>Luca</to>

<from>Carlo</from>

<title>Appuntamento</title>

<message>…</message>

</note>

<to>Luca</to>

<from>Carlo</from>

<title>Appuntamento</title>

<message>…</message>

<note>…</note>

<note>…</note>

Architettura dell'informazione Prof. Luca A. Ludovico

Regole sintattiche

Page 22: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• I valori degli attributi devono sempre essere inclusi tra apici

• XML è “case sensitive”, cioè distingue maiuscole da minuscole

• In XML gli spazi vengono preservati• I commenti possono essere inseriti tra i segni <!-- e -->

Corretto Non corretto

<note date="12/11/2002"> <note date=12/11/2002>

Corretto Non corretto

<to>Luca</to> <to>Luca</To>

<to>Luca</TO>

Architettura dell'informazione Prof. Luca A. Ludovico

Regole sintattiche

<!-- Questo è un commento XML -->

Page 23: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

• 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.

Architettura dell'informazione Prof. Luca A. Ludovico

Well-formedness vs Validity

Page 24: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

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.

Architettura dell'informazione Prof. Luca A. Ludovico

Page 25: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Esempio di documento XML

Architettura dell'informazione Prof. Luca A. Ludovico

<?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>

Page 26: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Esempio di documento XML

Architettura dell'informazione Prof. Luca A. Ludovico

<?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>

Page 27: Extensible Markup Language (XML) Presentazione 1.5 Architettura dell'informazione | Prof. Luca A. Ludovico

Esempio di documento XML

Architettura dell'informazione Prof. Luca A. Ludovico

<?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>