• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

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.

SignaturBeschreibung
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ückvor >>