Maison > interface Web > js tutoriel > le corps du texte

Comment obtenir la fonctionnalité contain() insensible à la casse dans XPath 1.0 ?

Barbara Streisand
Libérer: 2024-10-23 01:17:30
original
607 Les gens l'ont consulté

How to Achieve Case-Insensitive contains() Functionality in XPath 1.0?

Le XPath insensible à la casse contient()

Dans XSLT ou d'autres applications traversant le DOM, l'exécution de requêtes XPath avec des comparaisons de chaînes sensibles à la casse peut être limitant. Cependant, il est possible d'obtenir une fonctionnalité contain() insensible à la casse dans XPath 1.0.

1. Méthode basée sur la traduction (XPath 1.0)

Pour faire correspondre les variations sensibles à la casse et insensibles à la casse d'une chaîne, utilisez la fonction traduire() :

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]
Copier après la connexion

Cette méthode traduit efficacement toutes les lettres majuscules en minuscules, permettant des comparaisons insensibles à la casse. Cependant, cela nécessite la connaissance du jeu de caractères attendu.

2. Génération XPath dynamique assistée par JavaScript

Si la manipulation de l'expression XPath est possible, vous pouvez utiliser JavaScript pour remplacer dynamiquement la chaîne de recherche par ses variantes majuscules et minuscules :

<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");</code>
Copier après la connexion

Ceci La méthode gère les chaînes de recherche avec des caractères arbitraires, y compris les guillemets simples.

Attention : Ces techniques peuvent ne pas fonctionner de manière optimale si des opérations de chaînes complexes/volumineuses sont impliquées. Si possible, envisagez d'autres solutions telles que le stockage de chaînes avec des jeux de caractères connus ou l'adoption de XPath 2.0, qui prend en charge nativement les comparaisons de chaînes insensibles à la casse.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!