3 ebook a un prezzo eccezionale! 🚣‍♀️

Solo per un weekend: da venerdì 19 a lunedì 22 aprile.

Approfitta dell'offerta
Home
Introduzione a XML

04 Ottobre 2001

Introduzione a XML

di

Nel panorama dello sviluppo di applicazioni Web il linguaggio XML è diventato una componente da non sottovalutare.

La potenza e la semplicità di XML permettono, anche a chi sviluppa semplici applicazioni, di ottenere risultati che non sarebbero ottenibili, con la stessa scioltezza, utilizzando i classici strumenti di sviluppo Web.

Obiettivo di questo articolo, e di quelli che seguiranno, è di fornire una descrizione orizzontale dell’oggetto XML, descrivendone le caratteristiche e le tipicità, per poi spingersi in maniera verticale all’interno di tutte le sue innumerevoli caratteristiche, per approfondire tutti quegli aspetti che lo sviluppatore deve conoscere a fondo per poter maneggiare con tranquillità questo potentissimo strumento di sviluppo.

Per cominciare

Iniziando a descrivere XML è necessario fare qualche premessa.

XML è l’acronimo per eXtensible Markup Language, ma nonostante questo la definizione di “linguaggio” sta un po’ stretta ad XML. Si può parlare a pieno titolo, infatti, di “metalinguaggio”, cioè un linguaggio in grado di generare altri linguaggi. Uno degli obiettivi di XML, infatti, è la produzione automatica di linguaggi personalizzati di markup.

Le specifiche del linguaggio XML sono state definite dal W3C, esattamente come per HTML; questo ne fa uno standard aperto cui tutti i produttori di soluzioni software devono fare riferimento. Non ci sono elementi che possano far inglobare la tecnologia all’interno di soluzioni proprietarie di qualche azienda e questa è una garanzia per l’evoluzione e la standardizzazione futura del linguaggio.

Tali specifiche, inoltre, sono rigidissime e la loro implementazione deve essere obbligatoriamente garantita da tutte le applicazioni che intendono supportare lo standard. In caso contrario non si può parlare di supporto a XML.

XML è un veicolo di trasporto dell’informazione indipendentemente dall’utilizzo che di essa si voglia fare. Un documento XML può essere visualizzato direttamente da un browser Internet che sia in grado di comprenderlo, ma allo stesso modo può essere trasformato, attraverso l’utilizzo di XSL, in un linguaggio totalmente diverso, ad esempio HTML.

Non di rado infatti le applicazioni Web-based forniscono in output uno stream XML che viene convertito in fase di runtime in un altro linguaggio comprensibile dallo strumento di visualizzazione utilizzato.

L’esempio tipico è un’applicazione Web che fornisca automaticamente codice HTML per un browser Web oppure codice WML per un browser WAP in funzione del client che si collega.

La struttura rigida di XML, però, consente di utilizzare un documento scritto in tale linguaggio come se si trattasse di un formato di gestione dell’informazione assimilabile ad un semplice database. Come vedremo, infatti, grazie all’utilizzo di librerie scritte ad hoc per la gestione di documenti XML, può essere comodo utilizzarli per appoggiarvi informazioni.

XML è composto da semplice testo. Questa caratteristica è importantissima in quanto permette la spedizione di documenti XML attraverso il canale HTTP senza preoccuparsi troppo dei firewall, che di solito sono aperti a questa tipologia di transito, mentre sono molto più schizzinosi se si tratta di dati di tipo binario.
Un esempio di tecnologia che utilizza XML per il trasporto dell’informazione tra applicazioni remote è SOAP, un protocollo applicativo che permette di effettuare Remote Procedure Call utilizzando HTTP come protocollo di trasporto ed XML per codificare l’informazione.

Le basi di XML

Come dice il nome stesso, XML è un linguaggio di markup, pertanto la sua sintassi è formata essenzialmente da tag, esattamente come accade per HTML.

Vediamo un semplice documento XML.

<?xml version="1.0"?>
<Libreria>
   <Libro ISBN="88-7303-849-2">
      <Autore>Steven Holzner</Autore>
      <Titolo>XML Tutto&Oltre</Titolo>
      <Editore>Apogeo</Editore>
      <Prezzo_Lire>98.000</Prezzo_Lire>
      <Prezzo_Euro>50,61</Prezzo_Euro>
   </Libro>
</Libreria> 

Come si può vedere ogni singolo tag deve essere racchiuso tra i simboli di minore e maggiore, esattamente come avviene per HTML. I tag devono essere sempre in coppia, uno per l’apertura ed uno per la chiusura della sezione, ed il secondo deve contenere nella prima posizione il carattere “/”.
È concessa la presenza di attributi all’interno del tag di apertura.

La sintassi per la coppia di tag è, quindi, la seguente:

<tag1 nome_attributo="valore_attributo">valore</tag1> 

Per chi conosce HTML, la sintassi appena descritta dovrebbe essere piuttosto familiare. La differenza sostanziale sta nel fatto che in XML il vocabolario di tag utilizzabile non è predefinito. E’ possibile, quindi, utilizzare nelle proprie applicazioni XML, tag personalizzati in funzione delle esigenze applicative o anche, semplicemente, descrittive.
Come si diceva, però, la specifica di XML è molto rigida, al contrario delle varie interpretazioni che si possono esprimere da quella che descrive HTML. Tale rigidità si evidenzia analizzando una serie di regole che devono essere rispettate da ogni documento XML.

Regole di base

I tag sono considerati “case sensitive”, cioè la disposizione di maiuscole e minuscole deve essere uguale per il tag di apertura e quello di chiusura.
La sezione seguente, infatti, è incoerente e genererà un errore in fase di lettura:

<Tag1>valore</tag1> 

Il tag di chiusura deve essere sempre presente, è concesso che, in caso l’informazione trasportata dall’elemento sia fornita dalla presenza del tag stesso, la coppia di tag possa essere contratta attraverso una sintassi speciale.

L’elemento utilizzato in HTML per andare a capo, ad esempio, è <BR>. Se volessimo scriverlo in XML saremmo obbligati a scriverlo in questo modo: <BR></BR>.
In questo caso, però, l’informazione legata al tag, cioè l’ordine per il browser di andare a capo, è trasportata dalla stessa presenza del tag, e non da un suo eventuale contenuto. Ecco quindi che è possibile contrarre questa coppia di tag con la sintassi: <BR />.

Il valore di un singolo elemento, cioè la vera informazione trasportata dal documento XML, è racchiusa tra il tag di apertura e quello di chiusura. Poiché i tag possono essere nidificati, come si può vedere dal primo esempio, è possibile che il valore di un determinato elemento sia formato, a sua volta, da una sequenza di altri tag.

Ogni documento XML può contenere, nella prima riga, la seguente istruzione speciale:

<?xml version="1.0"?> 

che identifica univocamente la versione della specifica XML utilizzata per comporre il documento e di conseguenza deve essere seguita per la sua parsificazione, cioè per l’interpretazione dell’informazione che trasporta.

Il primo dei tag che si incontrano nella lettura di un documento XML costituisce l’elemento root, cioè la radice, l’elemento principale. Un documento XML può contenere al massimo un documento root. La sintassi seguente, infatti, non è ammessa in quanto contiene due distinti elementi principali:

<?xml version="1.0"?>
   <tag1>
      ...
   </tag1>
   <tag2>
      ...
   </tag2> 

Nel caso in cui sia necessario memorizzare una struttura come quella precedente, sarà necessario racchiudere l’intero documento XML all’interno di un ulteriore tag che abbia il ruolo di root.
Questa soluzione è rappresentata dal documento seguente:

<?xml version="1.0"?>
<root>
   <tag1>
     ...
   </tag1>
   <tag2>
     ...
   </tag2>
</root> 

Non è permesso avere coppie di tag che si intersecano. L’esempio seguente è scorretto dal punto di vista formale:

<tag1><tag2>valore</tag1></tag2> 

e deve essere scritto nel modo seguente:

<tag1><tag2>valore</tag2></tag1>

Se si seguono le regole appena descritte si ottiene un documento che si autodescrive sia dal punto di vista dell’informazione memorizzata, che da quello della sua struttura.
L’autodescrizione è molto importante in quanto, grazie al fatto di poter utilizzare tag proprietari, è possibile sceglierli in modo che siano in qualche modo parlanti, cioè forniscano informazioni di contorno sul significato dell’informazione trasportata. In questo modo si ottiene una struttura analizzabile, oltre che da programmi software, anche da un interprete umano.

Sono certo, infatti, che quando avete visto per la prima volta il documento di esempio che è stato fornito all’inizio:

<?xml version="1.0"?>
<Libreria>
   <Libro ISBN="88-7303-849-2">
       <Autore>Steven Holzner</Autore>
       <Titolo>XML Tutto&Oltre</Titolo>
       <Editore>Apogeo</Editore>
       <Prezzo_Lire>98.000</Prezzo_Lire>
       <Prezzo_Euro>50,61</Prezzo_Euro>
   </Libro>
</Libreria>

avevate capito subito il significato dell’informazione che questo trasporta.

Adesso sappiamo come deve essere fatto un documento XML, nei prossimi articoli cercheremo di capire come sia possibile definire un linguaggio di markup e come sia possibile scrivere documenti utilizzando le specifiche che ci saremo dati.

Nel frattempo vorrei che faceste qualche esperimento verificando come si comporta il vostro browser di fiducia se gli chiedete di interpretare un documento XML. Attendo le vostre impressioni.

L'autore

  • Massimo Canducci
    Massimo Canducci vanta oltre 25 anni di esperienza nel campo dell'innovazione e della digital transformation ed è Chief Innovation Officer per Engineering Ingegneria Informatica. È docente alla Singularity University, l'Università di Torino e l'Università di Pavia, e insegna in master MBA.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Libri che potrebbero interessarti

Tutti i libri

XML

Conoscere il linguaggio XML significa poter comunicare veramente con tutti

12,26

12,90€ -5%

di Massimo Canducci

Programmare con PHP 7

41,25

59,99€ -31%

33,25

35,00€ -5%

24,99

di Steve Prettyman

HTML5

Guida tascabile al linguaggio e agli elementi di una pagina web

14,65

19,89€ -26%

12,26

12,90€ -5%

6,99

di Matteo Tettamanzi