Funzioni su un insieme di nodi con XSLT
Per fare un breve ripasso, applichiamo il codice XSLT ad un altro documento XML che useremo nel nostro esempio. Vediamo prima il documento senza nessun foglio di stile applicato. Supponiamo che si vogliano prendere in considerazione gli elementi che occupano il secondo posto nell'albero di documento. Il codice XSLT che andremo a scrivere sarà:
<xsl:for-each select="persone/persona/telefono[2]">
<strong> <xsl:value-of select="../@nome" /> </strong><br />
<xsl:value-of select="@tipo" />: <xsl:value-of select="." /><br />
<hr />
</xsl:for-each>
</xsl:template>
Cominciamo a vedere il risultato ottenuto attraverso la trasformazione.
Abbiamo ottenuto gli elementi telefono che sono secondi nei rispettivi nodi. La riga di codice:
ci garantisce nella maniera più assoluta che tali nodi vengano mandati in output, attraverso l'espressione di predicato [2].
XSLT suppone che si voglia confrontare il valore con la funzione position(). Se il rigo mostrato più su lo avessimo scritto nel seguente modo:
avremmo ottenuto lo stesso ed identico risultato. Questa funzione restituisce la posizione numerica del nodo di contesto all'interno dell'insieme dei nodi correnti. Per il primo nodo, l'espressione risultante è 1=2, che genera false. Per il secondo nodo, l'espressione diventa 2=2, che è true; di conseguenza il nodo viene elaborato.
XSLT contiene un'altra funzione che influisce sul contesto corrente: last(). Come si evince dal suo stesso nome, viene restituita la posizione numerica dell'ultimo nodo nel contesto dei nodi correnti. Se al posto del predicato di posizione [2] volessimo in output tutti i valori degli ultimi nodi di un documento XML, non dobbiamo fare altro che scrivere nel foglio di stile XSLT quanto segue:
che applicato al file XML iniziale, ci restituisce gli ultimi valori dei nodi presenti nell'albero di documento.
| < Prec. | Succ. > |
|---|

