Fungsi XQuery
XQuery 1.0, XPath 2.0, dan XSLT 2.0 berbagi pustaka fungsi yang sama.
Fungsi XQuery
XQuery dibangun di atas ekspresi XPath. XQuery 1.0 dan XPath 2.0 berbagi model data yang sama dan mendukung fungsi dan operator yang sama.
Anda juga dapat menentukan fungsi Anda sendiri di XQuery.
Tipe Data XQuery
XQuery berbagi tipe data yang sama dengan XML Schema 1.0 (XSD).
Contoh Panggilan Fungsi
Panggilan ke suatu fungsi dapat muncul di tempat ekspresi mungkin muncul. Lihatlah contoh-contoh di bawah ini:
Contoh 1: Dalam sebuah elemen
<name>{upper-case($booktitle)}</name>
Contoh 2: Dalam predikat ekspresi jalur
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Contoh 3: Dalam klausa let
let $name := (substring($booktitle,1,4))
Fungsi yang Ditentukan Pengguna XQuery
Jika Anda tidak dapat menemukan fungsi XQuery yang Anda butuhkan, Anda dapat menulis sendiri.
Fungsi yang ditentukan pengguna dapat ditentukan dalam kueri atau di pustaka terpisah.
Sintaksis
declare function prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
Catatan tentang fungsi yang ditentukan pengguna:
- Gunakan kata kunci fungsi deklarasi
- Nama fungsi harus diawali
- Tipe data parameter sebagian besar sama dengan tipe data yang didefinisikan dalam Skema XML
- Badan fungsi harus dikelilingi oleh kurung kurawal
Contoh Fungsi yang Ditentukan Pengguna yang Dideklarasikan dalam Kueri
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>