Analyse von Zeichenketten
Der Bereich der Analyse von Zeichenketten wird durch die in folgender Tabelle angegebenen Funktionen abgedeckt. Die Semantik ist dabei im Wesentlichen intuitiv und bedarf keiner weiteren Erklärung.
Signatur | Beschreibung |
---|---|
fn:contains( $arg1 as xs:string?, $arg2 as xs:string? [, $collation as xs:string]) as xs:boolean | überprüft, ob die Zeichenkette des zweiten Parameters in dem Wert von $arg1 auftritt |
fn:{starts|ends}-with( $arg1 as xs:string?, $arg2 as xs:string? [, $collation as xs:string]) as xs:boolean | überprüft, ob der Wert von $arg1 mit der Zeichenkette des zweiten Parameters beginnt bzw. endet |
fn:substring-{before|after}( $arg1 as xs:string?, $arg2 as xs:string? [, $collation as xs:string]) as xs:string | liefert den Teil der in $arg1 übergebenen Zeichenkette zurück, der vor bzw. nach dem ersten Auftreten der Zeichenkette $arg2 in $arg1 folgt |
Tab. Funktionen zur Analyse von Zeichenketten
In diesem Zusammenhang ist noch anzumerken, dass jede Funktion ohne bzw. mit einer expliziten Angabe einer Sortierordnung existiert. Die Sortierordnung ("collation") hat in diesem Kontext die über die reine Vergleichsoperation hinausgehende Funktion, dass die einzelnen Zeichen einer Zeichenkette einer lexikalischen Einheit zugeordnet werden, die dann zur Auswertung der jeweiligen Funktion herangezogen werden. Ohne Angabe einer expliziten Sortierordnung wird folgender exemplarische Ausdruck offensichtlicherweise den Wert true ergeben:
fn:contains("Kanuele", "el")
liefert true
Wird jedoch zum Beispiel die im Deutschen gebräuchliche Sortierordnung nach dem Telefonbuch verwendet, in der der Umlaut "ü" durch die lexikalische Einheit "ue" repräsentiert wird, so liefert der folgende Ausdruck überraschenderweise true:
fn:contains("Kanüle", "el",
"http://www.xquery-buch.de/Telefonbuchordnung")
liefert true
Dies ergibt sich deshalb, weil die Zeichenkette "Kanüle" intern als "Kanuele" repräsentiert wird. Wird andernfalls die Zeichenkette "ue" als einzelne lexikalische Einheit (naheliegenderweise als "ü") in einer Sortierordnung betrachtet, so ergibt sich hingegen folgendes Ergebnis:
fn:contains("Kanuele", "el",
"http://www.xquery-buch.de/Spezialordnung")
liefert false
Die Verwendung expliziter Sortierordnungen spielt bei der Analyse von Zeichenketten eine wichtige Rolle und muss – um entsprechende Überraschungen zu vermeiden – sorgfältig geplant werden.
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)
<< zurück | vor >> |