# 3 - Struttura del documento XML

Un documento xml utilizza spesso due file ausiliari:

- una definizione del tipo di dati (DTD) per specificare come e quali elementi possano apparire nel documento (vedi lezione 4);
- un foglio di stile (XLS, XLST) per descrivere come stampare o visualizzare il contenuto del documento (vedi lezione 7 e 8)

Un documento xml consiste in un insieme di elementi disposti ad albero con un unico elemento radice.

Puo' sembrare difficile specificare tale struttura in parti, come di solito avviene per i documenti xml: tali parti sono chiamate entita'

Un documento xml consiste in una o piu' entita' costituite da semplici insiemi di informazioni collegate in modo logico, a partire da un unico carattere fino ad arrivare all'intero capitolo di un libro.

Una di queste entita' prende il nome di entita' del documento e si trova sempre concretamente nel file che rappresenta il documento xml stesso. Tale entita' puo' corrispondere all'intero documento, sebbene includa spesso riferimenti ai nomi di altre entita' (ad esempio file xml) memorizzate altrove. Ad esempio, l'entita' del documento per un articolo tecnico potrebbe contenere il materiale iniziale (ad esempio, l'introduzione) e finale (ad esempio, le conclusioni) e dei riferimenti ai paragrafi del corpo dell'articolo, memorizzati come entita' in file separati. Ad ogni entita' va assegnato un nome, ad eccezione dell'entita' del documento stesso.

Sono molti i motivi per cui il documento xml viene suddiviso in molteplici entita'. Suddividere un documento corposo in parti piu' piccole lo rende infatti maneggevole. Inoltre la possibilita' di definire come entita' dei dati che ricorrono in piu' posizioni del documento evita il problema di eventuali incompatibilita' tra le occorrenza di quei dati.

Infine molti documenti includono informazioni che non possono venire rappresentate sotto forma di testo, come per esmepio le immagini. Tali unita' di informazione vengono memorizzate spesso come file di dati binari. Nel caso in cui un'unita' di dati binari faccia parte del documento dal punto di vista logico, deve essere per forza un'entita' separata, in quanto i documenti xml non sono in grado di contenere dati binari. Tali entita' prendono il nome di entita' binarie.

Quando un parser xml incontra il nome di un'entita' non binaria in un documento, tale nome viene sostituito con il valore a cui fa riferimento. Le entita' binarie possono essere gestite solo da applicazioni che hanno a che fare con i documenti, come per esempio i browser. I parser xml gestiscono solo il testo.

Non vi sono restrizioni per i nomi di entita', che devono iniziare con una lettera, una barra o una virgola. Il primo carattere va seguito da lettere, cifre, punti, barre, caratteri di sottolineatura o virgole.

Il riferimento a un'entita' consiste nel nome con una "e commerciale" (&) che precede l'inizio ed un "punto e virgola" (;) alla fine. Ad esempio se `apple_info` e' il nome di una entita', il riferimento ad essa sara' `&apple_info;`.

Le entita' vengono solitamente utilizzate per consentire ai caratteri normalmente impiegati come delimitatori di markup di apparire in un documento nella loro forma originaria. Dato che si tratta di una necessita' comune, xml include entita' predefinite per i cinque caratteri speciali mostrati nella tabella sotto:

Entita' predefinite e relativi riferimenti
Entita'-Carattere | Riferimento all'Entita'
--- | ---
< | &lt;
> | &gt;
& | &amp;
" | &quot;
' | &apos;

Le entita' possono venire definite solo all'interno di definizioni dei tipi di dati (vedi lezione 4).