< Indietro | Avanti >

Lezione 3.1: Utilizzo di funzioni XPath e di espressioni complesse

Questa lezione descrive come utilizzare le funzioni XPath ed altre espressioni XPath complesse nelle trasformazioni JET.

Calcoli di attributi derivati complessi

Anche se non viene descritto in questa esercitazione, i calcoli di attributi derivati spesso fanno più che semplicemente concatenare le stringhe statiche con valori estratti dal modello di input JET. Tali manipolazioni spesso possono essere eseguite richiamando le funzioni XPath in un'espressione XPath.

Si supponga di progettare un messaggio e-mail generato per informare gli utenti che è stato creato per loro un account utilizzando il loro indirizzo e-mail come ID ed una password generata. La password generata è la prima lettera del nome specificato più il cognome, con l'intera password a lettere minuscole. Il messaggio e-mail generato deve contenere questa password come memorandum per l'utente.

Il motore JET XPath fornisce diverse funzioni utili per eseguire questa attività. La funzione substring restituisce una parte di stringa, la funzione concat concatena due o più stringe e la funzione lowercase gestisce la conversione delle lettere maiuscole/minuscole. Il seguente frammento di codice mostra il calcolo per l'attributo derivato ipotetico per la password nell'elemento mailing:

{lower-case(concat(substring($mailing/@firstName,1,1), $mailing/@lastName))}

JET include la maggior parte delle funzioni XPath 1.0 come definito nella Core Function Library delle specifiche XPath 1.0. Solo due funzioni non sono implementate: lang e id. JET inoltre fornisce diverse funzioni XPath aggiuntive.

Filtraggio di espressioni XPath di percorso

In alcuni casi, utilizzare i predicati XPath per elaborare un sottoinsieme di elementi basato su particolari criteri. Un predicato è un'espressione che viene applicata ad una fase di un'espressione XPath per filtrare gli elementi che corrispondono a quella fase. Un predicato può essere un'espressione booleana o un'espressione di numeri interi, nel qual caso viene considerata come un indice su base uno per l'insieme di elementi. I predicati sono racchiusi tra parentesi quadre ([]).

I seguenti esempi chiarificano questo concetto. Il seguente tag <c:iterate> elabora solo gli elementi mailing che contengono un elemento di interesse:

<c:iterate select="$campaign/mailing[interest]" var="mailing">

XPath converte il risultato dell'interesse dell'espressione predicato in un valore booleano eseguendo il test della cardinalità dell'insieme di nodi corrispondenti. L'espressione è equivalente al seguente esempio:

<c:iterate select="$campaign/mailing[count(interest) > 0]" var="mailing">

Il seguente tag <c:iterate> elabora gli elementi mailing che specificano Product1 come primo prodotto al quale un utente è interessato:

<c:iterate select="$campaign/mailing[interest[1]/@code = 'Product1']" var="mailing">

Punto di controllo della lezione

Questa lezione tratta dei casi in cui le funzioni XPath e le espressioni XPath complesse possono essere utili per la creazione di trasformazioni JET.

Feedback