XQuery 函数
XQuery 1.0、XPath 2.0 和 XSLT 2.0 共享相同的函数库。
XQuery 函数
XQuery 建立在 XPath 表达式之上。XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符。
您也可以在 XQuery 中定义自己的函数。
XQuery 数据类型
XQuery 与 XML Schema 1.0 (XSD) 共享相同的数据类型。
函数调用示例
函数调用可以出现在表达式可以出现的地方。请查看下面的示例
示例 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 prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
关于用户定义函数的说明
- 使用 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)
};
下面是如何调用上面函数的示例
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>