La struttura visiva e logica di un documento XML, elementi e attributi, formato dei caratteri, la validità di un documento XML, DTD, il processing di un documento XML.
Come abbiamo detto nella lezione precedente, l’XML consente la definizione
di una forma lessicale e la creazione di una sintassi comune, in modo tale che
chiunque legga un documento XML sia in grado di interpretarlo ed eventualmente
modificare facilmente sia la struttura che le informazioni in esso contenutepossibilità
di scrittura e l’immediatezza nel visualizzare le informazioni.
In quest’ottica analizziamo la struttura visiva e logica di un documento XML.
La struttura visiva di un documento XML
Il documento XML ha una struttura gerarchica.
<?xml version=”1.0″ encoding=”UTF-8″?> |
||
<Address> | ||
<Name> | ||
<FirstName> John </FirstName> |
||
<LastName> Paul </LastName> |
||
</Name> | ||
<Phone> | ||
<business> 089-3939321 </business> |
||
<home> 089-3423443 </home> |
||
<mobile> 0170-4949233 </mobile> |
||
</Phone> | ||
</Address> |
Un documento XML è composto da markup, posti tra parentesi < >
(esempio: <FirstName>), che descrivono un elemento,
e da contenuto (John).
L’esempio riportato contiene otto elementi: Address, Name, FirstName, LastName,
Phone, business, home, mobile. Gli elementi Address, Name e Phone contengono
altri elementi, mentre gli elementi FirstName, LastName, business, home, mobile
contengono dati testuali.
L’ XML presenta delle regole sintattiche precise che devono essere sempre rispettate:
- Inizia sempre con un prologo (<?xml version=”1.0″?>),
che indica la versione di XML utilizzata. - Opzionalmente può contenere l’encoding (<?encoding=”UTF-8″?>),
ossia tutte le informazioni per identificare il set di caratteri usati nelle
diverse lingue (ad esempio per identificare caratteri speciali come la "ñ"
spagnola, o la "ä" tedesca o l’alfabeto cirillico, ecc.). Al
momento, la versione certificata è XML 1.0, ma il consorzio degli standard
W3C (www.w3c.org) sta lavorando alla
definizione della versione 1.1. - Contiene gli elementi, delimitati da tag di apertura (<) e tag
di chiusura (>) e solitamente il contenuto di tali elementi (a meno
che il documento XML sia solo struttura senza dati). Tra le semplici regole
dell’XML non bisogna mai dimenticare che tutti i tag di apertura devono corrispondere
a un tag di chiusura e a tag maiuscoli o minuscoli deve sempre corrispondere
lo stesso formato. - Può opzionalmente contenere degli attributi, ossia delle specifiche
di un elemento. Facciamo un altro esempio:<?xml
version=”1.0″?><weather-report> <date>August
15, 2000</date><time>08:00
</time><area> <city>Darmstadt</city> <region>Hessen</region>
<country>Germany</country> </area> <measurements> <skies>fine</skies> <temperature
scale="C">25</temperature><wind> <direction>SW</direction> <windspeed>6</windspeed> </wind> </measurements> </weather-report>
All’interno di un documento come questo – che riprende i dati di un bollettino
meteorologico – prendiamo come riferimento l’elemento <temperature>.
L’attributo è una specifica che si va a collocare all’interno del
tag dell’elemento (<temperature scale=”C”>).
- Può contenere istruzioni di processing (PI) che costituiscono
un altro espediente per fornire informazioni alle applicazioni per processare
il documento XML. Come per i commenti, non costituiscono parte testuale del
documento XML, ma il processore XML li trasferisce comunque all’applicazione,
che li processa in maniera opportuna.
Si presentano nella forma <?istruzione di processing?> (come
ad esempio <?app1 fromhere=”ignore”?>).
Un elemento inizia con uno start-tag <element> e termina con un end-tag
</element>.
All’interno dei documenti XML alcuni elementi possono essere vuoti, ovvero
senza contenuto: vengono rappresentati convenzionalmente con una barra alla
fine del tag vuoto (esempio: <business/>). Infine, è possibile
inserire all’interno dei tag istruzioni di processing o commenti a beneficio
dell’applicativo che legge i documenti.
Cosa succede se è necessario inserire in un documento XML proprio
il simbolo > o <, che come abbiamo detto identificano
l’apertura o la chiusura di un tag? E’ necessario un modo alternativo di rappresentarlo,
ossia delle entity reference, utilizzate per rappresentare i caratteri
speciali, oppure per riferirsi a testi che si ripetono o variano spesso e
per includere il contenuto di file esterni. Nel caso specifico il carattere
> sarà rappresentato nella forma >.
Nel caso in cui all’interno di elementi sia necessario inserire dei commenti,
la sintassi dell’XML vuole che questi vengano rappresentati con la grafica
<!– commento –>, permettendo di inserire qualunque tipo di
informazione aggiuntiva sui dati.
La struttura logica di un documento XML
La struttura logica di un documento XML può essere pensata come una
struttura ad albero ed è definita in un documento chiamato DTD
(Document Type Declaration).
La DTD specifica la sintassi del documento XML, ossia il lessico e la struttura,
e può essere sia interna che esterna al documento stesso (si veda l’immagine
sottostante).
La DTD definisce la sequenza dei tag, la loro posizione gerarchica, gli attributi,
i tipi e i valori di default, i nomi dei file esterni che sono collegati al
documento e le entity reference.
Nella prossima lezione di questo tutorial su XML vedremo come esiste un’altra
forma di descrizione della struttura logica di un documento XML, chiamata XML
Schema, che può essere utilizzata in alternativa alla DTD.
I documenti XML devono essere necessariamente well-formed. Un documento
è well-formed solo se obbedisce alla sintassi di XML (i tag come
già detto devono essere necessariamente aperti e chiusi, le maiuscole/minuscole
devono essere rispettate, gli elementi vuoti, i commenti e le entity reference
devono avere una sintassi particolare).
Un documento well-formed si considera valido solo se fa riferimento ad
una DTD che lo descrive e se obbedisce alle specifiche riassunte in essa: corretta
sequenza e posizione degli elementi, attributi esatti e valori degli attributi
del giusto tipo. Potremmo definire le regole di XML la punteggiatura e la DTD
la sillabazione e i riferimenti grammaticali del linguaggio.
La struttura grafica di un documento XML
Proprio perché l’XML è un linguaggio che descrive la struttura
e il contenuto (a differenza del linguaggio HTML), possiamo notare che sia nella
struttura visiva che in quella logica non si fa alcun riferimento alla struttura
grafica del documento. Infatti lo stylesheet del documento XML, ossia
la forma che esso dovrà avere per una maggiore facilità di utilizzo
e per una migliore presentazione dei dati, sarà un documento di layout
solitamente esterno al documento che richiamerà gli elementi contenuti
nel documento XML originario.