XPaths Groß-/Kleinschreibung enthält()
In XSLT oder anderen DOM-durchquerenden Anwendungen kann die Durchführung von XPath-Abfragen mit Groß- und Kleinschreibung von Zeichenfolgenvergleichen durchgeführt werden einschränkend sein. Es ist jedoch möglich, in XPath 1.0 die Funktion „Contains()“ ohne Berücksichtigung der Groß-/Kleinschreibung zu erreichen.
1. Übersetzungsbasierte Methode (XPath 1.0)
Um sowohl case-sensitive als auch case-insensitive Variationen einer Zeichenfolge abzugleichen, verwenden Sie die Funktion Translate():
/html/body//text()[ contains( translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test' ) ]
Diese Methode übersetzt effektiv alle Großbuchstaben in Kleinbuchstaben und ermöglicht so Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung. Es erfordert jedoch Kenntnisse über den erwarteten Zeichensatz.
2. JavaScript-unterstützte dynamische XPath-Generierung
Wenn die Manipulation des XPath-Ausdrucks möglich ist, können Sie JavaScript verwenden, um die Suchzeichenfolge dynamisch durch ihre Groß- und Kleinbuchstabenvarianten zu ersetzen:
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");
Diese Methode behandelt Suchzeichenfolgen mit beliebigen Zeichen, einschließlich einfacher Anführungszeichen.
Achtung: Diese Techniken funktionieren möglicherweise nicht optimal, wenn komplexe/große Zeichenfolgenoperationen beteiligt sind. Ziehen Sie nach Möglichkeit andere Lösungen in Betracht, z. B. das Speichern von Zeichenfolgen mit bekannten Zeichensätzen oder die Einführung von XPath 2.0, das nativ Zeichenfolgenvergleiche ohne Berücksichtigung der Groß- und Kleinschreibung unterstützt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3