L'introduzione di XML ha senza dubbio suscitato un certo movimento nel mondo informatico. La maggior parte degli esperti lo considera un valido strumento per la rappresentazione delle informazioni di vario tipo: dal Web alle immagini, dalle formule matematiche ai documenti. Ma è proprio vero che questo linguaggio è la panacea a tutti i mali della rappresentazione delle informazioni? Proviamo a vedere se ha anche qualche difetto.
La genericità
XML non è un linguaggio progettato per uno scopo specifico. Anzi, a dire il vero esso è un metalinguaggio, cioè un linguaggio per definire altri linguaggi. In altre parole esso è costituito da un insieme di regole sintattiche da utilizzare per definire linguaggi di markup.
Questa assenza di uno scopo ben preciso, quindi di una assoluta genericità, è stata oggetto di critiche perché porta a doversi appoggiare ad altre tecnologie per definire un linguaggio specializzato o ad un proliferare di linguaggi che fanno più o meno la medesima cosa.
Ad esempio, per definire la grammatica di un linguaggio basato su XML e specializzato per un determinato scopo possiamo utilizzare un DTD (Document Type Definition), ossia una tecnologia esterna a XML.
Inoltre, vista la grande genericità del metalinguaggio, chiunque può definire un linguaggio che descriva, ad esempio, una tabella di un database, con il rischio che ciascuno faccia a modo suo.
La complessità
Un altro difetto contestato a XML è la sua intrinseca complessità. Certo questo sembra un paradosso, visto che XML è una versione semplificata di SGML! Evidentemente non risulta abbastanza semplificato per buona parte degli utenti.
In realtà il difetto di complessità è legato non tanto alle regole di base del metalinguaggio, quanto ad un suo utilizzo avanzato. In un certo senso, la complessità può essere vista come conseguenza della genericità. Infatti, per un uso avanzato e corretto di XML occorre utilizzare meccanismi come i namespace e altre tecnologie per gestire i diversi aspetti del linguaggio: schemi per definire la grammatica (DTD, XML Schema, Relax NG, ecc.), linguaggi per gestire le trasformazioni (XPath, XSLT) o altre elaborazioni (XQuery, XSL-FO).
L'insieme di queste tecnologie influenza la curva di apprendimento delle tecnologie basate su XML e può generare confusione. Almeno due sono le conseguenze di questo difetto:
- una eccessiva semplificazione di XML da parte degli utenti, che spesso lo riducono a puro formato di file (e quindi una visione distorta di del metalinguaggio stesso)
- una rinuncia ad usare XML preferendo formati noti (CSV, file .INI, ecc.)
Non è detto comunque che la seconda opzione sia errata. Tutto dipende dall'uso che si intende fare dei dati.
La verbosità
Un altro aspetto molto criticato di XML è la sua verbosità, cioè un eccessivo utilizzo di caratteri non direttamente collegati alle informazioni da veicolare. Facciamo un esempio per chiarire il concetto. Supponiamo di voler memorizzare in un file XML un elenco di nomi e cognomi. Un esempio di documento XML che soddisfa questa esigenza è il seguente:
<?xml version="1.0"?>
<persone>
<persona>
<nome>Mario</nome>
<cognome>Rossi</cognome>
</persona>
<persona>
<nome>Marco</nome>
<cognome>Verdi</cognome>
</persona>
</persone>
Come possiamo vedere, le informazioni rilevanti che vogliamo memorizzare (Mario Rossi e Marco Verdi) sono una minima parte rispetto al numero totale di caratteri presenti nel file XML. Nel caso in questione abbiamo 20 caratteri rilevanti su un totale di 174 caratteri, appena il 12%!
Sicuramente una rappresentazione in formato CSV sarebbe molto più compatta:
Nome, Cognome
Mario, Rossi
Marco, Verdi
In questo caso gli unici caratteri "sprecati" sono la riga di intestazione, le virgole e gli eventuali spazi (ignoriamo di proposito i ritorni a capo).
Se per piccoli file questa differenza può sembrare di poco conto, immaginatevi il peso che può avere per file di grandi dimensioni o in situazioni in cui il tempo di trasmissione dei dati è importante.
L'altra faccia della medaglia
Quelli esposti sono i difetti più evidenti e principalmente contestati di XML. Mentre alcune osservazioni possono essere considerate soggettive, come ad esempio quelle legate alla complessità delle tecnologie XML, le altre appaiono oggettive.
Tuttavia le caratteristiche contestate possono essere considerate anche da un punto di vista positivo.
Ad esempio, la genericità del metalinguaggio potrebbe essere anche interpretata come un vantaggio: la disponibilità di parser generici che possono convalidare la correttezza di un documento rispetto ad una grammatica senza sapere assolutamente nulla del linguaggio da convalidare.
Anche la verbosità di XML potrebbe avere un lato positivo: consente una lettura immediata per l'occhio umano. In ogni caso il problema potrebbe essere parzialmente aggirato con algoritmi di compressione.
Conclusioni
Come abbiamo avuto modo di vedere, XML non è immune da difetti. Per comprendere fino in fondo se tali difetti sono accettabili o meno per le nostre applicazioni occorrerebbe fare un'attenta valutazione. Anche se XML è uno standard accettato ormai quasi universalmente, non è detto che sia sempre e comunque la scelta migliore.