XML è formalmente definito come metalinguaggio: un linguaggio per definire altri linguaggi. La definizione è molto altisonante ma nella pratica ci permette di definire dei marcatori (tag) che possono contenere qualsiasi tipo di informazioni, per capire meglio la situazione possiamo dire che XHTML è una versione particolare di XML che consentre di descrivere pagine web.
La sintassi di un documento è molto semplice: inizia con
<?xml version="1.0" encoding="UTF-8"?> (facendo la ragionevole supposizione
che il file sia codificato in UTF-8)
e poi prosegue con una serie di tag nidificati in maniera corretta (i parser
XML non sono tolleranti come i browser nel leggere un documento),
vediamo come esempio una rubrica:
<?xml version="1.0" encoding="UTF-8"?> <rubrica> <persona eta="18"> <nome>Pluto</nome> <numero>555-87562345</numero> </persona> <persona eta="14"> <nome>Pippo</nome> <numero>555-874534555</numero> </persona> </rubrica>
In pratica scrivere un documento XML è abbastanza semplice tenedo conto di alcune regole:
- un qualsiasi contenuto va racchiuso in un tag
- il nome di un tag non deve contenere spazi
- per aprire un tag il suo nome si racchiude tra
<e> - nell'apertura di un tag possono essere opzionalmente presenti uno o più attributi
- ogni attributo è scritto come
nome="valore" - per chiudere un tag si racchiude il suo nome tra
</e> - i tag vanno chiusi nidificandoli correttamente (si chiude per primo l'ultimo aperto)
XML ha due possibili
tipi mime:
application/xml (RFC 3023) e
text/xml (RFC 3023).
L'XML è molto usato per l'interscambio (e la memorizzazione) dei dati in ambito aziendale, offre alcuni strumenti/tecnologie molto utili come ad esempio:
- DTD
- un insieme di regole grammaticali che definiscono uno specifico linguaggio (es: nella rubrica posso mettere quante persone voglio...)
- XML Schema
- di uso analogo ad DTD ma più recente
- XSL
- (eXtensible Stylesheet Language): è un linguaggio per definire i fogli di stile, sarebbe a dire un modo per descrivere come va visualizzato il documento
Proviamo a vedere un oggetto un pochino più complicato: il menu di una pizzeria
<?xml version="1.0" encoding="UTF-8"?>
<pizzeria>
<nome>Il pappagallo rosso</nome>
<elencoPiatti>
<piatto>
<nome>pizza margherita</nome>
<prezzo>5.5</prezzo>
<elencoIngredienti>
<ingrediente>pasta</ingrediente>
<ingrediente>mozzarella</ingrediente>
<ingrediente>pomodoro</ingrediente>
<ingrediente>basilico</ingrediente>
</elencoIngredienti>
</piatto>
<piatto>
<nome>pizza marinara</nome>
<prezzo>6.5</prezzo>
<elencoIngredienti>
<ingrediente>pasta</ingrediente>
<ingrediente>mozzarella</ingrediente>
<ingrediente>pomodoro</ingrediente>
<ingrediente>alici</ingrediente>
<ingrediente>capperi</ingrediente>
</elencoIngredienti>
</piatto>
</elencoPiatti>
</pizzeria>
Lo stesso oggetto può essere espresso usando anche gli attributi.
<?xml version="1.0" encoding="UTF-8"?>
<pizzeria nome="Il pappagallo rosso">
<elencoPiatti>
<piatto nome="pizza margherita" prezzo="5.5">
<elencoIngredienti>
<ingrediente>pasta</ingrediente>
<ingrediente>mozzarella</ingrediente>
<ingrediente>pomodoro</ingrediente>
<ingrediente>basilico</ingrediente>
</elencoIngredienti>
</piatto>
<piatto nome="pizza marinara" prezzo="6.5">
<elencoIngredienti>
<ingrediente>pasta</ingrediente>
<ingrediente>mozzarella</ingrediente>
<ingrediente>pomodoro</ingrediente>
<ingrediente>alici</ingrediente>
<ingrediente>capperi</ingrediente>
</elencoIngredienti>
</piatto>
</elencoPiatti>
</pizzeria>
Normalmente non ci sono obblighi per utilizzare un attibuto o un tag per contenere una informazione, si evita però solitamente di usare gli attributi quando il contenuto è troppo esteso come ad esempio la via di una citta ma i due esempi qui sotto sono entrambi validi, ovviamente va specificato quando si definisce una applicazione di l'XML se si usa un attributo o un tag per contenere una determinata informazione.
<persona><eta>17</eta><nome>piero</nome></persona>
<persona eta="17">piero</persona>