Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Trasformazioni XML: come lavora XSL

Le regole alla base e la struttura di un foglio XSLT
Le regole alla base e la struttura di un foglio XSLT
Link copiato negli appunti

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> è 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.

Ti consigliamo anche