Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Uno sguardo ad XML

Introduzione pratica a XML: cos'è, a cosa serve e come verrà utilizzato.
Introduzione pratica a XML: cos'è, a cosa serve e come verrà utilizzato.
Link copiato negli appunti

*In collaborazione con Manthys

Da alcuni anni si sente parlare sempre più spesso di XML e sono in tanti a chiedersi cos'è questo linguaggio, a cosa serve, che relazione c'è con HTML. Qualcuno ha anche acquisito una visione distorta di XML, vedendo in questo linguaggio una nuova versione di HTML o addirittura un suo concorrente. In questo articolo offriremo una panoramica su XML e cercheremo di chiarire alcuni concetti legati a questo linguaggio e alla sua relazione con HTML ed il Web.

XML in sintesi

L'eXtensible Markup Language è un linguaggio di markup definito nel 1998 dal World Wide Web Consortium (W3C) il cui scopo è quello di consentire la definizione di altri linguaggi di markup. Un linguaggio di questo tipo è tecnicamente detto metalinguaggio e, nell'ambito XML, i linguaggi risultanti sono chiamati applicazioni XML.

Ma a cosa serve un linguaggio che definisce altri linguaggi? La cosa più immediata che viene in mente è la possibilità di definire il proprio linguaggio di markup per descrivere un qualsiasi documento: un articolo, un capitolo di un libro, una ricetta, ecc.

La caratteristica di XML, rispetto ad HTML, è che non viene definito alcun tag, ma vengono semplicemente date delle regole relative alla struttura di un documento e alla modalità di definizione dei tag. Ciascuno è libero di definire i tag di cui ha bisogno.

Cominciamo a vedere qualche esempio per chiarire le idee.

Documenti XML

Un documento XML non è altro che un file di testo abbastanza somigliante a prima vista ad un documento HTML. Diamo un'occhiata al seguente documento XML e proviamo a comprenderne la struttura:

<?xml version="1.0" ?>

<!-- Esempio di ricetta in XML -->
<ricetta>
 <pietanza nome="Pasta al burro" />

 <ingredienti>
  <ingrediente um="grammi" qta="500">Spaghetti</ingrediente>
  <ingrediente um="litri" qta="2,5">Acqua</ingrediente>
  <ingrediente um="grammi" qta="10">Sale</ingrediente>
  <ingrediente um="grammi" qta="100">Burro</ingrediente>
  <ingrediente um="grammi" qta="50">Formaggio grattugiato</ingrediente>
 </ingredienti>

 <procedimento>

Portare ad ebollizione l'acqua salata ed immergere gli spaghetti girandoli di tanto in tanto con una forchetta. Dividere il burro nei piatti da servire a tavola. Dopo circa 7-8 minuti scolare gli spaghetti e distribuirli nei piatti con il burro. Aggiungere il formaggio grattugiato e servire in tavola.

 </procedimento>
</ricetta>

Un documento XML è composto da elementi organizzati gerarchicamente. Ciascun elemento è individuato da una coppia di tag di apertura e chiusura. Nel nostro documento XML abbiamo, ad esempio, elementi individuati dai tag <ingrediente> e </ingrediente> o <procedimento> e </procedimento>.

Alcuni elementi possono non avere un corrispondente tag di chiusura, come nel caso dell'elemento <pietanza>. In questo caso, tuttavia, l'unico tag deve prevedere la forma <pietanza />, detta tag vuoto.

Come avviene in HTML, ciascun tag può avere degli attributi, con la differenza che in questo caso l'uso dei doppi apici o dei singoli apici per racchiudere il loro valore è obbligatorio.

Alcuni elementi si trovano all'interno di altri elementi. È il caso degli elementi <ingrediente> che si trovano all'interno dell'elemento <ingredienti>. In questo caso si dice che l'elemento <ingrediente> è un sottoelemento di <ingredienti>.

In realtà tutti gli elementi del documento XML sono sottoelementi di <ricetta>. Questo elemento di più alto livello che deve sempre esistere ed essere unico in un documento XML è detto root.

Al di fuori dell'elemento root possono esistere soltanto commenti, racchiusi come in HTML tra <!-- e -->, e direttive di elaborazione. Nel nostro documento è presente la direttiva <?xml version="1.0" ?> che indica la versione di XML utilizzata nel documento.

Nella creazione di documenti XML, un'attenzione particolare deve essere tenuta all'uso di maiuscole e minuscole. A differenza dell'HTML, XML è abbastanza pignolo su questo argomento e fa distinzione, ad esempio, tra i tag <ricetta> e <Ricetta>, considerandoli diversi.


I Document Type Definition

Grazie ad XML, nel nostro documento abbiamo potuto inventarci i tag che abbiamo ritenuto più idonei alla descrizione di una ricetta, strutturando il documento a nostro piacimento. Tuttavia questa libertà potrebbe creare qualche problema nella corretta descrizione di una ricetta: chiunque potrebbe utilizzare tag diversi per indicare lo stesso elemento o introdurre nuovi tag o definire un ordine gerarchico diverso da quello definito da noi. Questa eccessiva libertà porterebbe ad una sorta di anarchia nella definizione di ricette in XML.

Per porre rimedio a questo problema è necessario definire una serie di regole a cui tutti i documenti che definiscono ricette devono attenersi. Queste regole definiscono in pratica una grammatica per il nostro linguaggio di definizione di ricette.

XML prevede la definizione di queste regole tramite i cosiddetti Document Type Definition (DTD), documenti che stabiliscono quali tag vengono utilizzati dal nostro linguaggio e quale struttura hanno i relativi documenti.

Il seguente esempio rappresenta il DTD per il nostro linguaggio di markup per la definizione di ricette:

<!ELEMENT ricetta(pietanza, ingredienti, procedimento)>
<!ELEMENT pietanza EMPTY>
  <!ATTLIST pietanza nome CDATA #REQUIRED>
<!ELEMENT ingredienti(ingrediente+)>
<!ELEMENT ingrediente(#PCDATA)>
  <!ATTLIST ingrediente um CDATA #REQUIRED
            qta CDATA #REQUIRED>

<!ELEMENT procedimento(#PCDATA)>

Ciascuna voce <!ELEMENT> definisce gli elementi (tag) il cui uso è consentito nelle nostre ricette XML, indicando anche quali sottoelementi possono contenere. Nel caso della definizione dell'elemento <ricetta>, il DTD indica che questo elemento contiene gli elementi <pietanza>, <ingredienti> e <procedimento>.

Nel caso di definizione di elementi vuoti, il DTD prevede l'uso della parola chiave EMPTY, mentre per indicare che un tag contiene del testo è necessario indicare tra parentesi tonde la parola chiave #PCDATA.

Per definire una lista di attributi associati ad un tag è previsto l'uso di <!ATTLIST>, tramite cui viene specificato il nome del tag del quale si definiscono gli attributi, il nome di ciascun attributo, la parola chiave CDATA ed eventuali indicazione sull'obbligatorietà della presenza dell'attributo (nel nostro esempio #REQUIRED indica che l'attributo è obbligatorio).

Un DTD può essere incorporato in un documento XML o può essere esterno. Nel primo caso è necessario inserire il DTD dopo la dichiarazione della versione di XML utilizzata, come nel seguente esempio:

<?xml version="1.0" ?>
<!DOCTYPE ricetta [
... contenuto del DTD ...
]>

<ricetta>
...
</ricetta>

Nel secondo caso occorre memorizzare il DTD in un file separato con estensione .dtd ed inserire il riferimento come nel seguente esempio:

<?xml version="1.0" ?>
<!DOCTYPE ricetta SYSTEM "ricette.dtd">
<ricetta>
...
</ricetta>

Indipendentemente da come viene associato il DTD al documento XML, il documento sarà considerato valido soltanto se rispetta le regole descritte nel DTD. Non sarà valido pertanto un documento XML che presenta, ad esempio, il tag <portata> al posto di <pietanza> o il cui tag <ingrediente> non presenta entrambi gli attributi um e qta.

L'uso dei DTD è stato il primo approccio per definire delle regole di validità nella creazione di un documento XML. Recentemente è stato introdotto, in sostituzione dei DTD, l'uso degli Schemi XML che consentono di avere un controllo più accurato nella definizione dei tag (definizione del tipo di dato, indicazione del numero minimo e/o massimo di occorrenze di un tag, ecc.) e di essere essi stessi scritti in XML.

XML nel Web e oltre

Al contrario di HTML, XML non definisce come visualizzare un documento. I tag di XML non hanno alcun significato di formattazione ma descrivono la struttura ed il contenuto di un documento. Se visualizziamo un documento XML con un browser come MS Internet Explorer 4.0 o con Netscape Navigator 6.0 o superiori vedremo il codice XML stesso, a patto che il documento non contenga errori. Per ottenere una formattazione occorrerà associare al documento un foglio di stile tradizionale, come i CSS, o trasformarli tramite XSLT (eXtensible Style Language Transformation) in documenti HTML. XSLT è un linguaggio che consente di specificare trasformazioni di un documento XML in altri formati.

Nel primo caso occorrerà che il browser sia in grado di visualizzare un documento XML basandosi sulle impostazioni descritte nel CSS allegato. Attualmente non tutti i browser sono in grado di fare ciò, per cui questo utilizzo non è indicato per la realizzazione di siti Web da pubblicare su Internet.

Nel secondo caso XML definisce la struttura delle informazioni da visualizzare mentre XSLT converte queste informazioni in HTML. In realtà, sfruttando XSLT, possiamo convertire un documento XML in un qualsiasi altro formato: Word, PDF, Postscript, ecc.

Questo aspetto rende XML un descrittore universale di informazioni che possono essere fruite in diversi modi, non soltanto sul Web.

Infatti, la capacità di XML di descrivere informazioni di qualsiasi tipo ed in modo indipendente dalla piattaforma hardware e software utilizzata pone le basi per l'interoperabilità tra applicazioni diverse e distribuite.

Nei prossimi articoli introdurremo altri due linguaggi che formeranno la nuova architettura del Wordl Wide Web.

Ti consigliamo anche