7. Quelques fonctions XPath

7.1. Vrai et faux

Avant de commencer avec les fonctions, les VRAI et FAUX booléens qui sont habituellement des valeurs dans d'autres langages sont ici des fonctions: true() et false().

7.2. position()

La première fonction que nous allons voir est la fonction position() qui renvoie un nombre, la position du noeud actuel dans la liste des noeuds courants. Nous avons vu cette fonction avec les nouvelles, car on ne voulait en afficher qu'un nombre limité. Pour cela, le prédicat était [$nb_news >= position()].

7.3. lang()

Nous avons vu aussi dans les autres articles la fonction lang(), qui renvoie une valeur booléenne vraie si l'argument fourni à la fonction lang() correspond à la langue du noeud courant. Cette langue s'exprime dans le noeud courant avec l'attribut xml:lang.

7.4. not()

not() comme son nom l'indique, et comme dans de nombreux langages, inverse la valeur de l'argument qui lui est fourni en paramètre. Il nous a servi aussi dans les autres articles.

7.5. Les fonctions de chaînes de caractères

Nous pouvons manier les chaînes de caractères avec XPath, avec quelques fonctions:

  • concat() concatène les chaînes de caractères fournies en argument et retourne le résultat. Le nombre d'arguments est quelconque;

  • contains() renvoie VRAI si le second argument est une sous-chaîne de la chaîne fournie en premier argument;

  • normalize-space() remplace tous les groupes de caractères blancs par une espace unique, et supprime les caractères blancs en début et fin de la chaîne fournie en argument;

  • start-with() renvoie VRAI si la chaîne de caractères fournie en second argument correspond au début de la chaîne fournie en premier argument;

  • string() convertit l'argument qui lui est fourni en une chaîne de caractères qu'elle renvoie;

  • substring() renvoie la sous-chaîne de la chaîne de caractères fournie en premier argument, qui démarre au caractère dont l'index est fourni en second argument, et de longueur le troisième argument qui est par ailleurs facultatif

  • substring-after() recherche la chaîne de caractères fournie en second argument dans celle fournie en premier argument. Si elle est trouvée, la fonction renvoie tout ce qui suit. Sinon, elle renvoie une chaîne vide;

  • substring-before() recherche la chaîne de caractères fournie en second argument dans celle fournie en premier argument. Si elle est trouvee, la fonction renvoie tout ce qui précède. Sinon, elle renvoie une chaîne vide;

  • string-length ne renvoie pas une chaîne de caratères, mais la longueur de celle fournie en argument;

  • translate() remplace dans la chaîne fournie en premier argument tous les caractères se trouvant dans la chaîne fournie en second argument, par le caractères situé en même position dans la chaîne fournie en troisième argument. Un exemple sera plus expressif: translate("Je suis un warlordz","aelo","4310") renvoie "J3 suis un w4r10rdz".

7.6. Les fonctions sur les nombres

Les nombres, entieres ou réèls, ont aussi droit à leurs fonctions:

  • ceiling() retourne le plus petit entier supérieur au nombre fourni en argument;

  • floor() retourne le plus grand entier inférieur ou égal au nombre fourni en argument;

  • round() retourne l'entier le plus proche du nombre fourni en argument;

  • number() convertit son argument en nombre, ou en NaN si cela n'est pas un nombre;

  • sum() convertit tous les noeuds fournis en arguments en nombre de la même manière que number(), puis ajoute ces nombres, et renvoie le résultat;

7.7. Les fonctions sur les noeuds

  • count() renvoie le nombre de noeuds dans le jeu de noeuds fourni en argument;

  • id() renvoie un jeu de noeuds correspondant aux ID spécifiés en argument;

7.8. D'autres fonctions

La liste de fonctions ci-dessus n'est pas exhaustive, et surtout chaque processeur XSLT peut implémenter des fonctions qui lui sont propres. Avec xsltproc, xsltproc --dumpextensions vous affichera les extensions supportées, dont par exemple tokenize() pour les chaînes de caractères, ou sin() et cos() pour les nombres.

création est mise à disposition sous un contrat Creative Commons