XPaths case-insensitive contains()
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 Variationen einer Zeichenfolge, bei denen die Groß-/Kleinschreibung beachtet wird, als auch bei Variationen ohne Berücksichtigung der Groß-/Kleinschreibung 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 Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung. Es erfordert jedoch Kenntnisse über den erwarteten Zeichensatz.
2. JavaScript-unterstützte dynamische XPath-Generierung
Wenn eine Manipulation des XPath-Ausdrucks möglich ist, können Sie JavaScript verwenden, um die Suchzeichenfolge dynamisch durch ihre Groß- und Kleinbuchstabenvarianten zu ersetzen:
<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>
Dies Die Methode verarbeitet Suchzeichenfolgen mit beliebigen Zeichen, einschließlich einfacher Anführungszeichen.
Achtung: Diese Techniken funktionieren möglicherweise nicht optimal, wenn komplexe/große Zeichenfolgenoperationen beteiligt sind. Wenn möglich, ziehen Sie 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.
Das obige ist der detaillierte Inhalt vonWie erreicht man in XPath 1.0 die Funktion „Contains()', bei der die Groß- und Kleinschreibung nicht beachtet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!