1、XQuery 教程XQuery 教程解释XQuery的最好方式是:XQuery相对于XML(等同于SQL相对于数据库)。XQuery被设计用来查询XML数据。XQuery也被称为XML Query。开始学习XQuery!XQuery 参考手册在W3School,我们提供XQuery 1.0中所有operators、内置函数、数据类型的完整参考手册。XQuery 参考手册内容目录XQuery 简介 XQuery的简介。包括其概念和作用。 XQuery 实例 本章通过一个实例演示XQuery。 XQuery FLWOR 本章讲解XQuery FLWOR表达式。 XQuery FLWOR + HTM
2、L 本章演示如何通过HTML列表提交FLWOR结果。 XQuery 术语 本章讲解XQuery中普遍使用的术语。 XQuery 语法 本章讲解XQuery中基本的语法规则。 XQuery向结果添加结果和属性 本章讲解如何向结果添加你自己的元素和属性。 XQuery 筛选元素 本章讲解如何使用FLWOR筛选元素。 XQuery 函数 XQuery内置函数和operators的总论,以及如何创建用户自定义的函数。 XQuery 总结 本文包括在本教程所学内容的一个总结,以及我们向你推荐的下一步应该学习的内容。 XQuery 参考手册XQuery 参考手册 包含XQuery 运算符、内置函数、数据类
3、型的完整参考手册。 XQuery 简介解释XQuery最好的方式是这样讲:XQuery相对于XML的关系(等同于SQL相对于数据库表的关系。XQuery被设计用来查询XML数据 - 不仅仅限于XML文件,还包含任何可以XML形态呈现的数据,包括数据库。您应该具备的基础知识:在您继续学习之前,需要对下面的知识有基本的了解: HTML / XHTML XML / XML命名空间 XPath 如果您希望首先学习这些项目,请在我们的首页访问这些教程。什么是XQuery? XQuery是用于XML数据查询的语言 XQuery对XML的作用类似SQL对数据库的作用 XQuery被构建在XPath表达式之上
4、 XQuery被所有主要的数据库引擎支持(IBM、Oracle、Microsoft等等。) XQuery是W3C标准。 XQuery和XML查询有关XQuery是用来从XML文档查找和提取元素及属性的语言。这是一个XQuery解决实际问题的例子:“从存储在名为cd_catalog.xml的XML文档中的CD集那里选取所有价格低于10美元的CD纪录。”XQuery与XPathXQuery 1.0和XPath 2.0共享相同的数据模型,并支持相同的函数和运算符。假如您已经学习了XPath,那么学习XQuery也不会有问题。您可以在我们的XPath教程中阅读更多有关XPath的知识。XQuery -
5、 应用举例XQuery可被用来: 提取信息以便在网络服务中使用 生成摘要报告 把XML数据转换为XHTML 为获得相关信息而搜索网络文档 XQuery是一个W3C标准XQuery与多种W3C标准相兼容,比如XML、Namespaces、XSLT、XPath以及XML Schema。XQuery 1.0在2007年1月23日被确立为W3C标准。如需获得更多有关W3C的XQuery活动的信息,请阅读我们的W3C教程。XQuery 实例在本节,让我们通过研究一个例子来学习一些基础的XQuery语法。XML实例文档我们将在下面的例子中使用这个XML文档。books.xml: Everyday Ital
6、ian Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T. Ray 2003 39.95在您的浏览器中查看books.xml文件。如何从books.xml选取节点?函数XQuery使用函数来提取XML文档中的数据。doc()用于打开books.xml文件:doc(book
7、s.xml)路径表达式XQuery使用路径表达式在XML文档中通过元素进行导航。下面的路径表达式用于在books.xml文件中选取所有的title元素:doc(books.xml)/bookstore/book/title(/bookstore选取bookstore元素,/book选取bookstore元素下的所有book元素,而/title选取每个book元素下的所有title元素)上面的XQuery可提取以下数据:Everyday ItalianHarry PotterXQuery Kick StartLearning XML谓语XQuery使用谓语来限定从XML文档所提取的数据。下面的谓
8、语用于选取bookstore元素下的所有book元素,并且所选取的book元素下的price元素的值必须小于30:doc(books.xml)/bookstore/bookprice30上面的XQuery可提取到下面的数据: Harry Potter J K. Rowling 2005 29.99XQuery FLWOR 表达式XML 实例文档我们将在下面的例子中使用这个books.xml文档(与上一节中的XML文件相同)。在您的浏览器中查看books.xml文件。如果使用FLWOR从books.xml选取节点请看下面这个路径表达式:doc(books.xml)/bookstore/bookp
9、rice30/title上面这个表达式可选取bookstore元素下的book元素下所有的title元素,并且其中的price元素的值必须大于30。下面这个FLWOR表达式所选取的数据和上面的路径表达式是相同的:for $x in doc(books.xml)/bookstore/bookwhere $x/price30return $x/title结果是:XQuery Kick StartLearning XML通过FLWOR,您可以对结果进行排序:for $x in doc(books.xml)/bookstore/bookwhere $x/price30order by $x/title
10、return $x/titleFLWOR是For, Let, Where, Order by, Return的只取首字母缩写。for语句把bookstore元素下的所有book元素提取到名为$x的变量中。where语句选取了price元素值大于30的book元素。order by语句定义了排序次序。将根据title元素进行排序。return语句规定返回什么内容。在此返回的是title元素。上面的XQuery表达式的结果:Learning XMLXQuery Kick StartXQuery FLWOR + HTMLXML实例文档我们将在下面的例子中使用这个books.xml文档(与上一节中的文
11、件相同)。在您的浏览器中查看books.xml文件。在一个HTML列表中提交结果请看下面的XQuery FLWOR表达式:for $x in doc(books.xml)/bookstore/book/titleorder by $xreturn $x上面的表达式会选取bookstore元素下的book元素下的所有title元素,并以字母顺序返回title元素。现在,我们希望使用HTML列表列出我们的书店中所有的书目。我们向FLWOR表达式添加和标签:for $x in doc(books.xml)/bookstore/book/titleorder by $xreturn $x以上代码的结果
12、:Everyday ItalianHarry PotterLearning XMLXQuery Kick Start现在我们希望去除title元素,而仅仅显示title元素内的数据。for $x in doc(books.xml)/bookstore/book/titleorder by $xreturn data($x)结果将是一个HTML列表:Everyday ItalianHarry PotterLearning XMLXQuery Kick StartXQuery 术语在XQuery中,有七种节点:元素、属性、文本、命名空间、处理指令、注释、以及文档节点(或称为根节点)。XQuery
13、术语节点在XQuery中,有七种节点:元素、属性、文本、命名空间、处理指令、注释、以及文档(根)节点。XML文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。请看下面的XML文档: Harry Potter J K. Rowling 2005 29.99上面的XML文档中的节点例子: (document node)J K. Rowling (element node)lang=en (attribute node)基本值(或称原子值,Atomic value)基本值是无父或无子的节点。基本值的例子:J K. Rowlingen项目项目是基本值或者节点。节点关系父(Parent)每个元
14、素以及属性都有一个父。在下面的例子中,book元素是title、author、year以及price元素的父: Harry Potter J K. Rowling 2005 29.99子(Children)节点元素可有零个、一个或多个子。在下面的例子中,title、author、year以及price元素都是book元素的子: Harry Potter J K. Rowling 2005 29.99同胞(Sibling)拥有相同的父的节点。在下面的例子中,title、author、year以及price元素都是同胞: Harry Potter J K. Rowling 2005 29.99先辈
15、(Ancestor)某节点的父、父的父,等等。在下面的例子中,title元素的先辈是book元素和bookstore元素: Harry Potter J K. Rowling 2005 29.99后代(Descendant)某个节点的子,子的子,等等。在下面的例子中,bookstore的后代是book、title、author、year以及price元素: Harry Potter J K. Rowling 2005 29.99XQuery 语法XQuery对大小写敏感,XQuery的元素、属性以及变量必须是合法的XML名称。XQuery的基础语法规则:一些基本的语法规则: XQuery对大小
16、写敏感 XQuery的元素、属性以及变量必须是合法的XML名称。 XQuery字符串值可使用单引号或双引号。 XQuery变量由“$”并跟随一个名称来进行定义,举例,$bookstore XQuery注释被(:和:)分割,举例,(: XQuery 注释 :) XQuery 条件表达式If-Then-Else可以在XQuery中使用。请看下面的例子:for $x in doc(books.xml)/bookstore/bookreturn if ($x/category=CHILDREN) then data($x/title) else data($x/title)请注意If-Then-Els
17、e的语法:if表达式后的圆括号是必需的。else也是必需的,不过仅仅写“else ()”也是可以的。上面的例子的结果:Everyday ItalianHarry PotterLearning XMLXQuery Kick StartXQuery 比较在XQuery中,有两种方法来比较值。1. 通用比较:=, !=, , , = 2. 值的比较:eq、ne、lt、le、gt、ge 这两种比较方法的差异如下:请看下面的XQuery表达式:$bookstore/book/q 10如果q属性的值大于10,上面的表达式的返回值为true。$bookstore/book/q gt 10如果仅返回一个q,且
18、它的值大于10,那么表达式返回true。如果不止一个q被返回,则会发生错误。XQuery 添加元素和属性XML实例文档我们将在下面的例子中使用这个books.xml文档(和上面的章节所使用的XML文件相同)。在您的浏览器中查看books.xml文件。向结果添加元素和属性正如在前面一节看到的,我们可以在结果中引用输入文件中的元素和属性:for $x in doc(books.xml)/bookstore/book/titleorder by $xreturn $x上面的XQuery表达式会在结果中引用title元素和lang属性,就像这样:Everyday ItalianHarry Potter
19、Learning XMLXQuery Kick Start以上XQuery表达式返回title元素的方式和它们在输入文档中被描述的方式的相同的。现在我们要向结果添加我们自己的元素和属性!添加HTML元素和文本现在,我们要向结果添加HTML元素。我们会把结果放在一个HTML列表中 - Now, we want to add some HTML elements to the result. We will put the result in an HTML list - together with some text:Bookstorefor $x in doc(books.xml)/books
20、tore/bookorder by $x/titlereturn data($x/title). Category: data($x/category)以上XQuery表达式会生成下面的结果:BookstoreEveryday Italian. Category: COOKINGHarry Potter. Category: CHILDRENLearning XML. Category: WEBXQuery Kick Start. Category: WEB向HTML元素添加属性接下来,我们要把category属性作为HTML列表中的class属性来使用:Bookstorefor $x in
21、doc(books.xml)/bookstore/bookorder by $x/titlereturn data($x/title)上面的XQuery表达式可生成以下结果:BookstoreEveryday ItalianHarry PotterLearning XMLXQuery Kick StartXQuery 选择和过滤XML实例文档我们将在下面的例子中使用这个books.xml文档(和上面的章节所使用的XML文件相同)。在您的浏览器中查看books.xml文件。选择和过滤元素正如在前面的章节看到的,我们使用路径表达式或FLWOR表达式来选去和过滤元素。请看下面的FLWOR表达式:fo
22、r $x in doc(books.xml)/bookstore/bookwhere $x/price30order by $x/titlereturn $x/titlefor (可选) 向每个由in表达式返回的项目捆绑一个变量 let (可选) where (可选) 设定一个条件 order by (可选) 设定结果的排列顺序 return 规定在结果中返回的内容 for 语句for语句可将变量捆绑到由in表达式返回的每个项目。for可产生迭代。在同一个FLWOR表达式中可存在多重for语句。如需在一个for语句中循环指定的次数,您可使用关键词to: for $x in (1 to 5)return $x结果: 12345关键词at可被用来计算迭代:for $x at $i in doc(books.xml)/bookstore/book/titlereturn $i. data($x)结果:1. Everyday Italian/book
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1