All’inizio di questa guida abbiamo visto come un documento XML è, per certi versi, simile ad un HTML, in cui però possiamo "inventare", a piacimento dell’esigenze dell’autore, i tag che più ci piacciono. Non siamo vincolati, cioè, ad una serie di tag predefiniti tra cui scegliere ma possiamo creane a piacimento, sulla base delle nostre esigenze.
Vediamo un esempio di un ipotetico file XML per la distribuzione di note interne ad un’azienda:
<?xml version="1.0"?>
<nota>
<a>Luca</a>
<da>Carlo</da>
<titolo>Appuntamento</titolo>
<testo>Ricordati la riunione di oggi</testo>
</nota>
La scelta dei tag può essere effettuata a seconda delle informazioni che interessa rappresentare e che la specifica applicazione dovrà riconoscere. La prima linea del documento (opzionale) identifica lo stesso come un XML ed indica anche la versione. Il primo tag <nota> identifica la radice del documento il quale contiene, appunto, una "nota".
I restanti tag specificano il contenuto della nota in termini di titolo, mittente, destinatario e testo. L’ultimo tag conclude la descrizione della nota.
I tag si dividono in:
- Tag di apertura: <nometag>
- Tag di chiusura: </nometag>
- Tag vuoti: <nometag/> (si tratta di tag che non hanno contenuto)
In XML tutti gli elementi devono avere un tag di chiusura (ad eccezione dei tag vuoti).
XML è case sensitive
Inoltre è bene ricordare sin da subito che XML è un metalinguaggio case sensitive: possiamo scrivere i tag come ci pare (in minuscolo o in maiuscolo) ma dobbiamo ricordarci che il case è rilevante ai fini della definizione di un tag XML. Ad esempio, i seguenti elementi:
<Mittente>Pier</Mittente>
e
<mittente>Pier</mittente>
sono diversi fra loro.
E’, pertanto, molto importante che i tag di apertura e di chiusura siano scritti con lo stesso uso dei caratteri maiuscoli e minuscoli! Per fare un esempio non è corretto scrivere:
<Mittente>Pier</mittente>
In quanto il tag di apertura e di chiusura non sono uguali tra loro!
Gli elementi: Radice e Nodi
Gli elementi in XML sono in relazione tra di loro e queste relazioni determinano il modello del documento. Il documento è organizzato come un albero, dove c’è una radice ed una serie di rami che da essa si dipanano.
In un documento XML gli elementi sono in una relazione di contenimento tra loro: l’elemento radice contiene tutti i tag (detti nodi) i quali, a loro volta, possono contenere altri tag (detti sotto-nodi). Un elemento contenuto da un’altro elemento si dice nidificato.
Si noti che in XML l’ordine di chiusura dei tag deve essere inverso rispetto all’ordine di apertura.
Tornando all’esempio visto all’inizio di questa lezione i tag <a>, <da>, <titolo> e <messaggio> sono nodi di <nota> che è la cosiddetta entità radice del documento.
Estendere un documento XML
Gli elementi di un documento XML sono estendibili, in questo modo è possibile mantenere la compatibilità con versioni precedenti del documento (backward compatibility) senza effettuare modifiche all’eventuale parser. Ad esempio:
<?xml version="1.0"?>
<nota>
<a>Luca</a>
<da>Paolo</da>
<titolo>Appuntamento</titolo>
<messaggio>Ricordati la riunione di oggi</messaggio>
</nota>
può essere esteso con l’aggiunta di un nuovo nodo:
<?xml version="1.0"?>
<nota>
<a>Luca</a>
<da>Paolo</da>
<titolo>Appuntamento</titolo>
<messaggio>Ricordati la riunione di oggi</messaggio>
<data>11/11/2004</data>
</nota>
L’aggiunta di un nuovo nodo al documento XML non crea problemi ad eventuali parser: i software eventualmente chiamati ad interagire con il documento potranno continuare a farlo anche dopo l’aggiunta di nuovi nodi.