Heim  >  Artikel  >  Web-Frontend  >  Wie führt man XPath-Contains()-Suchen ohne Berücksichtigung der Groß- und Kleinschreibung durch?

Wie führt man XPath-Contains()-Suchen ohne Berücksichtigung der Groß- und Kleinschreibung durch?

DDD
DDDOriginal
2024-10-22 20:33:39748Durchsuche

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

XPath Contains() ohne Berücksichtigung der Groß-/Kleinschreibung

Frage:

Bei Verwendung von XPath zur Prüfung B. mit dem Ausdruck /html/body//text()[contains(.,'test')], wird bei der Suche die Groß-/Kleinschreibung beachtet. Wie können wir die Suche in XPath für JavaScript so gestalten, dass die Groß-/Kleinschreibung nicht berücksichtigt wird?

Antwort:

Während es in XPath 1.0 keine einfache Möglichkeit gibt, Vergleiche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen, Es gibt Techniken, um ein ähnliches Ergebnis zu erzielen:

  1. Groß- und Kleinschreibung von Zeichen übersetzen: Verwenden Sie die Funktion Translate(), um den Textknoten und die Suchzeichenfolge in eine einzelne Groß-/Kleinschreibung umzuwandeln oder niedriger. Zum Beispiel:
/html/body//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test')]

Bei dieser Methode wird davon ausgegangen, dass das verwendete Alphabet im Voraus bekannt ist. Berücksichtigen Sie daher alle möglicherweise auftretenden Akzentzeichen.

  1. Dynamischer XPath Ausdruck: Erstellen Sie einen dynamischen XPath-Ausdruck mit einer Hostsprache wie JavaScript. Ersetzen Sie die Suchzeichenfolge durch ihre obere, untere und ursprüngliche Form in der Klausel enthält():
<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>

Dies ermöglicht eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung, unabhängig vom verwendeten Zeichensatz.

Beachten Sie, dass diese Methoden einfache Anführungszeichen in Suchzeichenfolgen möglicherweise nicht korrekt verarbeiten. Für Fälle mit Sonderzeichen können alternative Vorgehensweisen erforderlich sein.

Das obige ist der detaillierte Inhalt vonWie führt man XPath-Contains()-Suchen ohne Berücksichtigung der Groß- und Kleinschreibung durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn