XQuery 教程.docx

上传人:b****8 文档编号:8986479 上传时间:2023-02-02 格式:DOCX 页数:22 大小:21.49KB
下载 相关 举报
XQuery 教程.docx_第1页
第1页 / 共22页
XQuery 教程.docx_第2页
第2页 / 共22页
XQuery 教程.docx_第3页
第3页 / 共22页
XQuery 教程.docx_第4页
第4页 / 共22页
XQuery 教程.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

XQuery 教程.docx

《XQuery 教程.docx》由会员分享,可在线阅读,更多相关《XQuery 教程.docx(22页珍藏版)》请在冰豆网上搜索。

XQuery 教程.docx

XQuery教程

XQuery教程

解释XQuery的最好方式是:

XQuery相对于XML(等同于SQL相对于数据库)。

XQuery被设计用来查询XML数据。

XQuery也被称为XMLQuery。

开始学习XQuery!

XQuery参考手册

在W3School,我们提供XQuery1.0中所有operators、内置函数、数据类型的完整参考手册。

XQuery参考手册

内容目录

XQuery简介

XQuery的简介。

包括其概念和作用。

XQuery实例

本章通过一个实例演示XQuery。

XQueryFLWOR

本章讲解XQueryFLWOR表达式。

XQueryFLWOR+HTML

本章演示如何通过HTML列表提交FLWOR结果。

XQuery术语

本章讲解XQuery中普遍使用的术语。

XQuery语法

本章讲解XQuery中基本的语法规则。

XQuery向结果添加结果和属性

本章讲解如何向结果添加你自己的元素和属性。

XQuery筛选元素

本章讲解如何使用FLWOR筛选元素。

XQuery函数

XQuery内置函数和operators的总论,以及如何创建用户自定义的函数。

XQuery总结

本文包括在本教程所学内容的一个总结,以及我们向你推荐的下一步应该学习的内容。

XQuery参考手册

XQuery参考手册

包含XQuery运算符、内置函数、数据类型的完整参考手册。

XQuery简介

解释XQuery最好的方式是这样讲:

XQuery相对于XML的关系(等同于SQL相对于数据库表的关系。

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

您应该具备的基础知识:

在您继续学习之前,需要对下面的知识有基本的了解:

∙HTML/XHTML

∙XML/XML命名空间

∙XPath

如果您希望首先学习这些项目,请在我们的首页访问这些教程。

什么是XQuery?

∙XQuery是用于XML数据查询的语言

∙XQuery对XML的作用类似SQL对数据库的作用

∙XQuery被构建在XPath表达式之上

∙XQuery被所有主要的数据库引擎支持(IBM、Oracle、Microsoft等等。

∙XQuery是W3C标准。

XQuery和XML查询有关

XQuery是用来从XML文档查找和提取元素及属性的语言。

这是一个XQuery解决实际问题的例子:

“从存储在名为cd_catalog.xml的XML文档中的CD集那里选取所有价格低于10美元的CD纪录。

XQuery与XPath

XQuery1.0和XPath2.0共享相同的数据模型,并支持相同的函数和运算符。

假如您已经学习了XPath,那么学习XQuery也不会有问题。

您可以在我们的《XPath教程》中阅读更多有关XPath的知识。

XQuery-应用举例

XQuery可被用来:

∙提取信息以便在网络服务中使用

∙生成摘要报告

∙把XML数据转换为XHTML

∙为获得相关信息而搜索网络文档

XQuery是一个W3C标准

XQuery与多种W3C标准相兼容,比如XML、Namespaces、XSLT、XPath以及XMLSchema。

XQuery1.0在2007年1月23日被确立为W3C标准。

如需获得更多有关W3C的XQuery活动的信息,请阅读我们的《W3C教程》。

XQuery实例

在本节,让我们通过研究一个例子来学习一些基础的XQuery语法。

XML实例文档

我们将在下面的例子中使用这个XML文档。

"books.xml":

xmlversion="1.0"encoding="ISO-8859-1"?

>

EverydayItalian

GiadaDeLaurentiis

2005

30.00

HarryPotter

JK.Rowling

2005

29.99

XQueryKickStart

JamesMcGovern

PerBothner

KurtCagle

JamesLinn

VaidyanathanNagarajan

2003

49.99

LearningXML

ErikT.Ray

2003

39.95

在您的浏览器中查看"books.xml"文件。

如何从"books.xml"选取节点?

函数

XQuery使用函数来提取XML文档中的数据。

doc()用于打开"books.xml"文件:

doc("books.xml")

路径表达式

XQuery使用路径表达式在XML文档中通过元素进行导航。

下面的路径表达式用于在"books.xml"文件中选取所有的title元素:

doc("books.xml")/bookstore/book/title

(/bookstore选取bookstore元素,/book选取bookstore元素下的所有book元素,而/title选取每个book元素下的所有title元素)

上面的XQuery可提取以下数据:

EverydayItalian

HarryPotter

XQueryKickStart

LearningXML

谓语

XQuery使用谓语来限定从XML文档所提取的数据。

下面的谓语用于选取bookstore元素下的所有book元素,并且所选取的book元素下的price元素的值必须小于30:

doc("books.xml")/bookstore/book[price<30]

上面的XQuery可提取到下面的数据:

HarryPotter

JK.Rowling

2005

29.99

XQueryFLWOR表达式

XML实例文档

我们将在下面的例子中使用这个"books.xml"文档(与上一节中的XML文件相同)。

在您的浏览器中查看"books.xml"文件。

如果使用FLWOR从"books.xml"选取节点

请看下面这个路径表达式:

doc("books.xml")/bookstore/book[price>30]/title

上面这个表达式可选取bookstore元素下的book元素下所有的title元素,并且其中的price元素的值必须大于30。

下面这个FLWOR表达式所选取的数据和上面的路径表达式是相同的:

for$xindoc("books.xml")/bookstore/book

where$x/price>30

return$x/title

结果是:

XQueryKickStart

LearningXML

通过FLWOR,您可以对结果进行排序:

for$xindoc("books.xml")/bookstore/book

where$x/price>30

orderby$x/title

return$x/title

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

for语句把bookstore元素下的所有book元素提取到名为$x的变量中。

where语句选取了price元素值大于30的book元素。

orderby语句定义了排序次序。

将根据title元素进行排序。

return语句规定返回什么内容。

在此返回的是title元素。

上面的XQuery表达式的结果:

LearningXML

XQueryKickStart

XQueryFLWOR+HTML

XML实例文档

我们将在下面的例子中使用这个"books.xml"文档(与上一节中的文件相同)。

在您的浏览器中查看"books.xml"文件。

在一个HTML列表中提交结果

请看下面的XQueryFLWOR表达式:

for$xindoc("books.xml")/bookstore/book/title

orderby$x

return$x

上面的表达式会选取bookstore元素下的book元素下的所有title元素,并以字母顺序返回title元素。

现在,我们希望使用HTML列表列出我们的书店中所有的书目。

我们向FLWOR表达式添加

  • 标签:

      {

      for$xindoc("books.xml")/bookstore/book/title

      orderby$x

      return

    • {$x}
    • }

    以上代码的结果:

    • EverydayItalian
    • HarryPotter
    • LearningXML
    • XQueryKickStart

    现在我们希望去除title元素,而仅仅显示title元素内的数据。

      {

      for$xindoc("books.xml")/bookstore/book/title

      orderby$x

      return

    • {data($x)}
    • }

    结果将是一个HTML列表:

    • EverydayItalian
    • HarryPotter
    • LearningXML
    • XQueryKickStart

    XQuery术语

    在XQuery中,有七种节点:

    元素、属性、文本、命名空间、处理指令、注释、以及文档节点(或称为根节点)。

    XQuery术语

    节点

    在XQuery中,有七种节点:

    元素、属性、文本、命名空间、处理指令、注释、以及文档(根)节点。

    XML文档是被作为节点树来对待的。

    树的根被称为文档节点或者根节点。

    请看下面的XML文档:

    xmlversion="1.0"encoding="ISO-8859-1"?

    >

    HarryPotter

    JK.Rowling

    2005

    29.99

    上面的XML文档中的节点例子:

    (documentnode)

    JK.Rowling(elementnode)

    lang="en"(attributenode)

    基本值(或称原子值,Atomicvalue)

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

    基本值的例子:

    JK.Rowling

    "en"

    项目

    项目是基本值或者节点。

    节点关系

    父(Parent)

    每个元素以及属性都有一个父。

    在下面的例子中,book元素是title、author、year以及price元素的父:

    HarryPotter

    JK.Rowling

    2005

    29.99

    子(Children)

    节点元素可有零个、一个或多个子。

    在下面的例子中,title、author、year以及price元素都是book元素的子:

    HarryPotter

    JK.Rowling

    2005

    29.99

    同胞(Sibling)

    拥有相同的父的节点。

    在下面的例子中,title、author、year以及price元素都是同胞:

    HarryPotter

    JK.Rowling

    2005

    29.99

    先辈(Ancestor)

    某节点的父、父的父,等等。

    在下面的例子中,title元素的先辈是book元素和bookstore元素:

    HarryPotter

    JK.Rowling

    2005

    29.99

    后代(Descendant)

    某个节点的子,子的子,等等。

    在下面的例子中,bookstore的后代是book、title、author、year以及price元素:

    HarryPotter

    JK.Rowling

    2005

    29.99

    XQuery语法

    XQuery对大小写敏感,XQuery的元素、属性以及变量必须是合法的XML名称。

    XQuery的基础语法规则:

    一些基本的语法规则:

    ∙XQuery对大小写敏感

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

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

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

    ∙XQuery注释被(:

    和:

    )分割,举例,(:

    XQuery注释:

    XQuery条件表达式

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

    请看下面的例子:

    for$xindoc("books.xml")/bookstore/book

    returnif($x/@category="CHILDREN")

    then{data($x/title)}

    else{data($x/title)}

    请注意"If-Then-Else"的语法:

    if表达式后的圆括号是必需的。

    else也是必需的,不过仅仅写“else()”也是可以的。

    上面的例子的结果:

    EverydayItalian

    HarryPotter

    LearningXML

    XQueryKickStart

    XQuery比较

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

    1.通用比较:

    =,!

    =,<,<=,>,>=

    2.值的比较:

    eq、ne、lt、le、gt、ge

    这两种比较方法的差异如下:

    请看下面的XQuery表达式:

    $bookstore//book/@q>10

    如果q属性的值大于10,上面的表达式的返回值为true。

    $bookstore//book/@qgt10

    如果仅返回一个q,且它的值大于10,那么表达式返回true。

    如果不止一个q被返回,则会发生错误。

    XQuery添加元素和属性

    XML实例文档

    我们将在下面的例子中使用这个"books.xml"文档(和上面的章节所使用的XML文件相同)。

    在您的浏览器中查看"books.xml"文件。

    向结果添加元素和属性

    正如在前面一节看到的,我们可以在结果中引用输入文件中的元素和属性:

    for$xindoc("books.xml")/bookstore/book/title

    orderby$x

    return$x

    上面的XQuery表达式会在结果中引用title元素和lang属性,就像这样:

    EverydayItalian

    HarryPotter

    LearningXML

    XQueryKickStart

    以上XQuery表达式返回title元素的方式和它们在输入文档中被描述的方式的相同的。

    现在我们要向结果添加我们自己的元素和属性!

    添加HTML元素和文本

    现在,我们要向结果添加HTML元素。

    我们会把结果放在一个HTML列表中-Now,wewanttoaddsomeHTMLelementstotheresult.WewillputtheresultinanHTMLlist-togetherwithsometext:

    Bookstore

      {

      for$xindoc("books.xml")/bookstore/book

      orderby$x/title

      return

    • {data($x/title)}.Category:

      {data($x/@category)}

    • }

    以上XQuery表达式会生成下面的结果:

    Bookstore

    • EverydayItalian.Category:

      COOKING

    • HarryPotter.Category:

      CHILDREN

    • LearningXML.Category:

      WEB

    • XQueryKickStart.Category:

      WEB

    向HTML元素添加属性

    接下来,我们要把category属性作为HTML列表中的class属性来使用:

    Bookstore

      {

      for$xindoc("books.xml")/bookstore/book

      orderby$x/title

      return{data($x/title)}

      }

    上面的XQuery表达式可生成以下结果:

    Bookstore

      EverydayItalian

      HarryPotter

      LearningXML

      XQueryKickStart

    XQuery选择和过滤

    XML实例文档

    我们将在下面的例子中使用这个"books.xml"文档(和上面的章节所使用的XML文件相同)。

    在您的浏览器中查看"books.xml"文件。

    选择和过滤元素

    正如在前面的章节看到的,我们使用路径表达式或FLWOR表达式来选去和过滤元素。

    请看下面的FLWOR表达式:

    for$xindoc("books.xml")/bookstore/book

    where$x/price>30

    orderby$x/title

    return$x/title

    for

    (可选)向每个由in表达式返回的项目捆绑一个变量

    let

    (可选)

    where

    (可选)设定一个条件

    orderby

    (可选)设定结果的排列顺序

    return

    规定在结果中返回的内容

    for语句

    for语句可将变量捆绑到由in表达式返回的每个项目。

    for可产生迭代。

    在同一个FLWOR表达式中可存在多重for语句。

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

    for$xin(1to5)

    return{$x}

    结果:

    1

    2

    3

    4

    5

    关键词at可被用来计算迭代:

    for$xat$iindoc("books.xml")/bookstore/book/title

    return{$i}.{data($x)}

    结果:

    1.EverydayItalian

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1