XML è l'acronimo di eXtendible Markup Language (linguaggio di markup estensibile), si tratta infatti di un linguaggio che permette la creazione di ulteriori linguaggi di markup.
Un documento XML, oltre a contenere la struttura sintattica (titolo e paragrafo di un documento html ad esempio) contiene anche la struttura semantica (ovvero legata ai significati degli elementi).
Con XML diventano possibili sostanzialmente 3 azioni:
definire nuovi tag;
definire, visualizzare e usare una struttura ad albero;
creare descrizioni opzionali della grammatica di un file, permettendo una validazione del file considerato.
Questo linguaggio viene utilizzato principalmente per creare documenti con uno standard comune, permettendo il trasferimento di dati tra applicazioni e/o organizzazioni differenti.
Oltre a XML, esistono anche XLL e XSL: rispettivamente dedicati alla gestione dei link e alla rappresentazione.
I documenti XML sono composti da elementi a cui possono essere associati attributi. Ogni elemento può comprendere dei sottoelementi o del testo.
La caratteristica comune a tutti gli elementi è la disposizione secondo uno schema ad albero, alle cui radici c'è un elemento chiamato root (radice).
La struttura fisica è l'insieme di tag che compongono il codice del file, non è necessario l'utilizzo di uno specifico editor.
Si tratta della prima riga di ogni file XML e presenta la seguente sintassi:
<?XML version="1.0" standalone="yes" encoding="UTF-8"?>
Nel dettaglio:
<?XML ... ?> è l'elemento che indica l'aderenza alla specifiche XML;
version definisce la versione delle specifiche a cui si fa riferimento;
standalone indica se si tratta di un documento ben formato (yes) o valido (no);
encoding individua il tipo di codifica (UTF-8 è il valore di default).
Contiene le regole che definiscono i tag usati nel documento XML, definisce la struttura del documento.
In XML esistono due tipi di documenti:
BEN FORMATI (well-formed), ovvero quei documenti conformi alle specifiche generiche di XML;
VALIDI (valid), ovvero quei documenti conformi a un DTD specifico.
Esistono due modalità per inserire IL DTD in un file XLM, infatti, i DTD possono essere:
INTERNI, secondo lo schema
<!DOCTYPE nome_root [
dichiarazioni di elementi e attributi
]>
ESTERNI, secondo lo schema
<!DOCTYPE nome_root SYSTEM "file_esterno.dtd">
L'elemento è il blocco di base del documento XML, è delimitato da un tag di apertura e un tag di chiusura secondo la sintassi
<nome_tag></nome_tag>
Per dichiarare un elemento nel DTD utilizziamo la sintassi <!ELEMENT [nome_elemento] ([elenco_sottoelementi)]>.
Gli attributi permettono di aggiungere ulteriori informazioni ad un elemento: prendiamo ad esempio un documento.xml in cui viene descritto il contenuto di uno scatolone di vinili. Possiamo distinguere i vinili in due categorie: da collezione e non collezionabili.
La sintassi per assegnare un attributo ad un oggetto è
<nome_elemento nome_attributo="valore"></nome_elemento>
Per dichiarare un attributo nel DTD utilizziamo la sintassi <!ATTLIST nome_elemento nome_attributo1 (valore1|valore2) "valore_default" #valore_controllo>, dove:
nome_elemento è il nome dell'elemento;
nome_attributo1 è il nome del primo attributo;
valore1 e valore2 sono i possibili valori che l'attributo può assumere;
valore_default è il valore di default dell'attributo;
#valore_controllo è un valore che permetterà al parser di gestire l'elemento durante il controllo di conformità, può assumere vari valori:
#REQUIRED (rende l'attributo necessario quando si usa l'elemento);
#IMPLIED (permette che all'attributo non venga assegnato un valore);
#FIXED (ammette che l'attributo non abbia valore, ma nel caso in cui il valore sia espresso deve coincidere con il valore di default);
CDATA (indica che verrà inserito come valore un astringa generica).
Le entità permettono di creare riferimenti a dati esterni, ad altri documenti o ad una porzione di testo, a condizione che sia stata effettuata la dichiarazione nel DTD.
Per la dichiarazione basta utilizzare la sintassi <!ENTITY divina_commedia "Dante A., La Divina Commedia">, nel caso il DTD sia invece un'entità esterna useremo la sintassi <!ENTITY divina_commedia "./div_com.txt">.
Aperto il file.xml appena creato su un browser ci accorgeremo che la grafica non sarà propriamente delle migliori, potremo risolvere il problema applicando dei CSS (di cui abbiamo già parlato qua) al file XML. Per richiamare un file CSS esterno, utilizzeremo la sintassi <?xml-stylesheet type="text/css" href="File.css" ?>