应用场景
XQuery 可以自定义函数:声明命名空间 + 函数名 + 参数 + 返回类型,把重复逻辑抽出来复用。
语法
declare function 前缀:函数名($参数 as 类型) as 返回类型 { 表达式 };。调用:前缀:函数名(参数)。
作用域
函数默认在查询内可用;module 文件可共享函数库。
代码示例
(: 定义函数 :)
declare function local:discount($price, $rate) {
$price * $rate
};
declare function local:is-expensive($book) as xs:boolean {
$book/price >= 40
};
(: 调用 :)
for $book in doc("books.xml")//book
return concat(
$book/title,
if (local:is-expensive($book)) then "(贵)" else "",
" 折后: ",
local:discount($book/price, 0.9)
)