Link copiato negli appunti
Come abbiamo già visto in tutti gli esempi precedenti per muoverci tra i nodi di un albero possiamo utilizzare le seguenti espressioni:
Espressione | Risultato |
---|---|
artista/@nome |
Seleziona l'attributo nome dell'elemento <artista> . Se scriviamo solo @nome seleziona l'attributo nome del nodo in cui ci troviamo |
. |
Il punto, come abbiamo visto negli esempi precedenti, seleziona il valore del nodo in cui ci troviamo |
.. |
Il doppio punto ci fa risalire al genitore dell'elemento in cui ci troviamo |
* |
Carattere Jolly che selezione tutti e solo gli elementi figli del nodo in cui ci troviamo |
//album |
Seleziona tutti gli elementi <album> indipendentemente dalla loro profondità rispetto al nodo in cui si trovano |
Possiamo anche ottenere altre informazioni utilizzando
ulteriori funzioni che ci permettono ad esempio di ottenere la posizione del
nodo in cui ci troviamo o di leggere il valore del nome del nodo.
Funzione | Risultato |
---|---|
position() |
Fornisce il valore della posizione del nodo corrente partendo dal numero 1 |
name() |
Fornisce il nome del nodo (ovvero il nome del tag) |
count() |
Fornisce il numero dei nodi all'interno di un elemento specificato |
Esempio 8
Codice XSLT utilizzato (listacd_es8.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"> <strong> <xsl:value-of select="position()"/><!-- Seleziona il numero progressivo del nodo --> ) <xsl:value-of select="name()"/><!-- Seleziona il nome del nodo ovvero il nome del TAG --> : </strong> <xsl:value-of select="@nome"/> <br /> </xsl:template> </xsl:stylesheet>
Risultato in Output della trasformazione (esempio 8)
1) artista : Stanley Jordan
2) artista : Nick Drake
3) artista : Jeff Buckley
4) artista : Joe Satriani
Clicca qui per vedere il risultato della trasformazione sul browser.
Nota: potrebbero esserci dei problemi di visualizzazione con FireFox, per un problema del browser stesso