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

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.

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

//titre[@lang="fr"]

Renvoi :

<titre lang="fr">Harry Potter</titre>
<titre lang="fr">Apprendre XML</titre>

utiliser des test de nœud comme prédicats

//titre[following-sibling::comment()]

Renvoi :

<titre lang="fr">Apprendre XML</titre>

Fonction sur les string

//titre[substring-before(text(), ' ') = 'Harry']

Renvoi :

<titre lang="fr">Harry Potter</titre>

XPath pour calculer

sum(//prix)

Renvoi :

69.94

node-set ? inutile

6*7

Renvoi :

42
AccueilMontée en puissance > Prédicats< PrécédentSuivant >