Hàm trong XQuery

XQuery 1.0, XPath 2.0 và XSLT 2.0 chia sẻ cùng một thư viện hàm.

Hàm trong XQuery

XQuery chứa hơn 100 hàm tích hợp. Các hàm này có thể được sử dụng cho giá trị chuỗi, số, so sánh ngày tháng, thao tác với nút và QName, thao tác với chuỗi, giá trị lô-gic, v.v. Bạn cũng có thể định nghĩa hàm của riêng mình trong XQuery.

Hàm tích hợp của XQuery

URI không gian tên của hàm XQuery:

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

Tiền tố mặc định của không gian tên của hàm là fn:.

Lưu ý:Hàm thường được gọi bằng tiền tố fn:, ví dụ fn:string(). Tuy nhiên, do fn: là tiền tố mặc định của không gian tên, vì vậy không cần sử dụng tiền tố trong khi gọi hàm.

Bạn có thể tìm thấy toàn bộ《Tài liệu tham khảo hàm trong XQuery》。

Ví dụ gọi hàm

Gọi hàm có thể được sử dụng cùng với biểu thức. Xem ví dụ dưới đây:

Ví dụ 1: Trong phần tử

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

Ví dụ 2: Trong điều kiện của biểu thức đường dẫn

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

Ví dụ 3: Trong câu let

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

Hàm định nghĩa người dùng của XQuery

Nếu không tìm thấy hàm XQuery cần thiết, bạn có thể viết hàm của riêng mình.

Hàm tùy chỉnh có thể được định nghĩa trong truy vấn hoặc trong thư viện độc lập.

Cú pháp

declare function tiền tố:Tên hàm($tham số AS loại dữ liệu)
  AS loại dữ liệu trả về
{}}
(: ...mã hàm của hàm... :)
;

Lưu ý khi sử dụng hàm tùy chỉnh:

  • Vui lòng sử dụng từ khóa declare function
  • Tên hàm phải sử dụng tiền tố
  • Kiểu dữ liệu của tham số thường khớp với loại dữ liệu được định nghĩa trong XML Schema
  • Phần thân của hàm phải được bao bọc bởi dấu ngoặc花括号

Một ví dụ về hàm tùy chỉnh được khai báo trong truy vấn:

declare function local:minPrice(
  $price as xs:decimal?,
  $discount as xs:decimal?)
  AS xs:decimal?
{}}
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(: Dưới đây là ví dụ về việc gọi hàm trên :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>