Hàm XQuery
XQuery 1.0, XPath 2.0 và XSLT 2.0 chia sẻ cùng một thư viện hàm.
Hàm XQuery
XQuery được xây dựng trên các biểu thức XPath. XQuery 1.0 và XPath 2.0 chia sẻ cùng một mô hình dữ liệu và hỗ trợ các hàm và toán tử giống nhau.
Bạn cũng có thể xác định các hàm của riêng mình trong XQuery.
Các kiểu dữ liệu XQuery
XQuery chia sẻ các kiểu dữ liệu giống như Lược đồ XML 1.0 (XSD).
Ví dụ về lời gọi hàm
Lệnh gọi hàm có thể xuất hiện ở nơi biểu thức có thể xuất hiện. Hãy xem các ví dụ dưới đây:
Ví dụ 1: Trong một phần tử
<name>{upper-case($booktitle)}</name>
Ví dụ 2: Trong vị ngữ của biểu thức đường dẫn
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']
Ví dụ 3: Trong mệnh đề let
let $name := (substring($booktitle,1,4))
Các hàm do người dùng xác định XQuery
Nếu bạn không thể tìm thấy hàm XQuery mình cần, bạn có thể tự viết hàm của riêng mình.
Các hàm do người dùng định nghĩa có thể được xác định trong truy vấn hoặc trong một thư viện riêng.
Cú pháp
declare function prefix:function_name ($ parameter as datatype )
as returnDatatype
{
... function code here ...
};
Lưu ý về các hàm do người dùng xác định:
- Sử dụng từ khóa hàm khai báo
- Tên của hàm phải được đặt trước
- Kiểu dữ liệu của các tham số hầu hết giống với kiểu dữ liệu được xác định trong Lược đồ XML
- Phần thân của hàm phải được bao quanh bởi các dấu ngoặc nhọn
Ví dụ về hàm do người dùng định nghĩa được khai báo trong truy vấn
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>