探索XQuery

探索XQuery本文章部分资料参考w3school。一、概述XQuery=XMLQuery,是W3C所制定的一套标准引用w3school对XQuery最佳解释的方式是:XQuery相对于XML的关系,等同于SQL相对于数据库表的关系。XQuery被设计用来查询XML数据-不仅仅限于XML文件,还包括任何可以XML形态呈…

本文章部分资料参考w3school。

一、概述       

       XQuery = XML Query,是W3C所制定的一套标准   引用w3school对 XQuery最佳解释的方式是:XQuery 相对于 XML 的关系,等同于 SQL 相对于数据库表的关系。

       XQuery 被设计用来查询 XML 数据 – 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括数据库。

二、语法

  • xquery对大小写敏感。
  • xquery的元素、属性以及变量必须是合法的xml名称。
  • xquery字符串值可使用单引号或双引号。
  • xquery变量由“$”并跟随一个名称来定义,例:$str。
  • xquery注释被(:和:)分割,例:(:这是xquery注释:)。

三、FLWOR表达式

       FLWOR表达式通常由:for-let-where-order by-return首字母合并而来,音同单词‘flower’(鲜花),FLWOR字母顺序由xquery语法而定,不可变更。

       for:将某一节点下的所有元素依次赋值到变量中。

       let:语句定义变量。

       where:语句给出选取条件,用于 过滤绑定的结果。

       order by:语句定义排序次序,asending升序或descending降序。

       return:语句规定返回结果集。

      语法实例:

      for $for_var in for_expression

      let $let_var:=let_expression

      where 子句

      order by 子句

      return 子句

      其中for和let两者可以不出现,但是不能同时不出现。而where和order by子句是可以同时不出现的,也就是说他们是可选的。

      for和let都是用于绑定变量,用于迭代产生中间结果。在多个文档连接查询的时候以及重新组织结果时非常有用。

      for和let区别在于for会产生多个绑定,而let只产生一次绑定。

      例:

      for:

      探索XQuery

     let:

     探索XQuery

四、条件表达式(if-then-else)

       if-then-else在xquery中做条件选择使用  

       请看下面例子:

       探索XQuery

       请注意”if-then-else“语法:if表达式后的圆括号是必需的,else也是必需的,如果else没有语句,仅仅写else()也是可以的。

五、简单实列

       下面举例说明FLWOR表达式的应用。        

       <?xml version=”1.0″ encoding=”ISO-8859-1″?>

       <bookstore>

       <book category=”COOKING”>
                  <title lang=”en”>Everyday Italian</title>
                  <author>Giada De Laurentiis</author>
                  <year>2005</year>
                 <price>30.00</price>
       </book>

       <book category=”CHILDREN”>
                 <title lang=”en”>Harry Potter</title>
                 <author>J K. Rowling</author>
                 <year>2005</year>
                 <price>29.99</price>
      </book>

      <book category=”WEB”>
                <title lang=”en”>XQuery Kick Start</title>
                <author>James McGovern</author>
                <author>Per Bothner</author>
                <author>Kurt Cagle</author>
                <author>James Linn</author>
                <author>Vaidyanathan Nagarajan</author>
                <year>2003</year>
                <price>49.99</price>
       </book>

       <book category=”WEB”>
                <title lang=”en”>Learning XML</title>
                <author>Erik T. Ray</author>
                <year>2003</year>
                <price>39.95</price>
        </book>

        </bookstore>

        1、假设bookstore这个collection下面的book.xml纪录了一些关于书的信息,现在要返回2005年之前出版的书

        探索XQuery     

        2、说明FLWOR用于连接查询例子

        探索XQuery 

       3、FLWOR还可以嵌套使用

       探索XQuery

      4、xquery本身没有提供group by子句用于分组,但是我们可以通过嵌套的for或let达到分组功能

       探索XQuery       

六、XQuery函数

       xquery含有超个100个内建函数。这些函数可用于字符串值、数值、日期以及时间比较、节点和QName操作、序列操作、逻辑值等。

       内附xquery内建函数链接,有兴趣的同学可以点击连接查看:http://www.w3school.com.cn/xpath/xpath_functions.asp

       同样的,xquery也提供用户自定义函数:

       语法:

       declare function 前缀:函数名($参数 AS 数据类型)

       AS 返回的数据类型

      {

              (:函数代码:)

      }

      关于用户自定义的注意事项:

  • 请使用declare function关键字
  • 函数名必须使用前缀
  • 参数的数据类型通常与在xml schema中定义的数据类型一致
  • 函数主体需被花括号包围

      一个在查询中声明用户自定义函数的例子:

      探索XQuery

七、总结

       关于xquery的探索就分享到这里了,笔者在文中对xquery测试所使用的是国外名为 Stylus Studio的一款编辑器。这玩意是收费的。此款编辑器功能笔者也在探索当中,所以就不在这里描述这玩意怎么使用了。 

      xquery除了对xml文档进行操作以外其实还支持对数据表的操作,这个也是笔者亲手测试过的啦,具体操作就不说了。有兴趣的朋友可以在评论留言,互相探讨下。如有错误,欢迎指证!

今天的文章探索XQuery分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7494.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注