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 supposzione
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 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 racchgiude 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 foglli di stile, sarebbe a dire un modo per descrivere come va visualizzato il documento
Proviamo a vedere un oggetto on 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 son entrambe validi, ovviamente va specificato quando si definisce l'XML usato 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>