XML ( eXtensible Markup Language) è un linguaggio di markup fra i più usati, ma non di certo il più amato, e ne vedremo i motivi. In questo appuntamento descriveremo YAML, un linguaggio di markup alternativo e decisamente più… amichevole di XML (da qui il divertente acronimo Yet Another Markup Language)
XML vs YAML
Lo scopo di un linguaggio di markup è di creare una rappresentazione strutturata di un testo per facilitarne il trattamento con mezzi informatici. I computer infatti, al contrario di noi, fanno molta fatica a capire il contenuto di un testo non strutturato secondo regole preimpostate. L’esempio più comune è il testo di un sito internet come quello che state leggendo: per dire al vostro computer di mostrare un testo formattato in un certo modo bisogna inviarglielo in formato HTML, che è appunto il linguaggio di markup utilizzato dalle pagine web.
XML è stato creato come linguaggio di “eccellenza” per la rappresentazione dei dati strutturati; la sua natura estensibile e i numerosi standard a cui si appoggia hanno difatti creato un ecosistema davvero molto completo e completamente integrato: validazione, formati d’interscambio di dati, sicurezza, ecc. Tutto ciò è molto vantaggioso dal punto di vista enterprise, perché fornisce tutta una serie di garanzie sul corretto funzionamento dei vari sistemi che adottano questi standard, ma appesantisce enormemente il linguaggio e gli strumenti che lo trattano.
YAML al contrario è nato per essere facile da utilizzare, la sua sintassi infatti si avvicina molto a quello che un essere umano potrebbe considerare un “testo libero”. In realtà il linguaggio possiede regole sintattiche ben precise, ma queste sono decisamente più facili e intuitive rispetto a quelle di XML o di altri linguaggi di markup come JSON (che vedremo in un altro appuntamento).
Vediamo un esempio scritto in entrambi i linguaggi.
Versione XML:
<?xml version='1.0' encoding='UTF-8'?> <dati> <tabella nome="cataloghi"> <righe> <riga> <id>1</id> <nome>Primavera-Estate 2011</nome> <codice>PE2011</codice> <data_inserimento>2011-01-29</data_inserimento> </riga> <riga> <id>2</id> <nome>Autunno-Inverno 2011</nome> <codice>AI2011</codice> <data_inserimento>2011-06-12</data_inserimento> </riga> </righe> </tabella> </dati>
Versione YAML:
dati: - tabella: nome: 'cataloghi' righe: - riga: id: 1 nome: 'Primavera-Estate 2011' codice: 'PE2011' data_inserimento: '2011-01-29' - riga: id: 2 nome: 'Autunno-Inverno 2011' codice: 'AI2011' data_inserimento: '2011-06-12'
Come si può notare, la sintassi YAML è molto più vicina ad una comune lista scritta in testo libero, anche se è evidente una struttura alquanto rigorosa. I vantaggi di YAML rispetto a XML sono evidenti:
- leggibilità facilitata dall’assenza dei tagi di apertura e chiusura;
- scrittura semplificata: anche qui, l’assenza dei tag e della necessità di bilanciarli fa risparmiare un sacco di tempo e grattacapi;
- minore lunghezza dei file.
Librerie
Per utilizzare YAML sono stati create diverse librerie per i vari linguaggi, in particolare per PHP vogliamo segnalarvene alcune.
- la libreria YAML di Symfony è molto completa, ben documentata e attivamente supportata. È nata e cresciuta all’interno del progetto Symfony, un framework molto potente per la realizzazione di applicazioni in PHP;
- php-yaml è un wrapper intorno alla libreria nativa LibYAML (scritta in C). Il vantaggio maggiore è sicuramente una maggiore velocità, soprattutto per quanto riguarda grossi file; l’unica controindicazione è che, trattandosi di una libreria nativa, va installata dall’amministratore di sistema e se il vostro hosting non la include non la potete utilizzare.
- Syck è un’altra libreria nativa, molto performante ma purtroppo nota anche per i numerosi bug e criptici messaggi d’errore;
- Spyc è una libreria scritta in PHP, supporta la specifica YAML 1.0;
Links
- Linguaggio di markup (Wikipedia);
- Sito ufficiale di YAML;
- XML (Wikipedia);
- php-yaml e LibYAML;
- Syck;
- Spyc;
- libreria YAML di Symfony.