Linguaggi e tecnologie per il Web
Corso di Laurea in Ingegneria Informatica e Automatica
Sapienza Università di Roma
a.a. 2017/2018
XML
Parte 1:
Introduzione a XML
Luigi Dragone, Riccardo Rosati
Introduzione a XML
Prima parte: Linguaggi di marcatura ed XML
- Il problema della rappresentazione delle informazioni sul web
- Linguaggi di marcatura
- SGML, HTML ed XML
Seconda parte: Documenti XML ben formati
- Forma di un documento XML
- Rappresentazione di caratteri
- Elementi, Attributi, Entità
- Sezioni CDATA
- Commenti, Istruzioni di processamento
Prima parte: Linguaggi di marcatura ed XML
- Il problema della rappresentazione delle informazioni sul web
- Linguaggi di marcatura
- SGML, HTML ed XML
Il Web in origine
- Composto da una collezione (molto grande) di pagine Web
- Ogni pagina è un documento strutturato codificato
in HTML
Hypertext Markup Language
- Hypertext:
- testo con collegamenti ipertestuali ad altri documenti
- Markup Language:
- marche descrivono la struttura del testo
Le informazioni nel Web di oggi
HTML descrive la struttura logica dell'informazione allo scopo di presentarla
come pagina Web
- molte pagine ancora generate manualmente
- sempre più pagine generate da applicazioni
- le pagine HTML sono destinate agli umani
- marcatura descrive la presentazione
- non c'è un legame diretto tra marcatura e informazione
Estrazione di informazioni
- Motori di ricerca
- Navigazione
- Interrogazione (in domini circoscritti)
Il Web oggi - Stessa informazione ha struttura diversa in
pagine diverse
<h1>Bibliografia ragionata</h1>
<ul>
<li><i>Principles of Database
Systems</i>.<br>
<b>Jeffrey D.
Ullman</b>.<br>
Computer Science Press, 1982.<br>
Testo storico sulle basi di dati.
Un po' datato in quanto non ...
</li>
...
</ul>
<a name="..."><b>Riferimenti
bibliografici</b></a>
<ol>
<li><a href="...">Building Web Sites with
XML</a>
Michael Floyd.
<i>Prentice Hall</i>, 2000.
</li>
...
</ol>
Il Web oggi - Informazioni diverse hanno la stessa struttura
<h1>Bibliografia ragionata</h1>
<ul>
<li><i>Principles of Database
Systems</i>.<br>
<b>Jeffrey D.
Ullman</b>.<br>
<i>Computer Science
Press<i>, 1982.<br>
Testo storico sulle basi di dati.
Un po' datato in quanto non ...
</li>
<li><i>Type Inference for Queries over
Semistructured Data</i><br>
<b>Tova Milo</b> and
<b>Dan Suciu</b>.<br>
<i>Proc. of PODS'99</i>,
1999.<br>
Fornisce tecniche per l'inferenza di
tipo basate sull'utilizzo di ...
</li>
...
</ul>
Il Web oggi - La struttura può cambiare inaspettatamente
<h1>Bibliografia</h1>
<ul>
<li><i>Principles of Database
Systems</i>.<br>
<b>Jeffrey D.
Ullman</b>.<br>
Computer Science Press 1982.
</li>
...
</ul>
<h1><a
name="...">Bibliografia</a></h1>
<ol>
<li><a href="...">Principles of Database
Systems</a>
<b>Jeffrey D. Ullman</b>.
<i>Computer Science
Press</i>, 1982.
</li>
...
</ol>
L'evoluzione del Web
Documenti strutturati e dati vengono generati ed utilizzati
da applicazioni e da umani
- documenti visualizzati in pagine Web
- pagine Web generate a partire da dati strutturati (basi di dati)
- dati estratti da documenti sul Web
- dati scambiati via Web tra organizzazioni diverse
- dispositivi con differenti capacità di visualizzazione
(PDA, smartphone, ecc.)
HTML non è adatto
Limitazioni di HTML
- Insieme di etichette prefissato
- cosa uso / cosa è stato usato per rappresentare le
informazioni di interesse
- Marcatura non denota il significato
- che insieme di informazioni rappresenta una pagina / una
collezione di pagine?
- come faccio a sapere quali sono le informazioni che mi
interessano?
- come faccio ad estrarre le informazioni che mi interessano (e
solo quelle)?
- Marcatura usata per la presentazione del documento -
HTML è adatto, anche se presenta delle limitazioni
Requisiti per la rappresentazione delle informazioni sul Web
Serve un formalismo più flessibile:
- separazione tra:
- contenuto
- presentazione
- navigazione
- definizione di domini o contesti
- indipendenza dalla piattaforma (media) e supporto
multilingue
XML = eXtensible Markup Language
Esempio
<bibliografia>
<pubblicazione id="Ullm82" tipo="libro">
<titolo>Principles of Database
Systems</titolo>
<autore>Jeffrey D. Ullman</autore>
<editore>Computer Science
Press</editore>
<anno>1982</anno>
<commento>Testo storico sulle basi di
dati. ... </commento>
</pubblicazione>
<pubblicazione id="MiSu99" tipo="in-atto-conferenza">
<titolo>Type Inference for Queries
...</titolo>
<autore>Tova Milo</autore>
<autore>Dan Suciu</autore>
<apparsoin>Proc. of
PODS'99</apparsoin>
<anno>1999</anno>
<cita pubblicazioni="Ullm89 AbHV95 ...">
<commento>Fornisce tecniche per
l'inferenza di tipo ... </commento>
</pubblicazione>
</bibliografia>
Marcatura di documenti
Che cosa è una marcatura?
- storicamente: annotazioni in un testo che descrivono al tipografo
come stampare o comporre una parte del testo
- oggi: qualsiasi tipo di codice inserito in un testo in forma
elettronica
Marcatura (o etichettatura) è un qualcosa che permette
di rendere esplicita un'interpretazione di un testo.
Linguaggi di marcatura
Un linguaggio di marcatura è un insieme di convenzioni
per la marcatura di testi.
Deve specificare:
- quali marcature sono permesse
- quali marcature sono obbligatorie
- come vanno composte le marcature
- come distinguere tra marcatura e testo
Può inoltre specificare il significato della marcatura.
Tipi di marcatura
Si distinguono due tipi di marcatura:
- marcatura procedurale
- descrive come processare il documento
- Esempi: PostScript, PDF, RTF, formato MS Word
- marcatura descrittiva
- descrive la struttura logica del documento
- Esempi: HTML, SGML, XML
Il linguaggio XML
XML = eXtensible Markup Language
- linguaggio di marcatura descrittiva
- in teoria, naturale successore di HTML come linguaggio per il Web
- più espressivo e flessibile (eXtensible)
- più complicato
- XML si è imposto come standard de facto per lo scambio di
informazioni semi-strutturate
Tipologie di informazioni
- fortemente strutturare: classi Java, schema base dati relazionale
- destrutturate: testo libero o testo formattato
- semi-strutturare: struttura dati flessibile con porzioni
destrutturate
XML si presta ad essere utilizzato anche per informazioni fortemente
strutturate, con alcune limitazioni.
Le origini di XML
- 1969
- Charles Goldfarb (IBM) dirige lo sviluppo di GML
- 1974
- Charles Goldfarb inventa SGML, il padre dei linguaggi di
marcatura
- 1986
- SGML diventa uno standard ISO
(ISO 8879 ``Information Processing - Text and
Office Systems - Standard Generalized Markup Language'')
- 1989
- Tim-Berners Lee (CERN di Ginevra) inventa HTML
- 1995
- Fondazione del World Wide Web Consortium (W3C)
- 1996
- Inizio dello sviluppo di XML presso il W3C
- 1998
- XML 1.0 diventa una raccomandazione W3C
(uno standard di fatto)
- 1996-oggi
- Sviluppo di standard associati ad XML
(coordinato da W3C)
- 2000-oggi
- Promulgazione di varie edizioni (versioni) di XML 1.0
- 2002
- Promulgazione di XML 1.1
- 2006
- La seconda edizione di XML 1.1 diventa una raccomandazione W3C
- 2008
- Promulgazione della quinta edizione di XML 1.0
SGML - Standard Generalized Markup Language
- È il padre degli attuali linguaggi di marcatura
- È un linguaggio che permette di definire linguaggi di
marcatura (è un metalinguaggio):
- estremamente espressivo e configurabile (troppo)
- alta espressività rende il processamento complicato
- utilizzato in grossi progetti di documentazione
- non studiato espressamente per il Web
- Manca di alcune caratteristiche fondamentali per il Web:
- gestione dei link
- gestione del conflitto sui nomi delle etichette
- tutti i documenti devono essere ``validi''
(oltre a essere ``ben formati'')
HTML - HyperText Markup Language
- è un linguaggio di marcatura
- definito in termini di SGML
- insieme di etichette prefissato (RIGIDO)
- marcatura non denota il significato
- studiato espressamente per il Web
- collegamenti ipertestuali
- immagini
XML = (SGML--) + HTML
Obiettivi di sviluppo di XML:
- XML deve essere usabile direttamente sul Web
- XML deve essere compatibile con SGML
- deve essere semplice progettare programmi che processano
documenti XML
- documenti XML devono essere leggibili da umani e sufficientemente
chiari
- documenti XML devono essere facili da creare
- la specifica di XML deve essere formale e concisa
- la compattezza nella marcatura è di poca importanza
Caratteristiche dei documenti XML
- marcatura descrittiva e non procedurale (descrive la
struttura logica)
- marcatura è dettata dalla struttura logica del documento
- insieme di etichette può cambiare in base l'applicazione
- viene usato il concetto di tipo di documento
- specificato attraverso una Document Type Declaration
o DTD
(è parte dello standard XML)
- permette di imporre al documento una certa struttura (ovvero
come si compongono le sue parti)
- le parti sono delimitate dalla marcatura
DTD: specifica la struttura della marcatura ammessa
Specifiche aggiuntive
Si rendono necessarie per rendere XML funzionale sul Web
- presentazione del documento (fogli di stile): XSL (XSLT), CSS, FOP
- significato della marcatura
- collegamenti ipertestuali : XPath, XLink, XPointer
- semantica : RDF, OIL, DAML
- meccanismi più flessibili per la specifica della
struttura: XML Schema, XML-Data, DDML
- linguaggi di interrogazione per XML : XPath, XQuery, XML-QL, XSL
- supporto diverse tipologie di dispositivo: XHTML, WML, VoiceML,
XForms
- sistemi di cooperazione applicativa (web service): SOAP, WSDL,
UDDI
Linguaggi di marcatura a confronto
- SGML
- è un linguaggio molto espressivo per la definizione di
linguaggi di marcatura (è un metalinguaggio)
- HTML
- è un linguaggio di marcatura definito in termini di SGML,
ovvero è specificato da una DTD SGML
- XML
- è sia un linguaggio di marcatura, sia un linguaggio per la
definizione di linguaggi di marcatura
Con XML si considera tutto l'insieme di standard associati
Il ruolo del W3C
W3C = World Wide Web Consortium (http://www.w3c.org)
- costituito da esperti accademici e delle maggiori industrie
- promuove e coordina lo sviluppo dei nuovi standard Web
- mantiene un archivio di documenti e lo rende accessibile
- diverse categorie di documenti mantenuti dal W3C
- working draft (prefisso WD nel nome):
proposta
su cui una sottocomissione sta lavorando
- proposed (PR) e candidate recommendation
(CR): proposta sostanzialmente completa e in attesa di
approvazione
- recommendation (REC): proposta approvata -
uno
standard di fatto
Seconda parte: Documenti XML ben formati
- Forma di un documento XML
- Rappresentazione di caratteri
- Elementi, Attributi, Entità
- Sezioni CDATA
- Commenti, Istruzioni di processamento
Forma di un documento XML
Un documento XML è costituito da:
- un prologo (opzionale), costituito da
- una dichiarazione XML
- una DTD
- un'istanza di documento, contenente
- testo libero
- elementi delimitati da etichette
- attributi associati ad elementi
- entità
- sezioni CDATA
- istruzioni di processamento
- commenti
Codifica dei caratteri
XML usa la codifica dei caratteri Unicode (UTF-16)
- è un codice a 16 bit (65536 simboli)
- è sufficiente a rappresentare i caratteri di tutte le
lingue
- ogni carattere è rappresentato da al più quattro
cifre esadecimali
Es. ꀟ
- i primi 256 caratteri sono il codice ASCII (UTF-8)
Es. 
 (linefeed),   (blank), N (N), ...
Un processore XML:
- deve riconoscere almeno i codici Unicode ed ASCII
- può riconoscere altri codici
Documenti XML ben formati
Un documento che rispetta la specifica di XML è detto
ben formato:
- costituito da un insieme di elementi annidati
- un elemento è costituito da una coppia di
etichette
di apertura e di chiusura e da tutto quello che racchiudono
<autore>Jeffrey
D. Ullman</autore> |
<autore><nome>Jeffrey
D.</nome> ... </autore> |
- nome dell'elemento: autore
- etichetta di apertura dell'elemento: <autore>
- etichetta di chiusura dell'elemento: </autore>
- contenuto dell'elemento:
Jeffrey D.
Ullman |
<nome>Jeffrey
D.</nome> |
Documenti XML ben formati (2)
Il contenuto di un elemento è costituito da:
- altri elementi (detti figli), delimitati da coppie di
etichette
- testo libero (non contenente marcatura), detto #PCDATA
- riferimenti ad entità
<esempio>
Qui inizia il contenuto di un elemento
<figlio> questo e` un elemento figlio </figlio>
testo libero con riferimento all'entita` &
<figlio> un altro elemento figlio </figlio>
</esempio>
Documenti XML ben formati (3)
- le etichette devono essere annidate correttamente
Esempio di documento non ben formato:
<testo>
<bold><italic>XML</bold></italic>
</testo>
- ci deve essere un solo elemento radice
Esempio di documento con più radici:
<bibliografia>
<pubbl><autore>Ullman</autore>
...</pubbl>
<pubbl><autore>Floyd</autore>
... </pubbl>
Adesso è ben formato
</bibliografia>
Elementi vuoti
Il contenuto di un elemento può essere vuoto.
Due modi di denotare un elemento vuoto:
- coppia di etichette di apertura e chiusura: <vuoto></vuoto>
- etichetta di elemento vuoto: <vuoto/>
<p></p>
<h1>Bibliografia</h1>
<ul>
<li><b>Ullman</b> ...
</li>
<li><b>Floyd</b> ...
</li>
</ul>
<hr/>
Uso di elementi vuoti
Non sono inutili in quanto aggiungono informazione al documento:
- attraverso attributi associati all'elemento
<IMG
src="colosseo.gif"
align="left"
height="50"
width="30"/>
- attraverso la presenza stessa dell'elemento
<BR/>
Nomi di elemento
XML è case-sensitive - esempio non ben formato:
<elenco-clienti>
<cliente><codice>CC128</codice> ... </CLIENTE>
</Elenco-Clienti>
Errore comune: dimenticare "/" nell'etichetta di chiusura -
es:
<elenco-clienti>
<cliente><codice>CC128</codice> ... <cliente>
</elenco-clienti>
Nomi di elemento (2)
Possono contenere solo: lettere, cifre, -, _, .,:.
Carattere ":" usato solo per separare namespace.
Nomi che iniziano con XML,xml,xML,...sono
riservati.
<nomiPermessi>
<xsl:template/>
<Nome_elemento_lungo/>
<Altro-nome-lungo/>
<nome.con.punti/>
<a1233-231-231/>
<_12/>
</nomiPermessi>
<nomi+Vietati>
<questiNO@#$%^()+?*;$=/>
<Un;nome*2/>
<XmL-riservato/>
<8-inizia-con-cifra/>
<niente spazi/>
<riservati<&>>
</nomi+Vietati>
Caratteri riservati
Il testo non può contenere i caratteri riservati per la
marcatura
- carattere "<" (denota l'inizio di un'etichetta)
- carattere "&" (per le entità - più
avanti)
Si usano
|
|
"<" |
per |
"<" |
|
|
"&" |
per |
"&" |
<editore>Wiley &
sons</editore>
<disequazione>x*y < z</disequazione>
I caratteri ">", """, e "'"
possono essere sostituiti da
">", """ e "'".
Attributi
Un elemento può avere nessuno, uno o più attributi.
- un attributo ha un nome ed associa una proprietà
ad un elemento
- i caratteri ammessi nei nomi sono gli stessi che per gli elementi
- gli attributi vengono specificati nell'etichetta iniziale
attraverso coppie attributo="valore"
- il valore deve essere delimitato da una coppia di apici singoli o
doppi
- un elemento non può avere due attributi con lo stesso nome
Attributi
<attributi-ben-formati>
<elemento _ok="yes"/>
<un attr="il suo valore"/>
<molti primo="1" secondo='2' terzo="333"/>
<apici-doppi-o-singoli
doppi="John's"
singoli='Stampa: "Ciao Mondo!" '/>
</attributi-ben-formati>
N.B. In HTML gli apici intorno al valore possono mancare
in XML gli apici sono obbligatori.
Attributi - Esempi mal formati
<attributi-mal-formati>
<carattere-non-ammesso a*b="23432"/>
<separatori-diversi valore="12'/>
<cambia-separatore valore="aa"aa"/>
<cambia-separatore valore='bb'bb'/>
<parola-riservata
XML-ID="xml234"/>
</attributi-mal-formati>
Uso di attributi ed elementi
Per memorizzare dati possiamo usare sia elementi che attributi.
<impiegato>
<nome>A.
Rossi</nome>
<ddn>1/1/1950</ddn>
</impiegato>
<impiegato ddn="1/1/1950">
<nome>A. Rossi</nome>
</impiegato>
La scelta dipende dall'applicazione:
- non si può forzare #PCDATA a non essere vuoto
- gli attributi non si possono strutturare
- si possono enumerare i valori ammessi per gli attributi
Entità
- un'entità è una parte di documento a cui si
è dato un nome (una specie di macro)
- può essere
- interna: definita all'interno del documento (o del DTD)
- esterna: memorizzata su un altro file
- il testo può contenere riferimenti ad entità: &nome-entita;
- quando viene processato il documento, i riferimenti alle
entità devono essere espansi
- entità predefinite: <, &,
>, ", '
Vedremo più avanti come definire nuove entità.
Sezioni CDATA
- servono ad includere testo contenente caratteri riservati
- possono comparire ovunque può comparire testo libero
- tutti i caratteri riservati perdono il loro significato speciale
- "<" e "&" non vanno
sostituiti con "<" e "&"
- le sequenze <elem>, </elem> e
<elem/> non
vengono interpretate come marche
- le sezioni CDATA non possono essere annidate
- racchiuse tra "<![CDATA[" e "]]>"
- una sezione CDATA non può contenere la stringa "]]>"
Sezioni CDATA - Esempi
Questo lucido in formato XML
<lucido>
<titolo>Sezioni CDATA - Esempi</titolo>
Questo lucido in formato XML
<esempio>
<![CDATA[
<lucido>
<titolo>Sezioni CDATA - Esempi</titolo>
Questo lucido in formato XML
... caratteri riservati OK: &, <
</lucido>
]]>
</esempio>
</lucido>
Sezioni CDATA - Esempi (2)
La stringa "]]>" non è ammessa
<esempio>
<![CDATA[Un programma C
if (x[2] + y[i] < 3*z) {
if (vet[x[i]]> 18)
{
/* 1 */
if (a < b)
printf("Ciao"); /* 2 */
}
}
]]>
sezione CDATA termina su riga 1 e non qui
"a < b" da` errore perche` sono fuori CDATA
</esempio>
Al posto di ]]> bisogna includere ]]>
Commenti
- servono a escludere una parte di documento dal processamento
- possono comparire ovunque all'esterno della marcatura
- un processore XML può o meno rendere disponibili le parti
di documento racchiuse tra commenti
- sono delimitati da <!-- e -->
- possono contenere qualsiasi carattere (inclusi "<" e "&"),
tranne "-"
- non possono essere annidati
Commenti - Esempi
<bibliografia>
<!-- voce commentata <pub> ... </pub> -->
<pub> ... </pub>
<!-- commento su piu` righe
<pub> ... </pub> <- usa
"<"
<pub> ... </pub> anche
"&" e` ammesso
-->
<!-- commento non -- valido -->
<pub <!-- qui no commento --> id="Ullm82"> ...
</pub>
<!-- un commento
<!-- non puo` contenere commenti annidati -->
-->
</bibliografia>
Commenti in sezioni CDATA
In una sezione CDATA i commenti non
vengono riconosciuti come tali
<esempio>
Questo e` un <!-- commento -->
<![CDATA[ Sezione CDATA con "commento"
<!-- fa parte del testo --> altro
testo
]]>
Questo e` di nuovo un <!-- commento -->
</esempio>
Istruzioni di processamento (PI)
- permettono di includere nel documento istruzioni da passare alle
applicazioni
- fanno parte del prologo (non dei caratteri che compongono il
documento)
- devono essere passate alle applicazioni
- hanno la forma <?PITarget
... ?>, dove
- PITarget denota
l'applicazione
a cui è diretta la PI
- ... denota ulteriori dati da
passare all'applicazione
Esempio: processamento di uno stylesheet da parte di XSLT
<?xml-stylesheet href="mystyle.xsl" type="text/xsl" ?>
Dichiarazione XML iniziale
Documenti XML possono (e in realtà dovrebbero) iniziare con
una dichiarazione XML che specifica la versione di XML
utilizzata
<?xml version="1.0"?>
<testo>Questo documento e` conforme alla specifica
di XML 1.0.</testo>
La dichiarazione XML può anche specificare la codifica
dei caratteri usati:
<?xml version="1.0"
encoding="ISO-8859-2"?>
La codifica dei caratteri specifica il mapping tra i byte che
costituiscono la rappresentazione fisica del documento (ad es., file,
socket, ...) ed i caratteri.
HTML e XHTML
XHTML è una versione di HTML compatibile con
XML:
- i documenti HTML non sono necessariamente ben formati
- i documenti XHTML lo sono
Principali differenze tra XHTML e XML
- etichette devono essere annidate correttamente
- tutte le etichette devono essere chiuse
- nomi di elementi ed attributi sono minuscoli
- valori di attributi racchiusi tra apici
- altre differenze dovute alle differenze nei DTD di XML ed SGML
È possibile trasformare un documento HTML in un documento XHTML
equivalente, se il documento HTML non è ambiguo.
Riferimenti
Extensible
Markup Language (XML) 1.0 (Second Edition) W3C
Recommendation