Funktionen in XQuery

XQuery 1.0, XPath 2.0 und XSLT 2.0 teilen die gleiche Funktionsbibliothek.

Funktionen in XQuery

XQuery enthält über 100 eingebaute Funktionen. Diese Funktionen können für Zeichenfolgen, numerische Werte, Datum und Zeitvergleiche, Knoten- und QName-Operationen, Sequenzoperationen, logische Werte usw. verwendet werden. Sie können auch Ihre eigenen Funktionen in XQuery definieren.

Eingebauter XQuery-Funktionen

URI des Namensraums der XQuery-Funktionen:

http://www.w3.org/2005/02/xpath-functions

Der Standardpräfix für den Namensraum der Funktionen ist fn:.

Tipp:Funktionen werden oft über den Präfix fn: aufgerufen, z.B. fn:string(). Allerdings ist fn: der Standardpräfix für Namensräume, daher muss der Präfix nicht im Aufruf verwendet werden.

Sie finden das vollständigeBibliothek der eingebauten XQuery-Funktionen》。

Funktionsaufrufbeispiel

Funktionsaufrufe können zusammen mit Ausdrücken verwendet werden. Sehen Sie sich das folgende Beispiel an:

Beispiel 1: In Elementen

<name>{upper-case($booktitle)}</name>

Beispiel 2: In Prädikaten von Pfadausdrücken

doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'

Beispiel 3: In let-Anweisungen

let $name := (substring($booktitle,1,4))

XQuery benutzerdefinierte Funktionen

Wenn die benötigte XQuery-Funktion nicht gefunden wird, können Sie Ihre eigenen Funktionen schreiben.

Benutzerdefinierte Funktionen können in der Abfrage oder in separaten Bibliotheken definiert werden.

Syntax

declare function Präfix:Funktionsname($Parameter AS Datentyp)
  AS Rückgabetyp
{
(: ...Funktionssource... :)
return ($price - $disc)

Hinweise zur benutzerdefinierten Funktion:

  • Verwenden Sie den Schlüsselwort 'declare function'
  • Die Funktionsbezeichnung muss einen Präfix verwenden
  • Der Datentyp der Parameter stimmt in der Regel mit dem Datentyp überein, der im XML Schema definiert ist
  • Der Funktionskörper muss in Klammern eingeschlossen werden

Ein Beispiel für eine vom Benutzer deklarierte benutzerdefinierte Funktion in der Abfrage:

declare function local:minPrice(
  $price as xs:decimal?,
  $discount as xs:decimal?)
  AS xs:decimal?
{
{}}
let $disc := ($price * $discount) div 100
return ($price - $disc)
};
(: Hier ist ein Beispiel für die Aufrufe der obigen Funktion :)