XQuery 函数

  • 定义和使用

    XQuery 1.0,XPath 2.0 和 XSLT 2.0 共享相同的函数库。
    XQuery 基于 XPath 表达式构建。 XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的功能和运算符。
    您还可以在 XQuery 中定义自己的函数。
  • XQuery 数据类型

    XQuery 数据类型
    XQuery 与 XML Schema 1.0(XSD)共享相同的数据类型。
    • XSD 字串(String)
    • XSD 日期(Date)
    • XSD 数值(Numer)
    • XSD 杂项(Misc)
  • 函数调用的例子

    在可能出现表达式的地方可能会出现对函数的调用。 看下面的例子:
    示例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 函数,则可以编写自己的 XQuery 函数。
    用户定义的函数可以在查询中或在单独的库中定义。

    语法

    declare function prefix:function_name($parameter as datatype)
    as returnDatatype
    {
      ...代码功能...
    };
    关于用户定义函数的注意事项:
    • 使用声明函数关键字(declare function keyword)
    • 函数名称必须带前缀(prefixed)
    • 参数的数据类型与 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>