应用场景

XQuery 教程 · 第 7 章 · 7 次浏览

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)
)