xml

eXtensible Markup Language

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:

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>

Alcuni riferimenti utili

XML tutorial su w3schools.com

introduzione su html.it

servizio di validazione