XQuery学习Word格式文档下载.docx

上传人:b****6 文档编号:19437344 上传时间:2023-01-06 格式:DOCX 页数:12 大小:19.98KB
下载 相关 举报
XQuery学习Word格式文档下载.docx_第1页
第1页 / 共12页
XQuery学习Word格式文档下载.docx_第2页
第2页 / 共12页
XQuery学习Word格式文档下载.docx_第3页
第3页 / 共12页
XQuery学习Word格式文档下载.docx_第4页
第4页 / 共12页
XQuery学习Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

XQuery学习Word格式文档下载.docx

《XQuery学习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《XQuery学习Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

XQuery学习Word格式文档下载.docx

/book>

/bookstore>

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<

child>

{data($x/title)}<

/child>

else<

adult>

/adult>

结果

EverydayItalian<

LearningXML<

XQueryKickStart<

XQuery选择和过滤

FLWOR表达式:

(F-ForL-letW-whereO-OrderRreturn)

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<

test>

{$x}<

/test>

结果:

1<

2<

3<

4<

5<

关键词at 

可用于计算迭代:

for$xat$iindoc("

)/bookstore/book/title

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

1.EverydayItalian<

2.HarryPotter<

3.XQueryKickStart<

4.LearningXML<

在for语句中同样允许多个in表达式。

请使用逗号来分割每一个in表达式:

for$xin(10,20),$yin(100,200)

x={$x}andy={$y}<

x=10andy=100<

x=10andy=200<

x=20andy=100<

x=20andy=200<

let语句

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

let语句不会导致迭代。

let$x:

=(1to5)

12345<

where语句

where语句用于为结果设定一个或多个条件(criteria)。

30and$x/price<

100

orderby语句

orderby语句用于规定结果的排序次序。

此处,我们要根据category和title来对结果进行排序:

orderby$x/@category,$x/title

return语句

return语句规定要返回的内容。

XQuery函数

XQuery含有超过100个内建的函数

XQuery函数命名空间的URI:

http:

//www.w3.org/2005/02/xpath-functions

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

函数调用实例

函数调用可与表达式一同使用。

请看下面的例子:

例1:

在元素中

name>

{uppercase($booktitle)}<

/name>

例2:

在路径表达式的谓语中

doc("

)/bookstore/book[substring(title,1,5)='

Harry'

]

例3:

在let语句中

let$name:

=(substring($booktitle,1,4))

XQuery用户定义函数

如果找不到所需的XQuery函数,你可编写自己的函数。

可在查询中或独立的库中定义用户自定义函数。

语法

declarefunction前缀:

函数名($参数AS数据类型)

AS返回的数据类型

{

(:

...函数代码...:

};

关于用户自定义函数的注释:

∙请使用declarefunction关键词

∙函数名须使用前缀

∙参数的数据类型通常与在XMLSchema中定义的数据类型一致

∙函数主体须被花括号包围

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

declarefunctionlocal:

minPrice(

$priceasxs:

decimal?

$discountasxs:

ASxs:

let$disc:

=($price*$discount)div100

return($price-$disc)

Belowisanexampleofhowtocallthefunctionabove:

minPrice>

{local:

minPrice($book/price,$book/discount)}<

/minPrice>

XQuery构建在XPath表达式之上。

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

2.XPath学习

Xpath语法

XPath使用路径表达式来选取XML文档中的节点或节点集。

节点是通过沿着路径(path)或者步(steps)来选取的。

选取节点

XPath使用路径表达式在XML文档中选取节点。

节点是通过沿着路径或者step来选取的。

列出了最有用的路径表达式:

表达式

描述

nodename

选取此节点的所有子节点

/

从根节点选取

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

.

选取当前节点

..

选取当前节点的父节点

@

选取属性

实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式

bookstore

选取bookstore元素的所有子节点

/bookstore

选取根元素bookstore

注释:

假如路径起始于正斜杠(/),则此路径始终代表到某元素的绝对路径!

bookstore/book

选取所有属于bookstore的子元素的book元素。

//book

选取所有book子元素,而不管它们在文档中的位置。

bookstore//book

选择所有属于bookstore元素的后代的book元素,而不管它们位于bookstore之下的什么位置。

//@lang

选取所有名为lang的属性。

谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

/bookstore/book[1]

选取属于bookstore子元素的第一个book元素。

/bookstore/book[last()]

选取属于bookstore子元素的最后一个book元素。

/bookstore/book[last()-1]

选取属于bookstore子元素的倒数第二个book元素。

/bookstore/book[position()<

3]

选取最前面的两个属于bookstore元素的子元素的book元素。

//title[@lang]

选取所有拥有名为lang的属性的title元素。

//title[@lang='

eng'

选取所有title元素,且这些元素拥有值为eng的lang属性。

/bookstore/book[price>

35.00]

选取所有bookstore元素的book元素,且其中的price元素的值须大于35.00。

35.00]/title

选取所有bookstore元素中的book元素的title元素,且其中的price元素的值须大于35.00。

选取未知节点

XPath通配符可用来选取未知的XML元素。

通配符

*

匹配任何元素节点

@*

匹配任何属性节点

node()

匹配任何类型的节点

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

/bookstore/*

//*

选取文档中的所有元素

//title[@*]

选取所有带有属性的title元素。

选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

//book/title|//book/price

选取所有book元素的title和price元素。

//title|//price

选取所有文档中的title和price元素。

/bookstore/book/title|//price

选取所有属于bookstore元素的book元素的title元素,以及文档中所有的price元素。

XML实例文档

我们将在下面的例子中使用此XML文档:

eng"

39.95<

XPath轴

轴可定义某个相对于当前节点的节点集。

轴名称

ancestor

选取当前节点的所有先辈(父、祖父等)

ancestor-or-self

选取当前节点的所有先辈(父、祖父等)以及当前节点本身

attribute

选取当前节点的所有属性

child

选取当前节点的所有子元素。

descendant

选取当前节点的所有后代元素(子、孙等)。

descendant-or-self

选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

following

选取文档中当前节点的结束标签之后的所有节点。

namespace

选取当前节点的所有命名空间节点

parent

选取当前节点的父节点。

preceding

选取文档中当前节点的开始标签之前的所有节点。

preceding-sibling

选取当前节点之前的所有同级节点。

self

选取当前节点。

位置路径表达式

位置路径可以是绝对的,也可以是相对的。

绝对路径起始于正斜杠(/),而相对路径不会这样。

在两种情况中,位置路径均包括一个或多个步,每个步均被斜杠分割:

绝对位置路径:

/step/step/...

相对位置路径:

step/step/...

每个步均根据当前节点集之中的节点来进行计算。

步(step)包括:

轴(axis)

定义所选节点与当前节点之间的树关系

节点测试(node-test)

识别某个轴内部的节点

零个或者更多谓语(predicate)

更深入地提炼所选的节点集

步的语法:

轴名称:

:

节点测试[谓语]

例子

child:

book

选取所有属于当前节点的子元素的book节点

attribute:

lang

选取当前节点的lang属性

选取当前节点的所有子元素

text()

选取当前节点的所有文本子节点

选取当前节点的所有子节点

descendant:

选取当前节点的所有book后代

ancestor:

选择当前节点的所有book先辈

ancestor-or-self:

选取当前节点的所有book先辈以及当前节点(假如此节点是book节点的话)

*/child:

price

选取当前节点的所有price孙。

XPath无疑非常强大,但也有其局限性。

最突出的是,它很大程度上只适合静态数据。

换句话说,需要针对特定文档编写XPath查询,提供和元素、属性、文本比较的具体数据来使用谓词和XPath。

此外,XPath也没有任何控制结构(如if/else语句),除了简单的比较外也不能执行任何处理。

selectT.segment_name,t.bytes/1024/1024total_sizefromuser_segmentstwheret.segment_name='

EMRTEST'

3100个记录0.3125MB物理空间

OracleXMLDB相关函数

extractValue()http:

//www.adp-gmbh.ch/ora/sql/extractvalue.html

existsNode()http:

//www.adp-gmbh.ch/ora/sql/existsnode.html

XMLQuery

XMLTable

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

当前位置:首页 > 表格模板 > 合同协议

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

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