In questa lezione cerchiamo di riconoscere i tratti fondamentali di un documento di trasformazione e di imparare ad interpretarli e riprodurli. Inoltre esaminiamo alcuni degli strumenti per l'esecuzione delle nostre prove.
Nell'esempio (esempio1.xsl) della scorsa lezione abbiamo incontrato l’elemento radice stylesheet, l’elemento output che definisce il formato di destinazione (assumendo uno dei valori “xml", “html" o “text") e l’elemento cardine di XSLT, il template.
Non ci si deve preoccupare della sintassi talvolta prolissa che incontreremo: in alcuni casi è possibile utilizzare forme abbreviate dei comandi e in ogni caso gli editor XML sono in grado di eseguire l’autocompletamento degli elementi mentre li state scrivendo.
Il codice presentato contiene di fatto solo il template principale, obbligatorio in ogni foglio di stile, caratterizzato dall’attributo match="/", in grado cioè di venire invocato quando, all’inizio dell’elaborazione, si incontra la radice del documento (indicata con la barra a destra o forward slash).
Al suo interno andrebbe posto il codice HTML comune a tutte le pagine da produrre, nel nostro caso l’intero sorgente di questa pagina per il momento ben poco dinamica. Il codice mostrato produrrà quindi la medesima pagina HTML per qualsiasi file XML in input.
Possiamo a questo punto passare ad un po' di pratica. Per eseguire gli esempi della guida possiamo usare l'interprete lato client dei browser più comuni (Firefox, IE, Opera, etc.).
Ad esempio, con IE 5.0 o superiore (ma vale anche per altri browser) esiste la possibilità di eseguire lato-client la trasformazione di stile associata ad un file XML con una apposita processing instruction, il meccanismo con il quale anche i comuni fogli di stile CSS possono essere associati ai contenuti.
Un file XML, vuoto ad eccezione dell’elemento radice data, che realizzi questo tipo di trasformazione è il seguente: esempio1.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="esempio1.xsl"?>
<data/>
Altrimenti possiamo usare come implementazione di riferimento XT, scritta in Java (quindi pienamente portabile) da James Clark e corredata di un comodo eseguibile per sistemi Windows. Per trasformare il file input.xml nel file output.html utilizzando stile.xsl sarà sufficiente invocare dalla linea di comando:
xt input.xml stile.xsl output.html
Al di là del fatto che, con gli esempi più complessi (e perfettamente validi) di XML che incontreremo, alcune versioni di IE producano un errore inspiegabile, resta comunque il fatto che con il menu Visualizza>Sorgente del browser sia possibile vedere in chiaro il sorgente XML prima della trasformazione: personalmente non esporrei all’utente finale dati che potrebbero contenere informazioni sensibili, quali login e password di utenti, numeri di carte di credito etc.
Esistono invece processori XSLT che possono essere invocati lato-server dall’esecuzione dei linguaggi di scripting più diffusi:
- per i sistemi Microsoft (ASP) è sufficiente seguire un breve ma essenziale tutorial (purtroppo in inglese) presso W3Schools;
- per i sistemi che ospitano invece PHP esiste l’ottimo Sablotron XSLT Processor;
- infine per le JSP esiste un tag nelle Standard Tag Libraries per eseguire la trasformazione utilizzando un parser arbitrario.
La ghiotta occasione offerta dal linguaggio di trasformazione di XML è proprio la possibilità di estendere il modello “a tre livelli" (Three Tier Model) consolidatosi negli anni con un ulteriore livello: in quest’ottica il linguaggio di scripting principale (ASP, PHP, JSP) si deve unicamente occupare del reperimento dei dati richiesti nel backend (tipicamente un database) ed eventualmente organizzarli in un formato XML proprietario, mentre le trasformazioni di stile si occupano di elaborare questi ultimi realizzando il frontend, ovvero le pagine HTML ad uso dell’utente finale.