Unire due espressioni con XSLT
In XSLT si uniscono due espressioni con il carattere | (pipe sulla tastiera), conosciuto anche con il nome di operatore unione. Questo operatore non va confuso con OR (utilizzato in altri linguaggi). Cominciamo a vedere il file sorgente XML ed il foglio di stile XSLT.
Il modello alla riga di codice:
opera su entrambi gli elementi nome e cognome. Le espressioni che corrispondono a questi elementi sono riunite con l´operatore unione. Vediamo il risultato di output nel file persone.xml. Il modello trova corrispondenza con i due elementi e fa la stessa operazione con ogni elemento.
Modelli con nome
Oltre che trovare una corrispondenza, i modelli possono essere chiamati direttamente. Per chiamare un modello in modo esplicito, esso deve avere un nome univoco nel foglio di stile. Questa è la ragione per cui questi modelli vengono chiamati con nome. Un modello con nome è un modello che può essere chiamato da un altro modello, invece di essere messo in corrispondenza con un nodo. Il nome al modello lo si assegna aggiungendo un attributo name con un identificatore univoco come nome. Esiste una differenza tra questi ed i modelli messi in corrispondenza? Si. Quando si chiama un modello con nome, il nodo di contesto rimane lo stesso. Con un modello che trova corrispondenza, il nodo contesto cambia nel momento in cui si usa xsl:apply-templates.
I modelli con nome usano l´elemento <xsl:call-template>. Il valore di name deve necessariamente esistere nel foglio di stile, altrimenti si riceve un messaggio di errore. Modelli in corrispondenza e modelli con nome non interferiscono tra di essi. Vediamo il file sorgente XML e quello di stile per il nostro esempio.
Il codice XSLT contiene un modello che corrisponde all´elemento "auto" al seguente rigo:
e contiene un modello chiamato "auto"
Il modello con nome viene chiamato dal modello che ha trovato la corrispondenza con "auto". In quel momento il controllo passa al modello con nome senza che sia cambiato il nodo di contesto. A questo punto gli elementi <xsl:value-of> possono utilizzare l´indirizzamento relativo e puntare gli attributi dell´elemento "auto" senza dover puntare alla posizione di quegli attributi. La trasformazione del file di output elaborato mostra quello che abbiamo ottenuto.
| < Prec. | Succ. > |
|---|

