XQuery查询语言及应用实例
结合重写与数据并行的XQuery查询优化

XQu r 语 言 层 的重写 , ey 获得 尽 可能 接近 单 一查 询 块 的形 式 , 以便 进 一 步 生成 优 化 的查 询 计 划[ . 伟 等 3廖 ] 人 给 出 X ey集成 系统 的查 询分 解优 化方 法 , Qu r 通过 X ey 询 重写 实 现 , 且 引 入 了新 的语 法元 素 以 Qu r 查 并 表 达针 对 数据 源 的操作 , 该法 用 于提 高 多数据 源分 布 式查 询 的性 能 l . 4 另一 方 面 , 行化 措 施 是 提升 系 统 ] 并
该 程序 主体是 F W 0R框架 , L 带有 两个 fr o 子句分 别对 两个 数 据源 的 X ah轴操 作 结果 序 列进 行 变 Pt 量 迭代绑 定 , 这部 分可视 为数 据获取 操作 ; ee子句 内包含 多个过 滤 条件 , wh r 以及连 接操 作 ;eun子句 通 rtr
・
7 ・ 6
陕西 科 技 大学 学 报
第2 9卷
织X ML数据 输 出. Qur X ey中最重 要 的语法结 构是 F WOR语 句 , 表达式 语法 [ 定义 形如 F WOR x L 其 1 ] L E—
p : ( o C a s L t lu e +Wh rC a s?OreB C a s ?”eu n x rige 对应 的语 法组 成 r: 一 F r lu el eC a s) ee lu e d r y lu e rt r ”E p Sn l.
过 轴操 作对变 量进 行投影 , 完 成 X 并 ML节 点构 造 并 返 回. ee 句 和 rt r wh r 子 eu n子 句 完成 查 询 的关 键 工 作, 往往 是耗 时最 多的地 方 , 效率 受前级 数据 获取 量 的影 响 , 其 因此有 必要 通过查 询重 写进行 优化 .
XML查询语言XQuery扩展研究

① 用 B F表述基本语法。下面是一个简单 的 B F 它描述了一 N N , 1 Qu r 状 及前 景 X ey现 X u r 是一种发展得非常慎重 的 W3 Qe y C标准 , 因而 演化得 比较 种语言 D mon , e u g 该语 言仅 由两个只对整数进行运算的算术运算符 缓 慢 , Q e 也 因 此 而 闻 名 。造 成 这种 现 象 的 一 个 主 要 原 因就 是 , 构成 : X u ̄ 对 于 如何 获 得 以 X ML形 式 存 储 的 信 息 , 没 有什 么经 验 X u ̄ 低 还 Qe itgri r :=0— 9 neeLt a :[ 6l ] 该语 法 中 的每 条 规 则 都 是 一 个 生 成 式 , 目前 为 止 , 没 什 么证 据 能 表 明 X 到 还 ML 格 式 的数 据 存 储 能够 成 为将 关 系型 数 据 存 储 拉 下 马 的通 用 技 术 。 字 , 边 是 语 法 描 述 。 一 条语 句 表 明 了该 语 言 有效 表 达 式 的构 成 : 右 第 随着 X ML在 各 个 领 域 越 来 越 广 泛 和 深 入 的 应 用 ,立 足 于 广 泛 是 一 个 整 数 值 ,或 者 一 个 整 数 值 后 以 加号 或 减 号 连 接 另 一 个 整 数 第 那 适应于多种类型 的 X ML数 据 源 的查 询 语 言 X ur 规 范 草 案 也 进 值 ; 二 条 语 句 描 述 了 整 数 值 的构 成 : 是 一 个 或 者 多 个 数 字 的 连 Qe y 入最后提交状态 , 有望成为 W3 C的推荐标 准 , 有关 X 在 ML的查 询 续序 列 。 照 这 种 语 法 , 个 整 数 ”2 是 有效 的 , 达 式 “2 1也 是 按 单 4” 表 4+” 和全文检 索领 域起 到关键作用 。与传统 的 X a 1 Pt . h 0表达 式相 比, 有效 的 。 X ur Qe y是一种更方便 的访 问 X ML信息的方法。它包括更强大的类 解析器 的主要工作之一就是检验输入表达式的有效性 , 解析器 如 果在 扫 描 时发 现 了除 这 里 描 述 的 三 个 记 号 ( 加号 、 号 和 整 数 ) 减 外 型检查 、 数据 操作 函数和从节点集到序列 的根本变化。 2 X ey扩展 的意 义 Qu r 的任何其 它记号 , 则认 为它正在扫描 的表达式是无效 的。 在 对 X u ̄ 现 状 分析 中可 以看 出 , 种 X u r 现在 功 能 上 Qe 各 Q ey实 ②从 B F到 JvC 。JaC N aa C va C使用称为. 的文件 , 文件中 的 j j 该 或 多 或少 都 有 所 扩展 ,有 的是 为 了处理 传 统 数 据 及 数 据 库 信 息 , 比 语 法描 述 使 用 类似 B F的表 示 法编 写 ,所 以从 一 种 形 式 转 换 到 另 N 如 对 S L的支 持 : 的是 面 向 w b 比如 作 为 一 种 服 务 器 端 脚 本 语 种 形 式 比较 容 易 。 下 面 是 编码 法 的完 整 .v 本 : Q 有 e, j a脚 a P RE A S R— B G N P re_ ) E I ( asr 1 言等 。本节讨论文档集合 的概念 以及为之扩展 X ur Q ey的可能性。 Pa k g e a l l se m H e l e a e x n P e .xa 21全文检 索 X ur . Q ey规范组已经增加 了对全文检 索和 查询 的 支 持 ,这 是 对 XQ e ur X a y和 P t 功 能 扩 展 , ML文档 可 能 包 含 高 h的 X P bi ls asr e{ u leas rew l c P } P ARS ER— E ND( as r 1 P re — ) 度结构化的数据 、 非结构化数据和半结构化数据。 当一个文档包含 非结构化或者半结构化数据时 , 能够使用像全文检 索这样情报检 索 vidm L n ( : { t eLt rl ) o e o a g )f i e ri已 a( d }n g 技术 显 得 非 常 重 要 。 随着 X ML成 为 主 流 , 户期 待 能 以 X 用 ML格 式 (t ”’ ”主 neeLtr 【 ) E F l (+ 1一 ) t ri a )? o > I ’ g el < 存 储 并 检 索他 们 的文 档 。 这 需 要 一 个 标 准 的 方式 来 对 X ML文档 做 vii eeLt a( : oe t}= IT o n grirl ){ kn ;t<N > dt e T { 全文检索 , 以及结构化检 索。 fy t o t r t ( it e= + . a e :】 S s m. . i l ” e r ” tm g ) l e u P nn n g - i 22X . ML文 档 与 文 档 集 合 XM L文 档 的 节 点 结 构 本 身 是 树 状 s 工 P: …l\ !” �
一种有效的XQuery更新操作

</ o k> bo <b o e = ” 9 4”> o ky a r 19
<tte>TCP I Il s ae i l / l P lu t td</td r i e>
释。本文 中, 为了简单起见 , 我们 只考虑元素 , 属性 和文本节点。举个例子 , 图一显示了下面 x l m 文档
中元素所组成的树的一部分。下面的 x l m 文档是 由 用例“ M ”6中抽取出来的, X P[ 本文中的所有例子均 来自 这个元素 , 它的根节点被绑定到变量 ¥b 上。 i b
Ke od : ML X ur;e atsU dt bok yw rsX ; Q e Sm ni ;p a l y c e c
1 引 言
X ur[是一种处理大量 X L文档的功能性 Qe 3 y1 M 语言 , 它是依据对 X a l 和 X ur 通用 的数据模 Pt 4 h Qe y
isr d rpae rd l e .T i pp rpee t smen w tog t frX ur p a co igt net , e lcdo e t e e d hs a e rsn o e u h Q eyu d t acr n o s h so e d
<b b> i
<b ky a = ” 9 9 o er 1 9 ”> <t e>T eE o o c f e h n o tn r… i l t h c n miso T c .a dC ne t o f </ ie> t d
<e i r dt > o <l s >G r a g< l s > <f s >Da c at e b r / at i t r r y</ rt i f > s <a i ai n>C T 珏l t i o I I</ l t n> 施 i i ao </ d tr> ei o < p b ih r > Khw r ul e s e Ac d mi a e c u l h r </ P b i e s s
面向半结构化数据的数据库查询与操作

面向半结构化数据的数据库查询与操作近年来,随着科技的不断发展,大数据的快速增长成为了一种世界性的趋势。
随着数据量的不断增加,传统的关系型数据库在处理半结构化数据时遇到了很多挑战。
为了解决这个问题,面向半结构化数据的数据库查询与操作成为了一个热门的话题。
在过去,关系型数据库主要用于处理结构化数据,这些数据具有严格的模式和明确定义的模式。
然而,在当今的信息时代,大量的数据存在于半结构化形式,这些数据并不遵循传统的严格结构。
在这样的情况下,半结构化数据成为了一个非常具有挑战性的问题。
半结构化数据是指那些没有固定模式且不适合传统关系数据库的数据。
它们通常以文本、图像、音频或视频等形式存在,其结构和语义是动态和非确定性的。
与之相比,关系型数据库具有固定的模式和顺序,要么符合预定义的模式,要么不被存储。
因此,传统的关系型数据库并不适合处理半结构化数据。
为了解决这个问题,研究人员和工程师们提出了一系列面向半结构化数据的数据库查询与操作方法。
这些方法可以帮助用户更有效地管理和利用半结构化数据。
下面将介绍几种普遍使用的方法。
首先,XPath和XQuery是两个非常重要的查询语言,用于半结构化数据的查询和分析。
XPath是一个用于选择XML文档中节点的语言,而XQuery是用于在XML数据上进行复杂查询和转换的标准。
这两种方法能够在半结构化数据中精确地查找所需的信息,并支持复杂的过滤和计算。
另外,面向半结构化数据的数据库系统还可以采用基于图形的存储和查询技术。
图形数据库可以在数据之间建立关系,并通过图的遍历和索引技术进行高效的查询和操作。
它们不仅可以处理半结构化数据,还可以处理复杂的关系和网络数据。
此外,自然语言处理(NLP)技术在半结构化数据的分析和查询中起到了重要的作用。
NLP技术可以将自然语言转化为结构化查询语言,实现用户与数据的无缝交互。
例如,通过使用语义解析技术,可以将用户的自然语言查询转化为数据库查询语句,并准确地返回所需的结果。
数据库中半结构化数据的存储与查询技术

数据库中半结构化数据的存储与查询技术随着互联网和大数据时代的到来,半结构化数据的存储和查询变得越来越重要。
半结构化数据是一种介于结构化数据和非结构化数据之间的数据形式,它在结构上没有明确定义的模式,但又具有一定的结构特征。
在数据库中存储和查询半结构化数据,需要采用特定的技术和方法。
一、半结构化数据的存储在数据库中存储半结构化数据,最常用的方法是使用XML(可扩展标记语言)或JSON(JavaScript对象表示法)格式。
XML是一种通用的数据交换格式,具有良好的可读性和可扩展性。
JSON是一种轻量级的数据交换格式,常用于Web应用程序中。
这两种格式都可以用来存储半结构化数据,并且在数据库中有相应的支持和优化。
在存储半结构化数据时,数据库可以使用文档型数据库(如MongoDB)或图数据库(如Neo4j)。
文档型数据库适合存储和查询具有层次结构的数据,而图数据库则适合存储和查询具有复杂关系的数据。
这些数据库提供了灵活的数据模型和查询语言,能够有效地存储和查询半结构化数据。
此外,还可以使用关系型数据库来存储半结构化数据,但需要对数据进行适当的转换和规范化。
可以将半结构化数据转换为关系型数据模式,并使用表格来存储数据。
这种方法可以利用关系型数据库的成熟性和稳定性,但在存储和查询半结构化数据时可能会存在一定的性能问题。
二、半结构化数据的查询在数据库中查询半结构化数据,需要使用特定的查询语言和技术。
对于XML格式的数据,可以使用XPath或XQuery进行查询。
XPath是一种用于在XML文档中定位节点的语言,可以通过路径表达式来查询数据。
XQuery是一种用于查询和转换XML数据的标准语言,具有强大的查询和处理能力。
对于JSON格式的数据,可以使用JSONPath或JSONiq进行查询。
JSONPath是一种类似于XPath的查询语言,用于在JSON文档中定位和提取数据。
JSONiq是一种基于XPath的查询语言,专门用于查询和转换JSON数据。
基于XQuery的XML查询

现 查 询 .将 业 务逻 辑 与 数 据 处 理 分 割 开 来 ,层 次 清 晰 。 由 于 11 询 的 通用 性 .查 Q ey 很 所 M X ML数 据 已 经 深入 各个 行 业 . 盖 大 多 数 的 领 域 。纵 观 广 X u r 本 身 是新 生 的查 询 语 言 , 多 用 户 并 不 熟 悉 . 以 X L 覆 泛 存 在 的各 种 不 同 的 X ML应 用 . ML查 询 问 题 是 个 普 遍 存 在 查 询 中 特 别设 计 了一个 查 询 语 句构 造 器 . 助 生 成 查询 语 句 X 帮 的 问题 。X ur 本 身 就 是 一 个通 用 的 X L查询 语 言 , 不 是 为 在 设 计 过 程 中 , Q ey M 并 借鉴 了参 考文 献 4 5中 的一 些 思 想 。 是 由 于文 、 但
层 数据 进 行 索 引 . ML查 询 由 于 X 1日益 成 为 It t 数 据 交 换 的标 准, 而 人 们 图 21通 用 X ML ne me 上 因 下 面 介 绍 图 中每 一 层 的含 义 。 需 要 一 种 能够 方 便 交 换 X ML数 据 的手 段 。X ML具 有 自描 述 性
维普资讯
期 0 6年 1
基 于 X ey的 X L查询 Qu r M
齐 金 山
( 阴 师 范 学 院 , 苏 淮安 2 3 0 ) 淮 江 2 0 1
query命令 使用

query命令使用query命令是一种在数据库中执行特定操作的命令。
它是结构化查询语言(SQL)的重要组成部分,被广泛用于与关系型数据库进行交互。
query命令可以用于检索数据、更新数据、删除数据和插入数据等。
查询语句由多个子句组成,包括SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY等。
下面将详细介绍每个子句和其相关用法。
1. SELECT子句:用于指定要返回的列,可以使用*代表所有列,也可以指定具体的列名。
例如:SELECT * FROM 表名;SELECT 列名1, 列名2 FROM 表名;2. FROM子句:用于指定查询的数据源,即要从哪个表中检索数据。
例如:SELECT 列名 FROM 表名;3. WHERE子句:用于指定查询的条件,可以使用运算符(>,<,=)和逻辑运算符(AND, OR, NOT)进行条件过滤。
例如:SELECT 列名 FROM 表名 WHERE 列名 = 值;4. GROUP BY子句:用于对查询结果进行分组。
例如:SELECT 列名 FROM 表名 GROUP BY 列名;5. HAVING子句:用于对分组后的结果进行条件过滤。
例如: SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 列名 > 值;6. ORDER BY子句:用于对查询结果进行排序。
可以指定升序(ASC)或降序(DESC)。
例如:SELECT 列名 FROM 表名 ORDER BY 列名 ASC;SELECT 列名 FROM 表名 ORDER BY 列名 DESC;除了上述基本的子句,query命令还支持一些特定的函数,用于进行计算、格式转换和聚合操作等。
常见的函数包括SUM、COUNT、AVG、MIN和MAX等。
query命令的灵活性使其可以应用于各种实际场景,例如统计销售额、分析用户行为、生成报表等。
可以根据具体需求编写query命令,以实现数据的快速查询和分析。
XQuery实现XML高效查询研究

关 系并规 定 了 X ML文件 的逻辑 结构 ; S X L使 数据 与其 表 现形 式 相互 独 立 ; L描 述 了资源 之 间如何 链 接 , XL
可 以从不 同 的方 向进行遍 历 , 并可 将链 接存 储在 独立 于 引用 文档 的数 据库 中. W3 C为 XML制 定 了三个 技术 规范 [ : L X L Trn fr t n )D0M ( o u n jc Mo e) 1 XS T( S a somai s 、 ] o D c me t0be t d 1 和 X ah XML P t a g a e , 中 XS T 的作 用 是将某 种 结构 的 X P t( ahL n u g ) 其 L ML文件 转换 为 另一种 结 构 的 XML
二 代 We b应 用 的基础 , 得 了业 界所 有 大 型公 司 ( I M 及 微软 等 ) 获 如 B 的全 面支 持 . ML允 许信 息 提 供 者根 X 据需 要 自行 定义标 记及 属性 名 , 良好 的数据 存储 格式 及可 扩展 性使 之迅 速得 到 了广 泛 的应用 . 其
Jn 2o u・ O7
X ey实现 X Qu r ML高效 查询研 究
李 敬 秀 钱 萍
( . 江 高 等 专 科 学校 电 子 与 信 息 系 , 苏 镇 江 2 2 0 ; . 苏 科 技 大 学 , 苏 镇 江 2 2 0 ) 1镇 江 1 0 32 江 江 10 3 )
[ 要 ] 当 愈 来 愈 多 的 数 据 资 料 以 XM L 为 标 准 格 式 进 行 存 储 时 , 于 其 格 式 的 不 同 而 导 致 摘 由
传 统 的 数 据 库 及 查 询 语 法 无 法 适 用 , 章 分 析 了 一 种 全 新 的 XM L
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XQuery查询语言及应用实例分析本文介绍了XQuery查询语言的主要特性,并通过实例讨论了XQuery语言在数据查询、转换等方面的应用。
引言XML已经成为事实上的数据表示和数据交换的标准。
开始,它的自描述和特定可扩展性等核心特性提供了不同应用程序之间消息传输所需的灵活性。
特别是随着近年来Web Service的蓬勃发展,XML越来越多地活跃在数据交换和存储领域,用XML表示的半结构化数据越来越普遍,在B2B电子商务行业中尤其明显。
面对XML数据量的指数级的增长,必然要求更有效的数据管理能力和更快、更精确的查询。
因此,如何从XML 数据源中准确有效地查询所需信息,也就变得越来越重要。
一、XQuery概述XQuery工作组于1999年9月正式成立,其任务是创建一种灵活的查询语言以便从XML文档中抽取数据。
目前W3C所公布的最新XQuery草案是2003年11月12日的版本,它还在不断的修订和完善之中[1]。
作为一种新型的查询语言,XQuery汲取了其它多种查询语言的优点,适用于各种类型的XML数据源的查询,不仅查询功能强大,而且简洁灵活且易于实现。
而且,XQuery还具有从多种数据库中检索信息的特点,它能对各种数据和文档进行查询。
XQuery构建在XPath规范之上,其核心是能够通过XPath表达式从文档选择特殊的节点序列。
XQuery是一种将查询表示成表达式的功能语言。
通过它所支持的多种表达式,它的查询可以有各种不同的形式。
各种XQuery表达式可以完全嵌套,也支持子查询。
目前,数据库业界的三大主流厂商Oracle、IBM、Microsoft都已经在各自的产品中提供了对XQuery规范的支持。
二、XQuery及其应用实例1.查询应用XQuery具有强大的查询和检索功能,它通过各种由关键字、符号、操作数构成的表达式完成查询,其表达式的操作对象可以又是另一个表达式。
作为一种函数语言,它还允许各种表达式进行相互嵌套。
同时它也是一种对数据类型有要求严格的语言,表达式中的操作数,运算符和函数都必须是指定的类型[2]。
首先来看一个表述书籍信息的XML文档bib.xml的例子。
1.1 XPathXPath是一种能在XML文档中查找定位信息的语言,它能从XML文件中抽取单个项目或一组项目。
XPath 类似于平时我们在计算机系统中使用的文件路径,就像我们熟知的C:\ WINNT 那样。
通过XPath路径表达式,可以在XML文档中轻松地定位数据,确定节点。
比如下面这个基本类型的XPath表达式(对应上面的XML 文档):/bib/vendor/@id。
这个表达式从文档根开始,选择所有bib子元素,然后选择bib的所有vendor子元素,最后选择vendor子元素的所有id属性。
当然,XPath表达式所提供的能力远远超过用这条简单语句所做的工作。
使用XPath可在XML层次结构中快速定位和提取信息,它的内建函数提供了全面的功能,可以方便的处理数值及文本数据。
下面列举一些典型的XPath路径表达式:(用“/”路径开始代表元素的绝对路径)当然,XPath还能实现很多其他的功能,具体请参看W3C的XPath规范[3]。
1.2 FLWR表达式XQuery 中最强大的特性是FLWR 表达式(发音为flower),它是一种典型的能够完成具有某种实际意义的查询的表达式。
FLWR表达式包含模式匹配、过滤选择和结果构造这三种操作。
FLWR 语句是XQuery 所具有的最接近于SQL 的语句。
使用FLWR 语句,可以用比XPath 1.0 语句更自然的方法来创建特定的查询。
[5]FLWR表达式是由FOR—LET—WHERE—RETURN四个关键字定义的子句构成的,在最新的标准中则更新为FLWOR,O代表新加入的Order by子句。
FLWOR表达式分别代表FOR—LET—WHERE—ORDER BY— RETURN 的首字母缩略词。
由此组成的FLWOR 表达式可以完成很多在XSLT中难以完成的任务。
它支持迭代并且可以把变量绑定到中间结果。
对两个或多个文档进行连接和重构数据时这种表达式非常有用。
每个FLWOR 表达式都有一个或多个for 子句、一个或多个let 子句、一个可选的where 子句、一个order by子句以及一个return 子句。
FOR 子句通过将节点绑定到变量,以便继续去循环遍历序列中的每一个节点;let 子句为一个变量赋一个值或一个序列;return 子句定义每个元组要返回的内容;对于where子句,如果其有效布尔值为真,那么该元组就被保留,并且它的变量绑定用在return子句中,如果其有效布尔值为假,那么该元组就被废弃。
下面是一个简单例子:下面是一个简单例子:此例没有用到let语句,它只是可选的。
要注意的是,变量都是以符号$开头的,这些变量被绑定到不同的节点序列,然后通过语句进行传递。
花括号{}代表输出信息,以及要进行求值的信息。
可以看出,FLWOR表达式是一个有多种变化的表达式类型,它可以生成大量不同的查询实例。
“return”关键字后面的操作项本身可以被另一个FLWOR 表达式替代,可以不断将FLWOR 表达式首尾相接,使XQuery具有非常丰富的表达能力。
其查询结果为:1.3 其他功能除路径表达式和FLWR表达式之外,XQuery还有5种基本的表达式模式:元素构造符、算子和函数表达式、条件表达式、限定表达式、列表构造符、数据类型表达式[4]。
通过它们的多种组合,可以产生具有丰富而强大的查询检索功能的查询语句。
下面是一个使用了算术运算符…+‟的实例:查询结果如下:在查询语句中,还可以使用if …then…else…这样的选择结构,比如下例:查询结果如下:2.转换应用在进行应用集成时,某个领域的应用可以使用多种词汇表,如果这些应用之间要进行交互,包括数据的交换,那么针对不同词汇表对XML文档进行转换就很有必要了。
这时XQuery就能很好的适应需求,因为它具有很多类似XSLT的从潜在的异构数据源中转换数据的功能。
下面我们来看一个利用XQuery实现文档转换的例子,它能将XML文档的属性转换为元素显示。
这是一个作为输入的原XML文档,它描述了订单项目。
下面是实现转换功能所用到的Xquery语句。
它只是简单的改变原文档的结构,加上了一些元素。
转换后的结果如下:在本例中,当使用XML数据的多个应用采用了不同的词汇表,简化地考虑问题,当它们采用了不同的DTD (Schema)时,很可能出现这种情况,由于不同的应用基于不同的实际考虑,就会在用XML表述某些特征时将DTD(Schema)设计为自由选择使用元素或属性。
这就涉及到了文档的转换。
当然,在实际需求中,词汇表之间的转换很可能比这个例子要复杂的多,但是从本例我们可以看出XQuery的强大转换功能足以表述大部分这样的需求。
因为XQuery有着非常灵活的构建结果树的机制,它在设计时已经考虑到了要利于结构转换,所以有些情况下用它做转换工作比用XSLT在实现语法上更简明。
3.更新应用虽然现在最新的XQuery 1.0标准草案中还暂不支持更新操作,但这方面的研究进展很快,一些Native XML数据库产品如Tamino、Ipedo都已在各自的产品中提供了更新的功能。
而且另一个组织XML:DB也提出了一种XUpdate语言草案。
显然,与SQL/XML可以方便的进行更新操作相比,XQuery在这方面还不完善。
这也正是目前XQuery与SQL/XML相比最明显的差距。
XQuery中还没有定义用于更新XML文档中元素的语法。
而SQL/XML的更新机制已经被定义了,也已被应用到Oracle和DB2中。
三、查询语言的比较从前面的例子,特别是FLWR结构,我们可以看出,XQuery 具有类似于SQL 的外观和能力,这是熟悉关系数据库的用户所欢迎的。
那么数据库界的SQL标准对于XML的查询需求有什么新的支持呢。
我们不妨来比较一下同为XML查询语言标准的SQL/XML和XQuery。
作为2003年12月提出的最新的SQL:2003标准中的一部分,SQL/XML基于关系查询语言的扩展,特别增加了对XML的支持。
虽然SQL/XML和XQuery都是XML的查询标准,但它们基于完全不同的模型,SQL/XML更适合关系模型,它能提供在已有SQL环境上的完全访问, 包括XQuery1.0标准中不准备提供的特性,比如更新和全文本查询。
另外,SQL/XML的优势还在于,数据库厂商在SQL的查询优化上已经积累了多年的经验。
可以说,SQL/XML提供了能从关系数据中创建XML同时又能很好的支持已有的SQL环境中关系数据的功能。
对仅仅基于关系数据的查询,SQL/XML和Xquery能达到类似的效果。
但是,它们对同一功能的实现机制可能是完全不同的,因为SQL/XML的操作介于SQL和XML之间,而XQuery则基于纯XML的范畴之上,它是从以XML为中心的角度上来考察问题的。
而XQuery最擅长处理“混合”文档,即同时包含叙述流和量化数据的文档。
因此,对于跨越关系数据库和其它XML数据源的查询,XQuery就显示出了更重要的优势。
目前看来它们是互补的。
SQL/XML和XQuery标准的制定者都希望在标准中加入对方的部分功能。
但从长期看,开发人员可能希望在他们的所有数据源上保持XML抽象。
在这种情况下,作为一种为处理复杂的数据而开发的丰富而全面的编程语言,XQuery可能将成为一种重要的标准。
四、总结现在,XQuery标准还在不断发展和完善,总的来说,我们认为,XQuery对只需处理XML数据或者需要同时处理XML和关系数据的XML程序员来说是最好的选择,但它同样有不足,而且相对成熟的SQL来说,它的技术支持和经验都要少一些。
我们能肯定,不管是SQL/XML还是XQuery都将会在XML查询中发挥重要的作用,而且,XQuery在通用的XML处理方面会成为重要的标准。
参考资料∙/XML/Query∙/TR/xquery∙/TR/xpath∙XQuery: A Guided Tour /news/whatsnew/xquerybook/index.ssp 2003.9。