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

Operationen und Funktionen auf Sequenzen atomarer Werte

Eine Sequenz aus Werten vom Typ xs:integer kann mit dem to-Operator erzeugt werden. So ergibt der Ausdruck

3 to 7

die Sequenz

(3, 4, 5, 6, 7)

Ist der erste Wert gleich dem zweiten, entsteht eine Sequenz mit nur einem Eintrag. Ist der erste Wert größer als der zweite, ergibt sich die leere Sequenz.

Man kann eine Sequenz nach einem bestimmten Eintrag durchsuchen. Genauer gesagt kann die Funktion fn:index-of() die Positionen innerhalb der Sequenz liefern, an denen ein atomarer Wert steht, der gleich dem vorgegebenen Suchausdruck ist. Gleichheit von Zeichenketten kann dabei unter Berücksichtigung einer Sortierordnung bestimmt werden. Wird der Ausdruck nicht gefunden, so ergibt sich eine leere Sequenz. Zu beachten ist, dass der erste Eintrag einer Sequenz auf Position 1 steht (nicht auf Position 0). Der folgende Ausdruck

fn:index-of((1,0,0,1), 1)

bestimmt alle Positionen der Eingabesequenz, an denen eine 1 steht, und liefert daher die Sequenz

(1,4)

Wie in späteren Beispielen deutlich wird, ist es oft hilfreich, wenn Duplikate in Sequenzen eliminiert werden können. Dies erledigt die Funktion fn:distinct-values(), der ebenfalls eine Sortierordnung für den Vergleich mitgegeben werden kann. Das Ergebnis enthält alle verschiedenen Werte, wobei deren Reihenfolge aber von der XQuery-Implementierung abhängt. Tritt in der Eingabesequenz der Wert NaN mehrfach auf, so erscheint er in der Ausgabesequenz nur einmal (obwohl NaN nicht gleich NaN ist).

SignaturBeschreibung
op:to(
$firstval as xs:integer,
$lastval as xs:integer)
as xs:integer*
generiert eine Sequenz ganzzahliger Werte, die
zwischen den beiden Werten der Parameter
liegen
fn:index-of(
$seq as xdt:anyAtomicType*,
$suchwert as xdt:anyAtomicType[,
$collation as xs:string])
as xs:integer*
liefert alle Positionen, an denen ein Eintrag
steht, der gleich dem gesuchten Wert ist
fn:distinct-values(
$seq as xdt:anyAtomicType*[,
$collation as xs:string])
as xdt:anyAtomicType*
liefert alle verschiedenen Werte aus der
Eingabesequenz

Tab. Funktionen auf Sequenzeinträgen

 

Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)

<< zurückvor >>