XQuery 教程Word格式文档下载.docx
- 文档编号:22122615
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:21.49KB
XQuery 教程Word格式文档下载.docx
《XQuery 教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《XQuery 教程Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
解释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"
>
bookstore>
bookcategory="
COOKING"
<
titlelang="
en"
EverydayItalian<
/title>
author>
GiadaDeLaurentiis<
/author>
year>
2005<
/year>
price>
30.00<
/price>
/book>
CHILDREN"
HarryPotter<
JK.Rowling<
29.99<
WEB"
XQueryKickStart<
JamesMcGovern<
PerBothner<
KurtCagle<
JamesLinn<
VaidyanathanNagarajan<
2003<
49.99<
LearningXML<
ErikT.Ray<
39.95<
/bookstore>
在您的浏览器中查看"
文件。
如何从"
选取节点?
函数
XQuery使用函数来提取XML文档中的数据。
doc()用于打开"
文件:
doc("
)
路径表达式
XQuery使用路径表达式在XML文档中通过元素进行导航。
下面的路径表达式用于在"
文件中选取所有的title元素:
)/bookstore/book/title
(/bookstore选取bookstore元素,/book选取bookstore元素下的所有book元素,而/title选取每个book元素下的所有title元素)
上面的XQuery可提取以下数据:
谓语
XQuery使用谓语来限定从XML文档所提取的数据。
下面的谓语用于选取bookstore元素下的所有book元素,并且所选取的book元素下的price元素的值必须小于30:
)/bookstore/book[price<
30]
上面的XQuery可提取到下面的数据:
XQueryFLWOR表达式
XML实例文档
我们将在下面的例子中使用这个"
文档(与上一节中的XML文件相同)。
如果使用FLWOR从"
选取节点
请看下面这个路径表达式:
)/bookstore/book[price>
30]/title
上面这个表达式可选取bookstore元素下的book元素下所有的title元素,并且其中的price元素的值必须大于30。
下面这个FLWOR表达式所选取的数据和上面的路径表达式是相同的:
for$xindoc("
)/bookstore/book
where$x/price>
30
return$x/title
结果是:
通过FLWOR,您可以对结果进行排序:
orderby$x/title
FLWOR是"
For,Let,Where,Orderby,Return"
的只取首字母缩写。
for语句把bookstore元素下的所有book元素提取到名为$x的变量中。
where语句选取了price元素值大于30的book元素。
orderby语句定义了排序次序。
将根据title元素进行排序。
return语句规定返回什么内容。
在此返回的是title元素。
上面的XQuery表达式的结果:
XQueryFLWOR+HTML
文档(与上一节中的文件相同)。
在一个HTML列表中提交结果
请看下面的XQueryFLWOR表达式:
orderby$x
return$x
上面的表达式会选取bookstore元素下的book元素下的所有title元素,并以字母顺序返回title元素。
现在,我们希望使用HTML列表列出我们的书店中所有的书目。
我们向FLWOR表达式添加<
ul>
和<
li>
标签:
{
return<
{$x}<
/li>
}
/ul>
以上代码的结果:
现在我们希望去除title元素,而仅仅显示title元素内的数据。
{data($x)}<
结果将是一个HTML列表:
XQuery术语
在XQuery中,有七种节点:
元素、属性、文本、命名空间、处理指令、注释、以及文档节点(或称为根节点)。
节点
元素、属性、文本、命名空间、处理指令、注释、以及文档(根)节点。
XML文档是被作为节点树来对待的。
树的根被称为文档节点或者根节点。
请看下面的XML文档:
book>
上面的XML文档中的节点例子:
(documentnode)
(elementnode)
lang="
(attributenode)
基本值(或称原子值,Atomicvalue)
基本值是无父或无子的节点。
基本值的例子:
JK.Rowling
项目
项目是基本值或者节点。
节点关系
父(Parent)
每个元素以及属性都有一个父。
在下面的例子中,book元素是title、author、year以及price元素的父:
title>
子(Children)
节点元素可有零个、一个或多个子。
在下面的例子中,title、author、year以及price元素都是book元素的子:
同胞(Sibling)
拥有相同的父的节点。
在下面的例子中,title、author、year以及price元素都是同胞:
先辈(Ancestor)
某节点的父、父的父,等等。
在下面的例子中,title元素的先辈是book元素和bookstore元素:
后代(Descendant)
某个节点的子,子的子,等等。
在下面的例子中,bookstore的后代是book、title、author、year以及price元素:
XQuery语法
XQuery对大小写敏感,XQuery的元素、属性以及变量必须是合法的XML名称。
XQuery的基础语法规则:
一些基本的语法规则:
∙XQuery对大小写敏感
∙XQuery的元素、属性以及变量必须是合法的XML名称。
∙XQuery字符串值可使用单引号或双引号。
∙XQuery变量由“$”并跟随一个名称来进行定义,举例,$bookstore
∙XQuery注释被(:
和:
)分割,举例,(:
XQuery注释:
XQuery条件表达式
If-Then-Else"
可以在XQuery中使用。
请看下面的例子:
returnif($x/@category="
then<
child>
{data($x/title)}<
/child>
else<
adult>
/adult>
请注意"
的语法:
if表达式后的圆括号是必需的。
else也是必需的,不过仅仅写“else()”也是可以的。
上面的例子的结果:
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文件相同)。
向结果添加元素和属性
正如在前面一节看到的,我们可以在结果中引用输入文件中的元素和属性:
上面的XQuery表达式会在结果中引用title元素和lang属性,就像这样:
以上XQuery表达式返回title元素的方式和它们在输入文档中被描述的方式的相同的。
现在我们要向结果添加我们自己的元素和属性!
添加HTML元素和文本
现在,我们要向结果添加HTML元素。
我们会把结果放在一个HTML列表中-Now,wewanttoaddsomeHTMLelementstotheresult.WewillputtheresultinanHTMLlist-togetherwithsometext:
html>
body>
h1>
Bookstore<
/h1>
{data($x/title)}.Category:
{data($x/@category)}<
/body>
/html>
以上XQuery表达式会生成下面的结果:
EverydayItalian.Category:
COOKING<
HarryPotter.Category:
CHILDREN<
LearningXML.Category:
WEB<
XQueryKickStart.Category:
向HTML元素添加属性
接下来,我们要把category属性作为HTML列表中的class属性来使用:
liclass="
{data($x/@category)}"
上面的XQuery表达式可生成以下结果:
XQuery选择和过滤
选择和过滤元素
正如在前面的章节看到的,我们使用路径表达式或FLWOR表达式来选去和过滤元素。
请看下面的FLWOR表达式:
for
(可选)向每个由in表达式返回的项目捆绑一个变量
let
(可选)
where
(可选)设定一个条件
orderby
(可选)设定结果的排列顺序
return
规定在结果中返回的内容
for语句
for语句可将变量捆绑到由in表达式返回的每个项目。
for可产生迭代。
在同一个FLWOR表达式中可存在多重for语句。
如需在一个for语句中循环指定的次数,您可使用关键词to:
for$xin(1to5)
test>
/test>
结果:
1<
2<
3<
4<
5<
关键词at可被用来计算迭代:
for$xat$iindoc("
{$i}.{data($x)}<
1.EverydayItalian<
/book
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XQuery 教程