XQuery- Funktionen
XQuery 1.0, XPath 2.0 und XSLT 2.0 nutzen dieselbe Funktionsbibliothek.
XQuery-Funktionen
XQuery basiert auf XPath-Ausdrücken. XQuery 1.0 und XPath 2.0 nutzen dasselbe Datenmodell und unterstützen dieselben Funktionen und Operatoren.
Sie können auch Ihre eigenen Funktionen in XQuery definieren.
XQuery-Datentypen
XQuery verwendet dieselben Datentypen wie XML Schema 1.0 (XSD).
Beispiele für Funktionsaufrufe
Ein Aufruf einer Funktion kann dort erscheinen, wo ein Ausdruck erscheinen kann. Sehen Sie sich die folgenden Beispiele an:
Beispiel 1: In einem Element
<name>{upper-case($booktitle)}</name>
Beispiel 2: Im Prädikat eines Pfadausdrucks
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Beispiel 3: In einer let-Klausel
let $name := (substring($booktitle,1,4))
Benutzerdefinierte XQuery-Funktionen
Wenn Sie die benötigte XQuery-Funktion nicht finden können, können Sie Ihre eigene schreiben.
Benutzerdefinierte Funktionen können in der Abfrage oder in einer separaten Bibliothek definiert werden.
Syntax
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Hinweise zu benutzerdefinierten Funktionen:
- Verwenden Sie das Schlüsselwort der Deklarationsfunktion
- Der Name der Funktion muss vorangestellt werden
- Der Datentyp der Parameter entspricht größtenteils den im XML-Schema definierten Datentypen
- Der Rumpf der Funktion muss von geschweiften Klammern umgeben sein
Beispiel einer in der Abfrage deklarierten benutzerdefinierten Funktion
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
as xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc)
};
Below is an example of how to call the function above:
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>