HTML/XHTML  »  Guide  »  Guida XHTML 

Trasformazioni XML: come lavora XSL



In questa lezione vedremo quali sono le fondamentali regole di funzionamento di un foglio XSLT Nella prossima, dove analizzeremo il foglio definito per X-blog, scenderemo maggiormente nei dettagli: affrontando un caso concreto: faremo una specie di anatomia di un documento XSL.

Struttura di base

Un foglio di stile XSLT è un documento XML, pertanto è sottoposto alle stesse regole sintattiche: deve essere insomma un documento valido. La struttura minima contiene due parti:

  • il prologo
  • l'elemento radice

Nel prologo si specifica in genere solo la dichiarazione XML:

<?xml version="1.0">

Per essa valgono le stesse regole già viste per XHTML.

Subito dopo il prologo è necessario dichiarare l'elemento radice. In un documento XSL l'elemento radice è <xsl:stylesheet>. Esso deve contenere un attributo che definisca la versione del linguaggio e almeno una dichiarazione di namespace. Quest'ultima ha come valore: "http://www.w3.org/1999/XSL/Transform".

La struttura di base di un foglio XSLT si presenta dunque così:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
....................................
</xsl:stylesheet>

Tra il tag di apertura e quello di chiusura dell'elemento radice vanno definite tutte le regole di trasformazione.

Scegliere il metodo di output

Prima della definizione delle regole di trasformazione è possibile specificare il formato del documento finale. Ciò avviene tramite la dichiarazione <xsl:output>. All'interno di tale dichiarazione si possono specificare vari attributi. Il più importante è certamente method, con cui si può impostare il formato di output scegliendo tra xml, html e text:

<xsl:output method="html"/>

Altri attributi consentono di definire il DOCTYPE con la relativa DTD, la dichirazione XML, la scelta della codifica dei caratteri. Ne vedremo un esempio concreto nella nostra applicazione.

Regole e templates

Un foglio di stile XSLT vede un documento XML come un albero fatto di nodi. Torniamo al file "news.xml" (listato 6). Nella figura 1 abbiamo evidenziato graficamente la sua struttura:

Figura 1 - Struttura ad albero del documento "news.xml"
Struttura ad albero del documento "news.xml"

<news> è l'elemento radice; <post> è un suo elemento figlio. <data>, <titolo> e <testo> sono sullo steso livello, ma tutti sono figli di <post>. L'elemento <link> è un nodo figlio di <testo>. Esso ha anche un attributo: href.

Un processore XSLT può trattare sette tipi di nodi presenti in un documento XML:

  • l'elemento radice
  • gli attributi e i loro valori
  • i commenti
  • gli elementi
  • i namespace
  • le istruzioni di elaborazione
  • il testo contenuto in un nodo

Ora, in un foglio XSLT è necessario specificare delle regole per trasformare i singoli nodi. Ogni regola viene definita in un template. Quando si crea un template è come se si dicesse: caro processore XSL, quando incontri il nodo x esegui questa trasformazione. Esempio. Supponiamo di voler trasformare "news.xml" in XHTML e che l'elemento <testo> con il suo contenuto debba essere racchiuso in un paragrafo. In XSL creeremo questo template:

<xsl:template match="post">
<p><xsl:value-of select="testo"/></p>
</xsl:template>

Il processore percorrerà tutto l'albero del documento. Quando incontrerà l'elemento <post>, verificherà che <testo> sia presente come elemento figlio, trasformerà il testo in un paragrafo.

Rintracciare i nodi

Per individuare i singoli nodi si ricorre alla sintassi Xpath. Per capire come funziona Xpath si può fare riferimento al modo in cui si individuano file e cartelle in un file-system. Se scrivo: C:documentiritratto.jpg significa che individuo:

  • un elemento radice (C:)
  • una cartella al suo interno
  • un file all'interno della cartella

Se volessi specificare il path per l'elemento <testo> del file news.xml scriverei così in Xpath:

<xsl:template match="news/post/testo">

La sintassi Xpath è notevolmente più complessa e se ben usata consente di individuare e trasformare ogni aspetto di documenti XML, anche molto complessi.

Elementi principali

Elenchiamo ora alcuni dei più importanti tag XSLT specificando per ciascuno la funzione. È solo un breve elenco, ma potrà darvi un'idea delle potenzialità di questo linguaggio. Per approfondimenti vi rimandiamo alla sezione "Riferimenti" della lezione precedente, mentre per un uso concreto di alcuni di essi, vi aspetta la prossima lezione.

xsl:apply-templates Applica le regole definite in un tamplate.
xsl:attribute Crea un attributo per un elemento.
xsl:comment Genera un commento nel documento finale
xsl:element Crea un nuovo elemento
xsl:for-each Stabilisce una struttura ciclica ripetendo un template tutte le volte che un dato nodo viene incontrato.
xsl:if Usato per impostare semplici strutture condizionali.
xsl:include Include un foglio XSL esterno
xsl:sort Ordina un insieme di nodi in bse ai parametri forniti.
xsl:stylesheet Elemento radice di un documento XSL
xsl:template Genera un template.
xsl:text Genera nuovo testo nel documento di output
xsl:value-of Restituisce il valore di un elemento o di un attributo.
xsl:when Usato per espressioni condizionali complesse

Per maggiori informazioni su XSLT rimandiamo alla Guida XSLT pubblicata su HTML.it.

Ultimi articoli HTML/XHTML

Inserire video nelle pagine Web con HTML5

Codec, compatibilità dei browser, tools, codice e best practices per...

LungoJS: semantica HTML5 per il mobile

Realizzare layout per dispositivi mobili tenendo conto della...

Web storage, i cookies secondo HTML5

Come rendere persistenti i dati con HTML5

HTML5, section o article? ...E il div?

Cerchiamo di fare chiarezza sull'uso di questi due nuovi elementi e...

HTML5, la validazione del codice

Gli strumenti per verificare l'aderenza agli standard di pagine e...

Altri articoli

Guide HTML/XHTML

Guida HTML5

Una guida per conoscere e applicare da subito le novità introdotte...

Guida XHTML

XHTML è il nuovo standard per il WEB ed è la transizione verso...

Altre guide

Newsletter @Daily HTML.it

Ogni mattina, dal lunedì al venerdì, le novità pubblicate su tutti i siti tecnici del network HTML.it: articoli, guide, notizie dal Web, blog e molto altro.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti