zoukankan      html  css  js  c++  java
  • xquery

    XQuery 相对于 XML,等同于 SQL 相对于数据库。设计用来查询 XML 数据。- 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括数据库。

    FLWOR 是 "For, Let, Where, Order by, Return" 的只取首字母缩写。

    for $x in doc("books.xml")/bookstore/book

    where $x/price>30

    order by $x/title

    return $x/title

    <ul>

    {

    for $x in doc("books.xml")/bookstore/book/title

    order by $x

    return <li>{ data($x)}</li>

    }

    </ul>

    基本值(或称原子值,Atomic value)

    基本值是无父或无子的节点。

    基本值的例子:

    J K. Rowling

    "en"

    项目

    项目是基本值或者节点。

    XQuery 的基础语法规则:

    一些基本的语法规则:

    XQuery 对大小写敏感

    XQuery 的元素、属性以及变量必须是合法的 XML 名称。

    XQuery 字符串值可使用单引号或双引号。

    XQuery 变量由 “$” 并跟随一个名称来进行定义,举例,$bookstore

    XQuery 注释被 (: 和 :) 分割,例如,(: XQuery 注释 :)

    XQuery 条件表达式

    "If-Then-Else" 可以在 XQuery 中使用。

    如:for $x in doc("books.xml")/bookstore/book

    return  if ($x/@category="CHILDREN")

             then <child>{data($x/title)}</child>

             else <adult>{data($x/title)}</adult>

    XQuery 比较

    在 XQuery 中,有两种方法来比较值。

    通用比较:=, !=, <, <=, >, >=

    值的比较:eq、ne、lt、le、gt、ge

    添加属性和文本:<ul>

    {

    for $x in doc("books.xml")/bookstore/book

    order by $x/title

    return <li class="{data($x/@category)}">{data($x/title)}</li>

    }

    </ul>

    for 语句可将变量捆绑到由 in 表达式返回的每个项目。for 语句可产生迭代。在同一个 FLWOR 表达式中可存在多重 for 语句。

    如需在一个 for 语句中进行指定次数地循环,您可使用关键词 to :

    for $x in (1 to 5)

    return <test>{$x}</test>

    关键词 at 可用于计算迭代:

    for $x at $i in doc("books.xml")/bookstore/book/title

    return <book>{$i}. {data($x)}</book>

    在 for 语句中同样允许多个 in 表达式。请使用逗号来分割每一个 in 表达式:

    for $x in (10,20), $y in (100,200)

    return <test>x={$x} and y={$y}</test>

    let 语句

    let 语句可完成变量分配,并可避免多次重复相同的表达式。let 语句不会导致迭代。

    let $x := (1 to 5)

    return <test>{$x}</test>

    函数命名空间的默认前缀是 fn:。

    提示:函数经常被通过 fn: 前缀进行调用,例如 fn:string()。不过,由于 fn: 是命名空间的默认前缀,所以函数名称不必在被调用时使用前缀。

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

    例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 中定义的数据类型一致

    函数主体须被花括号包围

  • 相关阅读:
    通过了解Servlet和Http之间的关系,了解web中http通信使用(二)
    Java 简单操作hdfs API
    安装Apache-storm-0.9.1-incubating图解教程
    CentOS6.4安装Zookeeper-3.4.12图解教程
    JDBC简单查询数据库
    Windwos上Mysql突然出现系统错误3,找不到系统路口
    利用Javaweb应用中六种属性范围,来理解Servlet的并发问题
    Servlet中分发器和重定向两兄弟
    如何查看服务器机房位置
    解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
  • 原文地址:https://www.cnblogs.com/selfimprove/p/4582993.html
Copyright © 2011-2022 走看看