Comparaisons
Pour comparer deux objets dans XPath, utilisez le signe =
pour tester l'égalité ou !=
pour l'inégalité.
Pour une opération de comparaison, vous devez fournir exactement deux opérandes. Vous pouvez ensuite effectuer les comparaisons en évaluant chaque opérande et en les convertissant au besoin pour qu'ils soient du même type. Pour ce faire, respectez la procédure décrite ci-dessous dans la section « Ordre de priorité pour les comparaisons ».
Tous les éléments et les attributs sont des chaînes, mais sont automatiquement paramétrés comme des valeurs entières pour les comparaisons numériques. Les valeurs numériques littérales sont paramétrées sur des types longs ou doubles pendant les opérations de comparaison comme indiqué dans le tableau suivant.
Pour plus d'informations sur <
et d'autres opérateurs de comparaison binaires, consultez la section « Opérateurs de comparaison binaires » ci-dessous.
Type littéral | Comparaison | Exemple |
---|---|---|
Chaîne |
|
|
Entier |
|
|
Réel |
|
|
Des guillemets simples ou doubles peuvent servir de délimiteurs de chaîne dans les expressions. Ils simplifient la création et le transfert de modèles depuis les langages de script.
Pour plus d'informations sur l'exécution de comparaisons à l'aide de XPath, voir la section 3.4 sur les fonctions booléennes du document concernant le langage XML Path (XPath), version 1.0 (recommandation du W3C du 16 novembre 1999) à l'adresse www.w3.org/TR/xpath.
Exemples
Expression | Référence |
---|---|
|
Tous les éléments |
|
Tous les éléments |
|
Tous les éléments |
|
Tous les éléments |
|
Tous les éléments |
Ordre de priorité pour les comparaisons
Les comparaisons concernant les types de données respectent l'ordre des priorités.
Si au moins un opérande est booléen, chaque opérande est d'abord converti en booléen.
Sinon, si au moins un opérande est un nombre, chaque opérande est d'abord converti en nombre.
Sinon, si au moins un opérande est une date, chaque opérande est d'abord converti en date.
Sinon, les deux opérandes sont d'abord convertis en chaînes.
Opérateurs de comparaison binaires
Une série d'opérateurs de comparaison binaires compare des nombres et retourne des résultats booléens. Les opérateurs <
, <=
, >
et >=
correspondent respectivement à inférieur à, inférieur ou égal à, supérieur à et supérieur ou égal à. Des guillemets simples ou doubles peuvent servir de délimiteurs de chaîne dans les expressions. Ils simplifient la création et le transfert de modèles dans les langages de script.
Notez que ces opérateurs de comparaison fonctionnent uniquement avec les nombres. Vous pouvez comparer des chaînes pour en vérifier l'égalité, mais si vous voulez les comparer pour identifier celle qui arrive en premier dans l'ordre de tri, vous devez utiliser les Fonctions d'extension Microsoft XPath.
Exemples
Expression | Référence |
---|---|
|
Tous les éléments |
|
Tous les éléments |
|
Les trois premiers éléments (1, 2, 3) |
Exemple
Fichier XML (test.xml)
<?xml version="1.0"?>
<test>
<x a="1">
<x a="2" b="B">
<x>
<y>y31</y>
<y>y32</y>
</x>
</x>
</x>
<x a="2">
<y>y2</y>
</x>
<x a="3">
<y>y3</y>
</x>
</test>
Fichier XSLT (test.xsl)
La feuille de style XSLT suivante sélectionne tous les éléments <x>
qui sont les premiers de la série dans l'ordre du document.
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- Suppress text nodes not covered in subsequent template rule. -->
<xsl:template match="text()"/>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="*|@*"/>
<xsl:if test="text()">
<xsl:value-of select="."/>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="/test">
<xsl:apply-templates select="//x[position() = 1 ] "/>
</xsl:template>
</xsl:stylesheet>
Données en sortie formatées
La transformation appliquée au fichier XML ci-dessus donne le résultat suivant :
<x a="1">
<x a="2" b="B">
<x>
<y>y31</y>
<y>y32</y>
</x>
</x>
</x>
<x a="2" b="B">
<x>
<y>y31</y>
<y>y32</y>
</x>
</x>
<x>
<y>y31</y>
<y>y32</y>
</x>
Voir aussi
Référence
Concepts
Exemple de fichier XML pour la syntaxe XPath (inventory.xml)