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

Seconda parte: Documenti XML ben formati


Prima parte: Linguaggi di marcatura ed XML


Il Web in origine

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


Estrazione di informazioni


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

HTML non è adatto


Limitazioni di HTML


Requisiti per la rappresentazione delle informazioni sul Web

Serve un formalismo più flessibile:

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?

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:

Può inoltre specificare il significato della marcatura.


Tipi di marcatura

Si distinguono due tipi di marcatura:


Il linguaggio XML

XML = eXtensible Markup Language


Tipologie di informazioni

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


HTML - HyperText Markup Language


XML = (SGML--) + HTML

Obiettivi di sviluppo di XML:

  1. XML deve essere usabile direttamente sul Web
  2. XML deve essere compatibile con SGML
  3. deve essere semplice progettare programmi che processano documenti XML
  4. documenti XML devono essere leggibili da umani e sufficientemente chiari
  5. documenti XML devono essere facili da creare
  6. la specifica di XML deve essere formale e concisa
  7. la compattezza nella marcatura è di poca importanza

Caratteristiche dei documenti XML

DTD: specifica la struttura della marcatura ammessa


Specifiche aggiuntive

Si rendono necessarie per rendere XML funzionale sul Web


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)


Seconda parte: Documenti XML ben formati


Forma di un documento XML

Un documento XML è costituito da:


Codifica dei caratteri

XML usa la codifica dei caratteri Unicode (UTF-16)

Un processore XML:


Documenti XML ben formati

Un documento che rispetta la specifica di XML è detto
ben formato:


Documenti XML ben formati (2)

Il contenuto di un elemento è costituito da:

<esempio>
  Qui inizia il contenuto di un elemento
  <figlio> questo e` un elemento figlio </figlio>
  testo libero con riferimento all'entita` &amp;
  <figlio> un altro elemento figlio </figlio>
</esempio>


Documenti XML ben formati (3)


Elementi vuoti

Il contenuto di un elemento può essere vuoto.

Due modi di denotare un elemento 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:

     <IMG src="colosseo.gif"
       align="left"
       height="50"
       width="30"/>


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

Si usano 
                  "&lt;" per "<"
    "&amp;" per "&"

<editore>Wiley &amp; sons</editore>
<disequazione>x*y &lt; z</disequazione>

I caratteri  ">",  """, e  "'" possono essere sostituiti da
"&gt;",  "&quot;" e  "&apos;".


Attributi

Un elemento può avere nessuno, uno o più attributi.


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:


Entità

Vedremo più avanti come definire nuove entità.


Sezioni CDATA


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 &lt; b" da` errore perche` sono fuori CDATA
</esempio>

Al posto di ]]> bisogna includere ]]&gt;


Commenti


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)

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:

Principali differenze tra XHTML e XML

È 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