Les prédicats
Introduction à la richesse des prédicats en XPath
Ce chapitre est basé sur la recommandation de XPath. Ce chapitre ne listera pas de prédicats, puisque la liste est disponible directement à l'adresse donnée. Nous nous contenterons de manipuler la syntaxe de ces derniers à travers des exemples.
Approfondissements
Fondamental : Type de données
Jusqu'à présent nous n'avions pas besoin d'introduire de type de données en parlant de XPath. Cela change quand on aborde les prédicats.
Il existe 4 types principaux :
number
boolean
string
node set
Les 3 premiers sont assez standard. Le dernier est le type du résultat d'une requête XPath. Il est aussi possible que certaines fonctions renvoient des node set.
Ces fonctions peuvent être par conséquent utilisées à la place d'un pas de localisation.
Fondamental : Opérateurs
Il est possible d'utiliser des opérateurs dans les prédicats. Ces opérateurs sont assez standards. Les voici :
+ - addition (nombres)
- - soustraction (nombres)
* - multiplication (nombres)
div - division (nombres). en effet, le "/" est déjà pris pour autre chose
mod - modulo (nombres)
= - égalité (tout type)
<= - inégalité (nombres)
>= - inégalité (nombres)
< - inégalité (nombres)
> - inégalité (nombres)
!= - différence (tout type)
and - et logique (booléen)
or - ou logique (booléen)
Un opérateur ensembliste sur les node set
Tout ces opérateurs ont une fonction associé. Ce sont des facilités d'écritures, comme le @, le .., ou le //. Utilisez les pour rendre vos expressions plus lisible, mais n'oubliez jamais ce que vous manipulez réellement
Syntaxe et usages des prédicats
Un prédicat s'écrit comme un fragment de code.
Le prédicat permet de filtrer les résultats du pas en cours.
Ainsi tout les nœuds pour lesquelles le prédicat évalue à vrai sont gardés, les autres sont jetés.
Il est possible d'utiliser une expression XPath complète (avec, pourquoi pas, quelques prédicats) à l'intérieur d'un prédicats.
Par défaut, XPath fait du transtypage automatique.
Ainsi si le prédicat ne s'évalue pas en booléen, il sera converti.
Les propriétés de conversion pour chaque type sont disponible dans la recommandation W3C.
exemples
Exemple :
Renvoi :
Exemple : utiliser des test de nœud comme prédicats
Exemple : Fonction sur les string
Renvoi :