Home
Conditional XPath 1.0
- Détails
- Catégorie : Dev
- Publié le Mardi, 09 Mars 2010 15:38
- Écrit par David Naramski
- Affichages : 610
LiveCycle ES est une formidable machine à manipuler les données XML. L'intérêt d'utiliser un standard comme XPath pour accéder à certaines valeurs est évident.
Mais la sémantique très restreinte de XPath ne permet pas a priori d'exécuter des instructions conditionnelles.
Dans mon cas, je voulais simplement afficher quelque chose du genre
Bonjour <titre>,où le <titre> serait remplacé par Monsieur ou Madame en fonction d'une condition. Si en Java on aurait simplement écrit
en XPath, une telle notation conditionnelle n'existe pas.C'était sans compter sur l'astuce de certains qui on proposé la solution suivante.
Tout repose sur le fait qu'il existe une fonction number(<obj>) qui converti un <obj> en un nombre. Plus particulièrement, la valeur d'un booléen est 1 pour true et 0 pour false.
L'idée est d'alors utiliser substring() pour prendre tout ou rien de la chaîne de caractère en fonction de la condition. C'est-à-dire :
donne "Monsieur" si la condition est vrai et la chaîne vide sinon.La solution à mon problème devenait alors :
Pas très intuitif, mais ça a le mérite d'exister.
