Breve Introduzione a XML
Breve Introduzione a XML
Origini
!   XML (eXtensible Markup Language) deriva da SGML (Standard
Generalized Markup Language).
!   Sia con XML che con SGML è possibile definire linguaggi di
markup specifici per vari domini, come la finanza o la
matematica.
!   Ad esempio, HTML è uno dei linguaggi derivati da SGML.
!   XML, rispetto a SGML, è di più semplice utilizzo, e nasce per
specificare linguaggi di markup da utilizzare su Internet.
!   Inizialmente, XML nasce come formato di scambio di dati.
!   Ci occuperemo di XML dal punto di vista della memorizzazione
e ricerca di dati.
!   Di conseguenza, non ne vedremo tutti i dettagli, ma solo gli
aspetti rilevanti per la gestione di dati.
2
Breve Introduzione a XML
Un esempio di documento XML
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<!-- manca l’editore! -->
<autore>T. Harris</autore>
<titolo xml:lang="en">The silence of the lambs</titolo>
<titolo xml:lang="fr">Le silence des agneaux</titolo>
<commento>
Un libro pieno di <i>suspance</i>.
</commento>
<prezzo valuta="euro">7</prezzo>
</doc>
3
Breve Introduzione a XML
Markup e character data
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<!-- manca l’editore! -->
<autore>T. Harris</autore>
<titolo xml:lang="en">The silence of the lambs</titolo>
<titolo xml:lang="fr">Le silence des agneaux</titolo>
<commento>
Un libro pieno di <i>suspance</i>.
</commento>
<prezzo valuta="euro">7</prezzo>
</doc>
4
Breve Introduzione a XML
Prologo
<?xml version="1.0"?>
PROLOGO
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<!-- manca l’editore! -->
<autore>T. Harris</autore>
<titolo xml:lang="en">The silence of the lambs</titolo>
<titolo xml:lang="fr">Le silence des agneaux</titolo>
<commento>
Un libro pieno di <i>suspance</i>.
</commento>
<prezzo valuta="euro">7</prezzo>
</doc>
5
Breve Introduzione a XML
Prologo
!   Il prologo contiene informazioni utili per l’interpretazione del
documento.
!   In particolare, esso può contenere:
!   Una dichiarazione che il documento è in formato xml (opzionale).
!   Una grammatica che permette di validare il contenuto del
documento (opzionale).
!   Commenti e informazioni per applicazioni software che
utilizzeranno il documento (Processing Instructions, o PI) (zero o
più).
6
Breve Introduzione a XML
Corpo del documento
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
CORPO DEL
<!-- manca l’editore! -->
DOCUMENTO
<autore>T. Harris</autore>
<titolo xml:lang="en">The silence of the lambs</titolo>
<titolo xml:lang="fr">Le silence des agneaux</titolo>
<commento>
Un libro pieno di <i>suspance</i>.
</commento>
<prezzo valuta="euro">7</prezzo>
</doc>
7
Breve Introduzione a XML
Corpo del documento
!   Il corpo del documento è composto da un elemento, che può
contenere a sua volta altri elementi annidati al suo interno,
nonché commenti.
!   Vedremo tramite qualche esempio come si scrivono elementi
ben formati.
8
Breve Introduzione a XML
Elementi
!   Un elemento può avere due forme:
<nome lista_attributi>
contenuto…
</nome>
(forma estesa)
<nome lista_attributi />
(forma contratta)
9
Breve Introduzione a XML
Elementi e attributi ben formati (1)
!   Ogni elemento deve essere contenuto tra un tag di apertura ed
un /tag di chiusura o con una forma contratta.
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<titolo xml:lang="en">
The silence of the lambs
</titolo>
<prezzo euro="7"/>
</doc>
<BR>
ERRORE:
questo tag (BR) è
aperto ma non chiuso
10
Breve Introduzione a XML
Elementi e attributi ben formati (2)
!   I nomi degli elementi e degli attributi sono case-sensitive.
ERRORE
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<titolo xml:lang="en">
The silence of the lambs
</titolo>
<prezzo euro="7"/>
</DOC>
11
Breve Introduzione a XML
Elementi e attributi ben formati (3)
!   Gli elementi devono essere annidati correttamente, e c’è un solo
elemento che contiene tutti gli altri.
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<b><i>Libro assente</b></i>
</doc>
ERRORE
12
Breve Introduzione a XML
Elementi e attributi ben formati (4)
!   I valori degli attributi devono essere compresi tra apici o doppi
apici.
<?xml version="1.0"?>
<?tex doctype[report] ?>
<doc isbn="2-266-04744-2">
<titolo xml:lang=en>
The silence of the lambs
</titolo>
<prezzo euro="7"/>
</doc>
ERRORE
13
Breve Introduzione a XML
Elementi e attributi ben formati (5)
!   Un elemento non può avere più attributi con lo stesso nome.
SCORRETTO
<libro autore=“Rossi” autore=“Verdi”/>
CORRETTO
<libro>
<autore>Rossi</autore>
<autore>Verdi</autore>
</libro>
14
Breve Introduzione a XML
Document Type Declaration
!   All’inizio di un documento XML può essere presente una dichiarazione
del tipo di documento.
!   Essa contiene una grammatica, detta Document Type Definition, o
DTD, con il doppio scopo di vincolare e completare i documenti.
!   Il DTD è composto da dichiarazioni di markup, che definiscono cio'
che puo' e non puo' essere scritto nel relativo documento XML.
!   I DTD determinano quali elementi possono essere contenuti nel
documento, come possono essere usati, quali sono i valori di default
degli attributi, e altri vincoli.
15
Breve Introduzione a XML
Documenti validi – ben formati
!   Un documento XML è valido se:
!   Contiene un DTD
!   Ne è conforme
Documenti validi
Documenti ben formati
Documento ben formato ma non valido, perchè non possiede un DTD:
<saluti>Ciao, mondo!</saluti>
16
Breve Introduzione a XML
Esempi di Document Type Declaration (1)
!   Definiamo un tipo di documento chiamato saluti che contiene un
elemento <saluti>, che non contiene altri elementi. Vengono poi
dichiarati gli attributi di <saluti>, in questo caso il solo id.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE saluti [
<!ELEMENT saluti (#PCDATA)>
<!ATTLIST saluti
id
ID
#REQUIRED>
]>
<saluti id="0001">Ciao, mondo!</saluti>
DTD
17
Breve Introduzione a XML
Esempi di Document Type Declaration (2)
!   Gli stessi vincoli possono essere specificati in un file esterno
(ciao.dtd) e dichiarati nel seguente modo.
<?xml version="1.0"?>
<!DOCTYPE saluti SYSTEM "ciao.dtd">
<saluti>Ciao, mondo!</saluti>
18
Breve Introduzione a XML
DTD e XML Schema
!   Un DTD vincola un documento XML.
!   E’ possibile però specificare vincoli più complessi di quelli definibili con
un DTD.
!   Ad esempio, chiavi importate, o vincoli di unicità, o domini di elementi e
attributi (come in SQL).
!   XML Schema permette di specificare tali vincoli, ed è quindi una
alternativa al DTD.
!   Inoltre, i vincoli di XML Schema sono espressi in XML.
19
Breve Introduzione a XML
Usi propri e impropri di XML
!   XML permette una grande libertà al creatore di documenti.
!   Egli può decidere quali tag e attributi utilizzare, e dove
memorizzare i dati.
!   Quando si utilizza XML per memorizzare dati, bisogna però fare
attenzione all’utilizzo corretto degli elementi del modello dei dati:
elementi, attributi, contenuti, gerarchie.
!   Forniamo alcune linee guida.
20
Breve Introduzione a XML
1 – Dati nel contenuto degli elementi
!   I dati devono essere memorizzati nel contenuto degli elementi.
!   Ad esempio,
<libro>
<titolo>I Promessi sposi</titolo>
</libro>
Va preferito a
<libro titolo="I Promessi sposi" />
DA EVITARE
21
Breve Introduzione a XML
2 – Metadati negli attributi o nei nomi degli
elementi
<libro>
<caratteristica>
DA EVITARE
<nome>titolo</nome>
<valore>I Promessi sposi</valore>
</caratteristica>
</libro>
!   In questo caso, titolo è un metadato, per cui non deve apparire
come contenuto.
22
Breve Introduzione a XML
3 – Uso (s)corretto delle gerarchie
<db>
DA EVITARE
<titolo>I Promessi sposi</titolo>
<autore>Manzoni</autore>
<titolo>Notre-Dame de Paris</titolo>
<autore>Hugo</autore>
</db>
!   I due titoli e i due autori sono separati solo dall’ordine degli elementi,
mentre compongono oggetti ben distinti (si riferiscono a due libri
diversi).
!   <titolo> e <autore> devono essere figli di un elemento <libro>, non di
un elemento <db>.
23
Breve Introduzione a XML
4 – Uso corretto delle gerarchie
<db>
<libro>
<titolo>I Promessi sposi</titolo>
<autore>Manzoni</autore>
</libro>
<libro>
<titolo>Notre-Dame de Paris</titolo>
<autore>Hugo</autore>
</libro>
</db>
24
Scarica

Breve Introduzione a XML