Un altro aspetto molto importante nella programmazione XSLT è la possibilità di includere più documenti XSLT all'interno di un altro documento XSLT. Il processo di inclusione risulta molto utile ovviamente nella realizzazione di siti web in modo da poter frammentare il più possibile la struttura delle pagine e poter modificare un solo documento anzichè tutti i files!
L'inclusione avviene attraverso l'elemento <xsl:include href="file.xslt"/>
Per capire meglio l'utilizzo dei templates riprendiamo
l'esempio 20 e vediamo come possiamo riscrivere il codice XSLT utilizzando la
tecnica degli include per ottenere il medesimo documento HTML in output.
Consideriamo il nostro layout grafico e vediamo di capire
come possiamo frammentarlo. La nostra tabella HTML è formata da delle celle ciascuna delle quali contiene la foto della copertina del CD con sotto il nome dell'artista e il titolo dell'album.
Possiamo quindi mettere in un documento XSLT solo il codice relativo alla creazione della cella. Nel documento che invece richiama il documento da includere lasciamo il restante codice che ad esempio crea la tabella e dispone le celle su tre colonne. Così facendo possiamo definire un altro documento XSLT che magari dispone le celle in modo diverso ma che richiama e include sempre lo stesso documento XSLT.
Esempio 21.
Codice XSLT utilizzato dal documento che richiama un
include( listacd_es21.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>
<table cellpadding="1" cellspacing="2" width="390" align="center" bgcolor="#000000">
<tr>
<xsl:for-each select="listacd/artista/albums/album">
<xsl:call-template name="album"/> <!-- template definito nel file che
viene incluso include21.xslt-->
<xsl:if test="position() mod 3 = 0">
<!-- Blocco CDATA assieme a codice Javascript -->
<script>
<![CDATA[document.write("</tr><tr>");]]>
</script>
<!-- FINE Blocco CDATA assieme a codice Javascript -->
</xsl:if>
</xsl:for-each>
</tr>
</table>
</html>
</xsl:template>
<xsl:include href="include21.xslt"/>
</xsl:stylesheet>
Vediamo il codice XSLT utilizzato dal documento che viene
incluso ( include21.xslt ):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="album">
<xsl:variable name="percorso">img/</xsl:variable>
<td colspan="2" width="130" bgcolor="#fff3ff" align="center">
<img src="{$percorso}{img}"/><br/>
<b><xsl:value-of select="../../@nome"/></b><br/>
<xsl:value-of select="titolo"/>
</td>
</xsl:template>
</xsl:stylesheet>
Risultato in Output della trasformazione
(esempio 21).
Il codice HTML in output ovviamente è identico a quello ottenuto nell'esempio
20!
Clicca
qui per vedere il risultato della trasformazione sul browser.