Xml e xsl: tutorial introduttivo Articolo letto: 7669 voltedi Marco DeseriScopriamo xml per gradi: cos'è e perché può esserci utile, come scrivere codice xml e come realizzare pagine html grazie a xsl. Cos'è XmlXml è un linguaggio di markup flessibile, adatto a descrivere la struttura e la semantica di un documento. Come html, xml è un linguaggio di markup: testo delimitato da marcatori, detti tag. Xml non ha marcatori predefiniti, a differenza di html, perché è un linguaggio più astratto. Html è nato per descrivere documenti informativi e dispone di una semantica adatta allo scopo: all'interno del documento vengono identificate porzioni di testo che hanno il valore di titolo di primo livello (h1), di paragrafo (p) e così via. Xml, invece, consente di definire semantiche diverse in base al tipo di informazione da descrivere, che può essere di qualsiasi natura. Si può usare Xml per descrivere un album musicale, una pianta, il campionato di calcio. Per esempio, la descrizione di un album musicale potrebbe prevedere: titolo, nome dell'artista, nome del produttore ed elenco delle canzoni. Con xml è possibile costruire un linguaggio di markup adatto allo scopo. Vantaggi I principali vantaggi di xml? Eccoli.
Xml dà un senso al contenuto: non è un formato pensato per la visualizzazione da parte degli esseri umani, anzi, molto spesso xml è usato come formato di interscambio tra macchine. Tuttavia, xml è molto adatto anche per gestire contenuti destinati alle persone, per via della sua trasformabilità. I contenuti xml possono essere convertiti tramite fogli di stile in formati di presentazione, come html o pdf. Sul tema della gestione dei contenuti con xml, potete vedere l'articolo Contenuti portabili con Docbook. Un po' di codice xmlXml consente una grande flessibilità sul piano semantico, ma richiede una sintassi formalmente corretta. Per essere considerato ben formato un file xml deve rispettare queste regole:
E adesso vediamo un semplice file xml di esempio (salvate il file come canzoni.xml): <?xml version="1.0" encoding="ISO-8859-1"?> <album> <titolo>Hail to the thief</titolo> <artista>Radiohead</artista> <produttore>Nigel Godrich</produttore> <anno>2003</anno> <etichetta>Capitol Records</etichetta> <canzone> <numero>1</numero> <titolo>2+2=5</titolo> </canzone> <canzone> <numero>2</numero> <titolo>Sit down, stand up</titolo> </canzone> [...] <canzone> <numero>13</numero> <titolo>Scatterbrain</titolo> </canzone> <canzone> <numero>14</numero> <titolo>A wolf at the door</titolo> </canzone> </album> Questo documento rispetta le regole che abbiamo visto, ed è un documento ben formato. Potete provare a fare un copia-incolla del codice in un qualsiasi editor di testo, e a salvare il file come canzoni.xml.
Aprendolo con un browser (da explorer 5 in avanti), dovreste visualizzare il documento come albero gerarchico. E' molto importante avere in mente la struttura gerarchica del documento, perché è alla base di tutte le operazioni sul file che possiamo compiere, tra cui la trasformazione tramite xsl. Per chi ha familiarità con dos o con una shell unix, l'albero del documento può essere percorso esattamente come un filesystem, usando questa notazione:
Realizzare documenti html con xmlPer realizzare un documento html, a partire dal nostro canzoni.xml, è necessaria una trasformazione attraverso fogli di stile xsl. I fogli di stile xsl Extensible Stylesheet Language (xsl) comprende sia un linguaggio di trasformazione, sia un linguaggio di formattazione. Attraverso il linguaggio di trasformazione (xslt), di cui ci occuperemo, è possibile definire le regole con cui un documento xml viene trasformato in un altro documento xml. La trasformazione del documento viene realizzata da un parser xsl, che:
Esistono molti parser xsl, generalmente gratuiti, per tutti i sistemi operativi. Internet Explorer dispone di un proprio parser, in grado di trasformare automaticamente un file xml attraverso xsl. Questo significa che, se all'interno del documento xml è linkato un foglio di stile, Explorer eseguirà automaticamente la conversione. Per linkare un foglio di stile è sufficiente inserire all'interno del documento xml, subito dopo il prologo, una linea di codice simile a questa: <?xml-stylesheet type="text/xsl" href="canzoni.xsl"?> Linkare il foglio di stile direttamente al file xml e far eseguire la trasformazione al browser può essere una soluzione rapida per fare delle prove, ma non è certo l'ideale in ambiente di produzione. Per creare documenti leggibili da tutti i browser è consigliabile pre-parsare i file xml e far servire dal proprio web-server semplici file html. Dopo questa divagazione sui parser, torniamo ai fogli stile xsl. Il foglio di stile è costituito da regole di matching e da template: quando il parser incontra nell'albero del documento xml una corrispondenza con l'elemento da cercare, procede alla sostituzione con ciò che incontra nel template. Vediamo un file xsl di esempio (salvate il file come canzoni.xsl, nella stessa directory di canzoni.xml):
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h1>
<xsl:value-of select="/album/titolo"/> -
<xsl:value-of select="/album/anno"/>
</h1>
<h2>
<xsl:value-of select="/album/artista"/>
</h2>
<h3>
Prodotto da:<xsl:value-of select="/album/produttore"/>
</h3>
<h3>
Lista delle canzoni;
</h3>
<table cellspacing="3" callpadding="0" border="1">
<th>nr.</th>
<th>titolo</th>
<xsl:for-each select="/album/canzone">
<tr>
<td><xsl:value-of select="numero"/></td>
<td><xsl:value-of select="titolo"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Le regole di sostituzione cominciano dalla terza riga:
<xsl:template match="/">
e terminano con:
</xsl:template>
Tra questi due punti, sono definite le regole da applicare quando il parser incontra l'elemento radice (“/”). Il contenuto di questo blocco è un misto tra html e regole di sostituzione. L'html viene mandato in output così com'è, mentre per le altre regole xsl il parser effettua le sostituzioni man mano che le incontra. Simuliamo il comportamento del parser e vediamo in concreto cosa succede:
Come vedete, il meccanismo è piuttosto semplice. Xsl è un linguaggio molto potente e consente di fare molto più di quello che abbiamo illustrato in questo banale esempio. In futuro, vedremo di analizzare più nel dettaglio le potenzialità di xml e xsl. [1] Da notare ci sono due cose: la prima è che in questo caso il percorso è espresso in termini assoluti, partendo dall'elemento radice. La seconda è che il tag <xsl:value-of> è chiuso nella forma abbreviata, usando uno slash <xsl:value-of />, piuttosto che con un tag di chiusura separato<xsl:value-of ></xsl:value-of> |
The bat! V3The Bat! è un programma di posta elettronica sicuro contro i virus ed efficace
contro lo spam. |