Maison  >  Article  >  interface Web  >  Comment effectuer des recherches XPath Contains() insensibles à la casse ?

Comment effectuer des recherches XPath Contains() insensibles à la casse ?

DDD
DDDoriginal
2024-10-22 20:33:39744parcourir

How to Perform Case-Insensitive XPath Contains() Searches?

Xpath insensible à la casse contient()

Question :

Lors de l'utilisation de XPath pour vérifier l'existence d'une chaîne dans un nœud de texte, comme avec l'expression /html/body//text()[contains(.,'test')], la recherche est sensible à la casse. Comment pouvons-nous rendre la recherche insensible à la casse dans XPath pour JavaScript ?

Réponse :

Bien qu'il n'existe aucun moyen simple d'effectuer des comparaisons insensibles à la casse dans XPath 1.0, il existe des techniques pour obtenir un résultat similaire :

  1. Traduire la casse des caractères : Utilisez la fonction traduire() pour convertir le nœud de texte et la chaîne de recherche en une seule casse, soit en majuscule ou inférieur. Par exemple :
/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test')]

Cette méthode suppose que l'alphabet utilisé est connu à l'avance, incluez donc tous les caractères accentués qui pourraient être rencontrés.

  1. XPath dynamique Expression : Créez une expression XPath dynamique à l'aide d'un langage hôte tel que JavaScript. Remplacez la chaîne de recherche par ses formes supérieure, inférieure et originale dans la clause contain() :
<code class="javascript">function xpathPrepare(xpath, searchString) {
  return xpath.replace("$u", searchString.toUpperCase())
              .replace("$l", searchString.toLowerCase())
              .replace("$s", searchString.toLowerCase());
}

xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");
// -> "//text()[contains(translate(., 'TEST', 'test'), 'test')]"</code>

Cela permet des recherches insensibles à la casse, quel que soit le jeu de caractères utilisé.

Notez que ces méthodes peuvent ne pas gérer correctement les guillemets simples dans les chaînes de recherche. Pour les cas comportant des caractères spéciaux, des approches alternatives peuvent être nécessaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn