Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

For-each di XSL

Già in precedenza abbiamo visto che oltre alla programmazione cosiddetta template matching, ovvero che fa uso dei Templates o modelli, esistono anche altri due modi di programmare(anch'essi già visti) con l'XSLT: l'iterazione (for each ...) e l'altro attraverso la ricorsione.

La ricorsione viene utilizzata solo in particolari situazioni nelle quali un determinato modello richiama se stesso per effettuare delle operazioni un certo numero di volte.

(L'articolo continua più sotto...)

L'iterazione invece è un metodo assai più importante e molto utilizzato, anzi forse il più utilizzato.

Possiamo dire che tutti gli esempi che abbiamo fatto potevano essere proposti utilizzando l'iterazione ottenendo in output lo stesso codice HTML. La differenza tra l'iterazione e l'utilizzo dei modelli sta proprio nel modo con la quale il processore esegue le istruzioni che permettono di prendere i dati dall'albero XML.

Per chi ha già esperienze nel campo della programmazione l'iterazione viene subito associata all'utilizzo dei cicli for. In effetti anche nell'XSLT si usa un elemento che altro non è che un ciclo che permette di applicare determinate regole a gruppi di nodi.

L'elemento in questione è <xsl:for-each select="">. L'attributo select permette di specificare gli elementi che devono essere processati.

Scrivere quindi:

<xsl:for-each select="albums/album"> 
    <!-- Regole da applicare -->
</xsl:for-each>
vuol dire sostanzialmente "per ogni elemento <album> figlio dell'elemento <albums> applica queste regole".

Un esempio pratico, come al solito, ci chiarirà meglio le idee:

<?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:for-each select="//artista">
            <b>Artista : </b>
            <xsl:value-of select="@nome"/>
            <br/>
            <xsl:for-each select="albums/album">
            <xsl:text>&#160;&#160;&#160;</xsl:text>
            <b>- Album: </b>
            <xsl:value-of select="titolo"/>
            -
            <xsl:value-of select="anno"/>
            -
            <xsl:value-of select="etichetta"/>
            <br/>
            </xsl:for-each>
            <br/>
        </xsl:for-each>
        </html>
</xsl:template>
</xsl:stylesheet>
Risultato in Output della trasformazione:
<html>
<b>Artista : </b>Pinco Pallo<br>
<b>- Album: </b>Magic Touch - 1985 -  Blue Note<br>
<b>- Album: </b>Stolen Moments - 1991- Blue Note<br>
<br>
<b>Artista : </b>Palla Rotante<br>
<b>- Album: </b>Pink Moon - 1972 - Island<br>
<b>- Album: </b>Bryter Layter - 1970 - Island<br>
<b>- Album: </b>Five leaves left - 1970 - Island<br>
<br>
<b>Artista : </b>Per caso<br>
<b>- Album: </b>Grace - 1994 - Columbia<br>
<b>- Album: </b>Mistery white boy - 2000 - Columbia<br><br>
<b>Artista : </b>Uno di noi <br>
<b>- Album: </b>Surfing with the alien - 1987 - Epic<br>
<b>- Album: </b>Not of this earth - 1988 - Relativity<br>
<br>
</html>
Come avrete potuto notare è molto semplice utilizzare l'iterazione con xsl:for-each. Nel nostro esempio abbiamo utilizzato due cicli: il primo per entrare dentro ogni nodo <artista> e il secondo, che è annidato dentro il primo, per entrare dentro ogni elemento <album> che è figlio dell'elemento <albums>.

Corsi
Corso CSSCorso CSS
Web Design ed Accessibilità secondo il W3C con CSS ed XHTML. A partire da 29 €.
Corso XMLCorso XML
Creazione di strutture XML, XSL ed altri linguaggi eXtensible. A partire da 39 €.
Sommario
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122