Partager via


Filtres et modèles de filtre

Des contraintes et branchements peuvent être appliqués à n'importe quelle collection par l'ajout d'une clause de filtre, [modèle], à la collection. Le filtre est analogue à la clause SQL WHERE. Le filtre contient un modèle appelé le modèle de filtre. Le modèle de filtre est évalué en une valeur booléenne et testé pour chaque élément de la collection. Tous les éléments de la collection qui ne correspondent pas au modèle de filtre sont omis de la collection résultat.

Pour une question de commodité, si une collection est placée dans le filtre, un VRAI booléen est généré si la collection contient des membres et un FAUX est généré si elle est vide. Une expression telle que author/degree implique une fonction de conversion de collection vers booléen qui a pour valeur TRUE s'il existe un élément <author> avec un élément enfant appelé <degree>.

Notez qu'un nombre quelconque de filtres peuvent apparaître à un niveau donné d'une expression. Les filtres vides ne sont pas autorisés.

Les filtres sont toujours évalués par rapport à un contexte. Autrement dit, l'expression book[author] signifie que, pour tout élément <book> trouvé, il convient de tester s'il possède un élément enfant <author>. De même, book[author = 'Bob'] signifie que, pour tout élément <book> trouvé, il convient de tester s'il possède un élément enfant <author> dont la valeur est Bob. On peut aussi bien examiner la valeur du contexte en utilisant un point (.) . Par exemple, book[. = 'Trenton'] signifie que, pour chaque livre trouvé dans le contexte actuel, il faut tester si sa valeur est Trenton.

Exemples

Expression Référence

book[excerpt]

Tous les éléments <book> qui contiennent au moins un élément enfant <excerpt>.

book[excerpt]/title

Tous les éléments <title> à l'intérieur d'éléments <book> qui contiennent au moins un élément <excerpt>.

book[excerpt]/author[degree]

Tous les éléments <author> qui contiennent au moins un élément <degree> et sont à l'intérieur d'éléments <book> contenant au moins un élément <excerpt>.

book[author/degree]

Tous les éléments <book> qui contiennent au moins un élément <author> avec au moins un élément enfant <degree>.

book[excerpt][title]

Tous les éléments <book> qui contiennent au moins un élément <excerpt> et au moins un élément <title>.

Voir aussi

Référence

Exemples de XPath

Concepts

Exemple de fichier XML pour la syntaxe XPath (inventory.xml)