XPath intensif

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

FondamentalType 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.

FondamentalOpé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

CTRL+C pour copier, CTRL+V pour coller
1
//titre[@lang="fr"]
//titre[@lang="fr"]

Renvoi :

CTRL+C pour copier, CTRL+V pour coller
1
<titre lang="fr">Harry Potter</titre>
2
<titre lang="fr">Apprendre XML</titre>
<titre lang="fr">Harry Potter</titre>
<titre lang="fr">Apprendre XML</titre>

Exempleutiliser des test de nœud comme prédicats

CTRL+C pour copier, CTRL+V pour coller
1
//titre[following-sibling::comment()]
//titre[following-sibling::comment()]

Renvoi :

CTRL+C pour copier, CTRL+V pour coller
1
<titre lang="fr">Apprendre XML</titre>
<titre lang="fr">Apprendre XML</titre>

ExempleFonction sur les string

CTRL+C pour copier, CTRL+V pour coller
1
//titre[substring-before(text(), ' ') = 'Harry']
//titre[substring-before(text(), ' ') = 'Harry']

Renvoi :

CTRL+C pour copier, CTRL+V pour coller
1
<titre lang="fr">Harry Potter</titre>
<titre lang="fr">Harry Potter</titre>

ExempleXPath pour calculer

CTRL+C pour copier, CTRL+V pour coller
1
sum(//prix)
sum(//prix)

Renvoi :

CTRL+C pour copier, CTRL+V pour coller
1
69.94
69.94

Exemplenode-set ? inutile

CTRL+C pour copier, CTRL+V pour coller
1
6*7
6*7

Renvoi :

CTRL+C pour copier, CTRL+V pour coller
1
42
42
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Version 2 Alexandre THOUVENIN, 2016. Version 1 de Jean-Baptiste Martin, 2015 (Contributions : Stéphane Crozat, les étudiants de NF29) Paternité - Partage des Conditions Initiales à l'IdentiqueRéalisé avec Scenari (nouvelle fenêtre)