Come abbiamo detto in apertura di questa sezione della guida, XSLT può accedere a diversi tipi di elementi XML. Abbiamo già visto come accedere agli attributi, al nodo radice e agli elementi e ora vediamo come leggere i commenti.
I commenti nell'XML (quindi anche nell'XSLT) sono identici ai commenti HTML, ovvero il testo scritto tra la sequenza di caratteri <!--
e -->
:
<!-- Questo è un commento -->
Vediamo quindi di modificare l'XML dell'esempio 4 inserendo per ogni album di un artista un commento. Ovviamente il commento potrebbe anche non esserci. In questo caso l'XSLT non farà alcuna operazione, e nessun dato viene passato in output.
Esempio 5
(l'XML sotto mostrato è solo parziale)
<artista nome="Stanley Jordan">
<albums>
<!-- Cd acquistato a Roma nell'agosto del 2000 -->
...
</albums>
</artista>
<artista nome="Nick Drake">
<albums>
<!-- Cd comperato a Cagliari -->
...
</albums>
</artista>
Codice XSLT utilizzato (listacd_es5.xslt
)
<?xml version="1.0" encoding="UTF-8"?> <!-- Prologo XML -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<xsl:apply-templates select="//artista"/>
</html>
</xsl:template>
<xsl:template match="//artista/albums/album">
- <b><xsl:value-of select="titolo"/></b>
<!-- inserimento spazio bianco -->
<xsl:text> </xsl:text>
<!-- Leggo il commento -->
<xsl:value-of select="comment()"/>
<br/>
</xsl:template>
</xsl:stylesheet>
Risultato in Output della trasformazione (esempio 5)
<html>
- <b>Magic Touch</b> Cd acquistato a Roma nell'agosto del 2000 <br>
- <b>Stolen Moments</b> Cd avuto in regalo per il compleanno del 2001<br>
- <b>Pink Moon</b> Cd comperato a Cagliari <br>
- <b>Bryter Layter</b> <br>
- <b>Five leaves left</b> <br>
- <b>Grace</b> Cd comperato a Cagliari <br>
- <b>Mistery white boy</b> <br>
- <b>Surfing with the alien</b> <br>
- <b>Not of this earth</b> Cd comprato a settembre 1999 <br>
</html>
Il Risultato in Output della trasformazione è proprio quello che ci aspettavamo: una lista di tutti i nostri album con a fianco un eventuale commento.
Da notare l'inserimento dello spazio bianco ottenuto grazie all'utilizzo dell'elemento <xsl:text> </xsl:text>
. Come potete intuire questo elemento permette di passare in output il testo che racchiude al suo interno.
Abbiamo utilizzato
per indicare lo spazio bianco che corrisponderebbe alla pressione della barra spaziatrice della tastiera. Spiegheremo meglio in seguito l'utilizzo dei caratteri speciali, ovvero quei caratteri che devono essere codificati perchè altrimenti generano errori nella trasformazione in quanto vengono interpretati dal parser come elementi.
Vedremo inoltre altri metodi per inviare blocchi di testo in output senza che il parser processi il contenuto di questi blocchi.