Come funziona l'XSLT
Il processo di trasformazione di un documento XML viene effettuato da un processore che è esso stesso, una applicazione che legge sia il documento XML e sia quello XSLT ed applica XSLT a XML.
Visto che è stato introdotto, in questa sezione, il termine processore, mi soffermo un attimo circa la visualizzazione di documenti XML ed XSLT. Nonostante i documenti XML possono essere elaborati e visualizzati da diversi tipi di applicazioni software, lo scopo principale di un linguaggio è quello di fornire un formato universale per l´archiviazione, lo scambio e la visualizzazione dei dati sul web. In questo corso si visualizzano documenti XML ed XSL utilizzando browser web che rappresentano il modo più utilizzato per accedere e visualizzare documenti web. La maggior parte degli esempi fanno riferimento al browser della Microsoft, Internet Explorer 6.0. Gli esempi, pertanto, sono stati testati su tale browser.
Editor XML
Gli editor XML, quelli più semplici ed elementari, offrono una visualizzazione con codifica a colori e, qualche volta, il controllo della sintassi. Essendo, come ho già avuto modo di scrivere nella precedente lezione, un documento XML essenzialmente testo, va benissimo il semplice editor Blocco Note. A mio modo di vedere si ha un maggior controllo del codice e di cosa andremo a scrivere. Anche in questo caso, i documenti di esempio, sia XML che XSL, sono stati scritti interamente con il Blocco Note.
La prima trasformazione XSLT
Affinchè si possa apprendere il processo di trasformazione di un documento XML da parte di un documento XSLT, cominciamo a scrivere qualche semplice rigo di codice. Scriviamo quanto di seguito riportato:
<amici>
<amico lavoro="dottore">Mario</amico>
<amico_2 lavoro="ingegnere" colore_capelli="nero">Gianni</amico_2>
</amici>
Salviamo questo file con il nome amici.xml. Il codice qui sopra scritto riporta il nome di due ipotetici amici. I nomi compaiono tra i tag <amico> e <amico_2>. Questi nomi hanno degli attributi: per il primo amico ho aggiunto il tipo di lavoro: il primo è un dottore, il secondo è un ingegnere. Per il secondo amico ho anche scritto il colore dei capelli. Quindi ho indicato 2 attributi per Gianni ed uno solo per Mario. Questo listato di codice XML può essere benissimo rappresentato come un albero; (incontreremo spesso questo termine, durante il corso). La figura di seguito riportata aiuta meglio a capire questo concetto:

Nella presentazione grafica, amici, amico e amico_2 sono gli elementi (tag) del sorgente XML.
lavoro=dottore, lavoro=ingegnere e colore_capelli=nero sono gli attributi (del tag).
Mario e Gianni sono i valori degli elementi. In questo grafico amici, amico, amico_2, lavoro=dottore, lavoro=ingegnere e colore_capelli=nero sono definiti NODI.
XSLT riconosce (cioè può accedere) a 7 tipi di nodi:
- Document root >> radice del documento;
- Attribute >> (Attributo);
- Comment >> (Commento);
- Element >> (Elemento);
- Namespace >> (Spazio dei nomi);
- Processing instruction >> (Istruzione di elaborazione);
- Text >> (Testo)
Quando questo albero verrà trasformato con XSLT, il processore (il motore del browser) parte dal nodo radice (amici) e percorre l´albero a seconda degli elementi che andremo a dichiarare; in altri termini rispetta la "precedenza" degli elementi che abbiamo deciso di visualizzare prima o dopo. Quando il processore trova un nodo controlla che nel file XSLT ci sia una regola che corrisponde al nome del nodo incontrato. Se la trova, verrà applicata; diversamente non succede nulla. Questo significa che eseguire XSLT (da parte del browser) non è procedere in "sequenza", come succede per altri linguaggi di programmazione. Eseguire XSLT è uguale ad una esecuzione guidata dagli eventi; un evento determina la sequenza con la quale il codice viene eseguito. Nell´XSLT tale sequenza è determinata dai dati che incontra. Possiamo dire che XSLT è basato sulla esecuzione guidata dai dati; ciò significa che il codice viene eseguito quando incontra un dato.
Tornando al nostro file amici.xml, dobbiamo collegarlo al file .xsl che andremo a creare. Possiamo scrivere, sotto il prologo, l´istruzione di elaborazione come segue:
<?xml-stylesheet type="text/xsl" href="/amici.xsl"?>
Ovviamente il file amici.xsl non lo abbiamo creato ma, con questa istruzione, abbiamo stabilito sia il nome che la posizione (allo stesso livello) di amici.xml.
Creare il file amici.xsl
Aprire il Blocco note e scrivere il codice riportato in basso:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" encoding="ISO-8859-1" indent="yes" />
<xsl:template match="/">
<h2>I miei amici</h2>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="amici/amico">
<p>Il mio amico si chiama <xsl:value-of select="." />. Esercita la professione di <xsl:value-of select="/amici/amico/@lavoro" />.</p>
</xsl:template>
<xsl:template match="amici/amico_2">
<p>Un altro mio amico si chiama <xsl:value-of select="/amici/amico_2" />. Esercita la professione di <xsl:value-of select="/amici/amico_2/@lavoro" />.
Egli ha i capelli di colore <xsl:value-of select="/amici/amico_2/@colore_capelli" />.</p>
</xsl:template>
</xsl:stylesheet>
Adesso tutto questo codice potrebbe sembrare scritto in arabo. Non ci soffermeremo sulla spiegazione dei tag XSLT; lo faremo in seguito. Quello che conta, al momento, è vedere come un file XML viene trasformato associandolo ad un file XSLT. Il primo esempio di prova mostra quanto fino ad ora realizzato.
Avrete notato che il codice, quando è scritto senza interruzione tra una sequenza e l´altra, va a capo automaticamente. Questo è dovuto al fatto che non trovando spazio sulla destra, si interrompe e procede su una nuova linea. Tutto ciò non compromette, come nel primo file, il buon fine della trasformazione.
| < Prec. | Succ. > |
|---|

