非常教程

XQuery 教程教程

XQuery 函数

XQuery 函数

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 函数参考手册》。


函数调用实例

函数调用可与表达式一同使用。请看下面的例子:

例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>
XQuery 函数
XQuery 教程

XQuery 是建立在 XPath 表达式之上,用于 XML 数据查询的语言。XQuery 对 XML 的作用类似 SQL 对数据库的作用。XQuery 是一个 W3C 推荐标准。