🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# XQuery 函数 XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。 ## XQuery 函数 XQuery 含有超过 100 个内建的函数。这些函数可用于字符串值、数值、日期以及时间比较、节点和 QName 操作、序列操作、逻辑值等等。您也可在 XQuery 中定义自己的函数。 ## XQuery 内建函数 XQuery 函数命名空间的 URI: http://www.w3.org/2005/02/xpath-functions 函数命名空间的默认前缀是 fn:。 提示:函数经常被通过 fn: 前缀进行调用,例如 fn:string()。不过,由于 fn: 是命名空间的默认前缀,所以函数名称不必在被调用时使用前缀。 您可以在我们的 XPath 教程中找到完整的《[内建 XQuery 函数参考手册](/xpath/xpath-tutorial.html)》。 ## 函数调用实例 函数调用可与表达式一同使用。请看下面的例子: ### 例1:在元素中 ``` <name>{upper-case($booktitle)}</name> ``` ### 例2: 在路径表达式的谓语中 ``` doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'] ``` ### 例3: 在 let 语句中 ``` let $name := (substring($booktitle,1,4)) ``` ## XQuery 用户定义函数 如果找不到所需的 XQuery 函数,你可以编写自己的函数。 可在查询中或独立的库中定义用户自定义函数。 ### 语法 ``` declare function _前缀:函数名_($_参数_ AS _数据类型_) AS _返回的数据类型_ {  ..._函数代码_... } ``` ### 关于用户自定义函数的注意事项: * 请使用 declare function 关键词 * 函数名须使用前缀 * 参数的数据类型通常与在 XML Schema 中定义的数据类型一致 * 函数主体须被花括号包围 ### 一个在查询中声明的用户自定义函数的例子: ``` 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> ```