Calculs d'attributs dérivés complexes
Bien que cela ne soit pas montré dans ce tutoriel, les calculs d'attributs dérivés doivent souvent en faire davantage que simplement concaténer des chaînes statiques avec des valeurs extraites du modèle d'entrée JET. De telles manipulations peuvent souvent être effectuées en appelant des fonctions XPath dans une expression XPath.
Supposons que vous concevez un message électronique généré pour informer les utilisateurs qu'un compte a été créé pour eux en utilisant leur adresse de messagerie comme ID ainsi qu'un mot de passe généré. Le mot de passe généré est la première lettre du prénom suivie du nom de famille, la totalité du mot de passe étant en minuscules. Le message de courrier électronique généré doit contenir un rappel de ce mot de passe aux utilisateurs.
Le moteur XPath de JET offre plusieurs fonctions pour faciliter la réalisation de cette tâche. La fonction substring renvoie une partie d'une chaîne, la fonction concat concatène deux chaînes ou plus et la fonction lowercase gère la conversion de la casse. Le fragment de code suivant présente le calcul de l'attribut dérivé pour le mot de passe à insérer dans l'élément "mailing" :
{lower-case(concat(substring($mailing/@prénom,1,1), $mailing/@nom_famille))}JET inclut la plupart des fonctions XPath 1.0 telles qu'elles sont définies dans la bibliothèque des fonctions principales des spécifications XPath 1.0. Seules deux fonctions ne sont pas implémentées : lang et id. JET fournit également plusieurs fonctions XPath additionnelles.
Filtrage d'expressions de chemins XPath
Dans certains cas, il est recommandé d'utiliser des prédicats XPath pour traiter un sous-ensemble d'éléments sur la base d'un critère particulier. Un prédicat est une expression qui est appliquée à une étape dans une expression XPath pour filtrer les éléments correspondant à cette étape. Un prédicat peut être une expression booléenne ou une expression entière, auquel cas il est traité en tant qu'index démarrant à 1 dans l'ensemble d'éléments. Les prédicats sont entourés de crochets ([]).
Voici des exemples plus concrets de ce concept. La balise <c:iterate> suivante traite seulement les éléments "mailing" qui contiennent un élément "interest" :
<c:iterate select="$campaign/mailing[interest]" var="mailing">XPath convertit le résultat de l'expression du prédicat "interest" en une valeur booléenne en testant la cardinalité de l'ensemble de noeuds correspondants. L'expression équivaut à l'exemple suivant :
<c:iterate select="$campaign/mailing[count(interest) > 0]" var="mailing">La balise <c:iterate> suivante traite les éléments "mailing" qui ont Product1 comme premier produit par lequel un utilisateur est intéressé.
<c:iterate select="$campaign/mailing[interest[1]/@code = 'Product1']" var="mailing">