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

<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:
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.
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:
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.
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.
Inserire video nelle pagine Web con HTML5Codec, compatibilità dei browser, tools, codice e best practices per... |
LungoJS: semantica HTML5 per il mobileRealizzare layout per dispositivi mobili tenendo conto della... |
Web storage, i cookies secondo HTML5Come 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 codiceGli strumenti per verificare l'aderenza agli standard di pagine e... |
Guida HTML5Una guida per conoscere e applicare da subito le novità introdotte... |
Guida XHTMLXHTML è il nuovo standard per il WEB ed è la transizione verso... |
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
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |