




已阅读5页,还剩58页未读, 继续免费阅读
(计算机科学与技术专业论文)xquery数据更新扩展的实现技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
k 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名: 地一导师签名: 日期:加,d 。6 摘要 摘要 伴随着计算机技术、特别是网络技术的飞速发展,x m l 作为一种可扩展标 记语言,凭借其跨平台、可扩展的优势,被广泛地用于实现异构信息和异构平 台的数据交换和共享。为了标准化x m l 数据查询和处理,国际万维网组织 ( w 3 c ) 发展了x 语言,于2 0 0 7 年1 月将其作为x m l 数据查询语言标 准发布。在实际应用中,x q u e w 语言的应用正在从x 】l 数据查询逐步扩大到 各种w 曲应用软件开发。 x q u e w 是一个强大的函数式语言,可以对多种类型的x m l 数据源进行高 效的查询,但它却并不具备对x m l 数据进行更新的能力。目前为止,大多数 的x m l 应用都使用x m ld o c u m e n t0 i b j e c tm o d e l ( d o m ) 的应用程序接口来更 新x m l 数据,使代码的维护变得十分繁琐。 x q u e w 作为x m l 数据主流的查询语言,数据更新功能的缺乏,严重的限 制了它在更广泛领域的发展。为此,w 3 c lq u e 珂w o r k i n gg r o u p ,发布了 x q 咀e wu _ p d a t ef a c i l 时1 o 作为w 3 c 候选规范,对x q l u e r ) ,的更新语法和语义 做出了详细说明,提供了x q u e q 数据更新功能扩展的通用标准。 本文的研究,基于w 3 c 发布的候选推荐标准- x q r l l e 呵u p d a t ef a c i l i t y 1 o ,在一个面向异构数据源的x q u e 珂引擎上实现,给用户提供了一种统一的、 易于理解的查询语言,能够对集成x m l 数据和内存数据的异构数据源进行有 效更新。多种数据源的数据更新支持,尤其是x m l 内存数据的引入,极大的 丰富了x q u e f y 程序的用途,为日后x q u e r y 的并行程序设计中的共享数据处理 提供基础支撑。 关键词x m l ;x q u e r ) r ;数据更新;异构数据源 北京- t 业大学t 学硕士学位论文 i i a b s t r a c t a b s t r a c t w i t l ln l er 印i dd e v e l o p m e n to fc o m p u t e rt e c h n o l o g y ,e s p e c i a l l yt l l en e t w o r k t e c h n o l o g y ,x m l ( e x t e l l s i b l em a r k u pl 锄g u a g e ) h a sb e e nw i d d y u s e df o r i m p l e m t i n gd a _ t ae x c h a l l g ea i l ds h 撕n gb e 附e 朗h 曲湘g e n c o u sp l a t f o m s 硒m e a d v a l l t a g e so fc r o s s - p l a t f o 姗a n ds c a l a b i l i 够h lo r d e rt os t a i l d a r d i z et l l eq u e 巧锄d p r o c e s s i n go f ld a t a ,t 1 1 ew o d dw i d ew 曲c o n s o n i u m ( w 3 c ) h a sd e v e l o p e d x ( 沁e 巧l a n g u a g e ,w h i c hi sp u b l i s i 尉a sm es t a n d a r dq u e 巧l a l l g i l a g ef o rx m ld a t a i nj a l l u a 拶2 0 0 7 i np r a c t i c e ,h i 曲一p e r f o 姗锄c ex m ld a t ap r o c e s s i n gh 弱b e c o m e k e ys u p p o n i n gt e c h n o l o 百e sf o ri n t e m e t - b a s e dd i s t r i b u t e ds o m a r ea n d 印p l i c 撕o n s 1 1 1 ea p p l i c a t i o n so fx q u 叫盯eg r a d 砌l ye x t e i l d i n g 舶m 煳ld a t aq u e r yt o v a r i o u sl 【i n d so fw e ba p p l i c a t i o nd e v e l o p m 印t x ( 舢e 巧i sap o w e 向l 矗m c t i o n a l1 a i l g u a g e ,删c hc 锄q u a 叮v 撕o u st y p e so f ld a t as o u r c e se 伍c i e n t l y h o w e v n l e r ei sn om e c h a j l i s mt ou p d a t ex m ld a t a i i lx q u e s of 弛m o s t 订l 印p l i c a t i o n sa r eu s i n gt l l ex m ld o c u m e n to b j e c t m o d e l ( d o m ) 刚t 0u p d a t ex m ld a t a t h u s ,t l l ec o d eb e c o m e sv e r ) ,c u m b e r s o m et 0 m a i n t a i n x 咖a s am a j o rx m l p r o c e s s i n gl a n g u a g e ,l ea b s e l l c eo fu p d a t i n g 劬砸o n s 商o u s l yl i l l l i t i t sd e v e l o p m e n ti i lt l l eb r o a d e rf i e l d c o n s i d 舐n gt t l e a b o v e r e q u i r e m e n t ,w 3 c lq u e 巧w b d d n gm u ph a sr e l e a s e daf e wd r a r sf o r e x t e l l d i n gx q u e r yw i mu p d a t ef e a t u r e ss i n c e2 0 0 6 a n dx q u e r yu p d a t ef a c i l i t y1 o h a sb e e np u b l i s h e d 嬲c a n d i d a t ei i lm a r c hl4 ,2 0 0 8 ,w h i c hs p e c m e sm es ) ,i l t a ) 【锄d s e m a l l t i c so fu p d a t e si nd e t a i la n dp r o v i d e sac o n l 】m o ns t a n d a r df o re x t e n d i n gx m l d a t au p d a t ef e a t l j r e si nx ( 沁e 拶e n 星曲e s t h er e s e a r c hf o re x t e i l d i n gx q u 叫w i m u p d a t ef e 栅e si l lt h i sd i s s e n a t i o ni s b a s e do nx q u e 珂u p d a t ef a c i l i t y1 o 眦i st h ec a i l d i d a t ep u b l i s h e db yw 3 c ,w l l i c h i s i m p l e m e i l t e di i l a l le x i s t e dx 伽e 巧e n 西n e o u r 印p r o a c hp r o v i d e sau 1 1 i 矗e d , 血e l l i 百b l eq u e r yl a i l g u a g ef o ru s e r s ,w 1 1 i c hc 柚e 伍c i e n t l yu p d a t eh e t e r o g e n e o u s d a t as o u r c e st 1 1 a ti 1 1 c l u d ex m l d a t a ,锄dm 锄。巧d a t a u p d a t i n gs u p p o r to fn m l t i p l e d a t as o u r c e s ,e s p e c i a l l yt h ei i l 们d u “o no f m e m o w d a t as o u r c eg r e a t l ye 耐c h e st h e u s eo fx i 孤e 吼p r o v i d e st l l ei n 矗a s m l c t u r ef o rt h ep r o c e s s i n go ft h es h a r e dd a t ai n p a r a l l e lp r o g r a m m i n gf o rx q u e 巧i nm e 血t u r e k e y w o r d sx m l ;x q u e 哆;d a t ai l p d a t e s ;h e t e r o g e n e o u sd a t as o u r c e s 北京工业大学t 学硕士学位论文 i v 目录 目录 摘要i a b s t r a c t iii 第1 章绪论1 1 1 课题背景1 1 2 研究意义2 1 3 相关研究及研究现状2 1 4 本文的研究工作3 1 5 课题来源4 1 6 本文的组织结构4 第2 章x q u e r y 和x q u e r y 数据更新功能5 2 1x m l 与x 伽e 巧一5 2 2x q u e r y 语言介绍5 2 2 1x q r l l e 巧的基本组成6 2 3x q u e 巧数据更新功能8 2 3 1 更新规范对x q u e 珂1 o 的扩展8 2 3 2 新增的x q u e 巧数据更新基本表达式8 2 3 3 对已有x q u e w 表达式的扩展一1 2 2 4 本章小结1 4 第3 章x o u e r y 数据更新功能扩展的设计与实现15 3 1 原x i 沁e 巧引擎的体系结构1 5 3 2 基于原x q u e 巧引擎的数据更新功能扩展分析设计1 6 3 3x q l u e 巧数据更新功能扩展的实现一l6 3 3 1 语法分析模块的扩展1 7 3 3 2 执行引擎的改造一1 9 3 3 3 数据更新原语函数一2 7 3 3 4 数据源的数据更新接口3 1 3 4 本章小结3 3 第4 章基于s c h e m a 的数据更新有效性检查3 5 4 1x m l s c h 锄a 对x m l 的描述3 5 4 2x m l 与x m l s c h e m a 的一致性规则3 5 4 - 3 应用一致性规则检测数据更新操作的有效性3 6 4 4 有效性检查在x q u e r y 数据更新功能扩展中的实现3 7 北京工业大学t 学硕士学位论文 4 4 1 合法性检验的实现流程3 7 4 4 2 合法性检验涉及的类设计说明3 7 4 5有效性检查示例3 9 4 6 本章小结4 0 第5 章系统测试4 1 5 1 测试环境4 1 5 2x m l 文档数据更新测试及分析一4 l 5 2 1 插入表达式案例4 1 5 2 2 删除表达式案例一4 1 5 2 3 替换表达式案例4 2 5 2 4 重命名表达式案例4 2 5 2 5 案例分析一4 2 5 3x m l 内存数据更新测试及分析4 2 5 3 1 插入表达式案例。4 2 5 3 2 删除表达式案例4 3 5 3 3 替换表达式案例一4 3 5 3 4 重命名表达式案例4 3 5 3 5 案例分析4 4 5 4 本章小结4 4 结论4 5 参考文献4 7 读硕士学位期间发表的学术论文5 1 致谢5 3 第1 章绪论 1 1 课题背景 第1 章绪论 x m l 近年来,为了应对越发灵活和复杂的应用需求,l 【1 】【2 1 作为一种可扩展标 记语言,凭借其跨平台、可扩展的优势,被广泛地用于实现异构信息和异构平台 的数据交换和数据共享。 l 是一项依赖于内容的技术,是当前处理结构化文档信息的有力工具。 它的设计宗旨是结构化、存储以及传输信息。与其他数据表现形式相比,它最大 的优点就是:简单易用。 与h t m l 相比,x m l 更注重数据本身,而非数据的显示。其纯文本的特性, 使得任意具备文本处理能力的软件或者程序都可以传送、接收和显示l 文档。 通过x m l ,用户可以定义自己的标签和文档结构,使数据的描述和格式具有了 更大的灵活性。 与数据库相比,x m l 的处理能力相对较弱,而且自身并不具备事务处理的 能力。但是对于小型数据而言,l 的效率优势就得以彰显了。同时,l 有 着较低的开发难度和与平台无关性,使得它在网络上的小数据量应用中备受青 睐。 x m ls c h e m a 垤ls c h e m a 是w 3 c 发布的,x m l 的许多模式描述语言之一。x m l 模式 描述了一组删l 文档必须遵从的规则,包括结构和模式的定义。只有符合对应 规则的x m l 文档才是合法( v 撕d ) 的。 与d t d ( d o c i 棚n e tt 弹ed e f i n i t i o n ) 相比,首先x m ls c h e m a 自身就是一 份格式良好的l 文档,实现了x m l 文档与其描述模式处理方式的一致性, 有利于数据的传输和交换。其次,x m ls c h e r i l a 支持更多的数据类型,并且可以 创建各种自定义数据类型,极大的增强了灵活性。此外,x m ls c h 锄a 还引入了 命名空间,从而提高了可重用性。作为一种强有力的标准,x m ls c h 锄a 逐步成 为x m l 模式的主流,已经是必然趋势。 x q u e r y x q u e 3 】【4 】【5 1 是国际万维网组织( w 3 c ) 于2 0 0 7 年1 月发布的x m l 数据查询 语言标准。简单来说,x q u e 巧和x m l 的关系,类似于s q l 和数据库表的关 系。x 伽e r y 被设计用来查询删l 数据【6 】( 不仅仅限于x m l 文件,还包括任 北京工业大学t 学硕士学位论文 何可以删l 形态呈现的数据,包括数据库) 。x q u e f y 构建在x p a l 表达式之 上,已经被所有主要的数据库引擎支持( i b m 、o r a c l e 、m i c r o s o r 等等) 。 本文的研究课题,就是基于w 3 c 发布的候选规范x q u e r yu p d a t ef a c i l 时 1 o ,在一个实现了x q u e 巧1 o 的x q u e 巧引擎上,进行数据更新功能扩展。给用 户提供了一种统一的、易于理解的查询处理语言,能够对集成x m l 数据和内存 数据的异构数据源进行有效更新。 1 2 研究意义 随着高性能的垤l 数据处理技术逐渐成为基于因特网的分布式软件及其应 用的主要支撑技术,作为国际标准的x m l 数据查询语言,x 舢e q 语言的应用正 在从l 数据查询逐步扩大到各种w 曲应用软件开发。 x q u e w 是一个强大的函数式语言,可以对多种类型的x m l 数据源进行高 效的查询,但它却并不具备对x m l 数据进行更新【7 】的能力。大多数的l 应 用都使用x m ld o c u m e n tc b j e c tm o d e l ( d o m ) 【8 】【9 】的应用程序接口来更新x m l 数据,导致代码的维护变得十分繁琐。 x q u e r y 作为v i l 数据主流的查询语言,数据更新功能的缺乏,无疑是其 发展和推广道路上的严重阻碍。因此,为x q u e 巧扩展数据更新功能,无论在理 论上还是实践上都具有重要意义。 本文研究的数据更新扩展,基于一个具有自主知识产权的x q u e w 引擎,为 它增添了数据更新能力。创新之处在于,提供对多种数据源的数据更新支持,尤 其是x m l 内存数据的引入,极大的丰富了x q u e 巧程序的用途。在未来的发展 中,针对共享数据的更新功能( 如:会话s e s s i o n 的处理) 还可进一步支持基于 x q u e 叫的并行程序设计中的共享数据处理。 1 3 相关研究及研究现状 近年来,i i l t 锄e t 技术的发展使得x m l 逐步成为组织、机构间交换数据的手 段,大量的x m l 数据需要进行维护和处理。用户对一种易于理解的,能够对 ) ( m l 数据进行有效更新1 0 】【l l 】的高级语言的需求也变得尤为迫切【1 2 】。 针对这一需求,w 3 cx m lq u e 珂w 6 幽n g u p ,自2 0 0 6 年以来陆续的发 布了几个关于扩展x q u e r y 更新功能的草案【b 】【1 4 】,并于2 0 0 9 年7 月9 日发布了 x q r l l e 珂u p d a t ef a c i l i t y1 o 【1 5 】作为w 3 c 候选推荐规范。该规范对更新表达式的语 法和语义做出了详细的说明,它将x q u e 巧表达式分为更新和非更新表两种,更 新表达式【1 6 】可以实现对x 叫e 眄1 o 和x p a m2 o 数据模型【1 。7 】的永久更新;而非 更新表达式仅能对数据进行只读查询。扩展了数据更新功能的x q u e 巧,可以对 第l 章绪论 l 文档进行插入、删除、更改、替换等操作【1 8 】,使x l l 文档的更新变得简 单高效。 不过到目前为止,真正的实现了更新功能的x q u e w 引擎还很少。由i b m 开 发的d b 29 5 【19 】参考x q l u e d ru p d a t ef a d l 时,在d b 2 的存储器上实现对x m l 数 据的更新处理【1 9 】【2 1 】瞄】。客户端每次只需向d b 2 发出更新指令,就可直接在存储 器层对l 数据进行更别冽;而先前版本的d b 2 在接到更新查询指令后,必 须先将l 数据传输给客户端应用程序,接着由应用程序调用d o m 接口来进 行更新,最后再返回给d b 2 数据库替换原有讧l 数据。 另一种实现了更新功能的x i q u e 巧引擎是m x q u e r 矿2 4 】,它占用极少的内存, 可以在移动便携设备上运行,采取基于t o k e i l 的x m l 表示。在实现x q u e 珂u p d a t e f a c i l i t y 的时候,采取文件系统作为永久存储。 1 4 本文的研究工作 本文的研究工作基于x q r l l e 叮u p d a t ef a c i l i t y1 o ,在一个实现了x q u e w l o 的x q u e 巧查询引擎【2 5 】上,设计和实现面向异构数据源的数据更新功能扩展。其 中引入了x m l 内存数据,采用通用数据源接口,屏蔽不同数据源内部的差异, 给用户可以提供了一种统一的易于理解的语言,对异构数据的进行数据更新。 x q u e 巧u p d a t ef a c i l 时1 o 已经为x q u e 叮更新的语法和语义做出了明确说 明,为x q u e r y 引擎的数据更新功能扩展提供了通用标准。它将一次完整的 x q u e 叮查询定义成一次快照。按快照语义,在x q i l e r y 执行的过程中,所有非 更新表达式先被求值,而更新操作则会被挂起到一个p e n d i n gu p d a t el i s t s ( 待决 的更新列表) 中,待所有非更新表达式求值完毕,如果p 觚d i i l g u p d a t e1 i s t s 非空, 更新操作将被一一执行。 结合更新规范对更新语法语义的说明以及原x q u e 巧引擎的具体实现,本文 的数据更新功能扩展研究,主要包括如下工作: 1 结合现有x q u e 巧引擎架构和数据更新功能的需求设计出新的系统结构。 扩展后的系统,可以正确的处理带有数据更新操作的x q u e 叫查询,并实现 其语义。为此,本文对原系统将作出如下改动:首先扩展语法分析程序,使系统 可以接受带数据更新操作的x i 如e 巧查询,生成x 舢e 巧语法树;接着,由于 x q u e r y 先会被转化成一种易于描述查询计划的函数式语言f x q l 【2 6 1 ,然后进入 执行,因此,对f x q l 语言的扩充也是必不可少的,这里主要指的是增加一组数 据更新相关的原语函数。最后,对执行引擎进行改造以保证带更新操作的f x o l 能够正确执行,实现更新语义。 2 解决对异构数据【2 7 】【2 8 】及多数据源的更新问题。 北京t 业大学t 学硕l :学位论文 现有x q u e r y 引擎查询处理的底层【2 9 】【3 0 1 ,采用通用数据源接口封装了多种异 构数据源。提供一个虚拟的) ( i l 视图【3 l 】并且屏蔽了各数据源间的差异,提供统 一的数据源模式以及数据源访问接口。在此基础上,实现对多数据源的更新,就 只要扩展出数据更新所需的通用接口,并在每种数据源内部予以实现。 3 数据更新的合法性检查【3 2 】 以前的x q u e r y 对x m l 仅能进行查询操作【3 3 】不会影响到已有捌l 文档的 文档结构。在扩展了更新功能后,系统提供基于x m ls c h e m a 【3 4 】的合法性检查机 制,以确保更新后l 文档的良构性。 1 5 课题来源 本课题来源于北京市自然科学基金项目( 4 0 8 2 0 0 3 ) ,北京市重点学科资助项 1 6 本文的组织结构 本文第2 章介绍l 查询语言x q u e r y 和x q u e f y 的数据更新功能;第3 章 介绍本课题组设计实现的x q u e f ) r 查询引擎;第4 章介绍x q u e r y 数据更新功能 扩展的设计与实现;第5 章介绍基于x m ls c h e i i l a 的数据更新有效性检查;第6 章介绍一组测试用例,检验数据更新功能的正确性,并给出结果分析。 第2 章x q u c r y 和x q u e r y 数据更新功能 第2 章x q u e 巧和x q u e 巧数据更新功能 2 1x m l 与x q u e 呵 垤l ( e x t e f i s i b l em a r k u pl a l l g u a g e ) 即可扩展标记语言,从1 9 9 6 年开始有其 雏形,并向w 3 c ( 全球信息网联盟) 提案,在1 9 9 8 年二月发布成为w 3 c 的标准 ( x m l l 0 ) 。它的前身是s g m l ( t h es t 觚d a r dg 饥e r a l i z c dm a r k u pl a l l g u a g c ) , 即a l ( g e l l e r a l i z e dm 矾a l pl a u l g u a g e ) 标准化后的名称。g m l 中的一个重要 概念就是:文件中能够明确的将标识与内容区分,同时所有文件的标签有着一致 的使用方法。 x m l 是h l t e n l e t 环境中跨平台的,依赖于内容的技术,是当前处理结构化文 档信息的有力工具。扩展标记语言l 是一种简单的数据存储语言,使用一系 列简单的标记描述数据,而这些标记可以用方便的方式建立。 虽然x m l 占用的空间比二进制数据要更多,但它的与平台无关性、灵活性 以及易用性使其在数据存储、交换和数据共享领域开始占据举足轻重的地位。 w 曲服务中的所有主流方法,如s o a p 、r e s t 甚至l - r p c ,都是基于l 之上的。如今,以l 最普遍的应用是数据联合领域。数百万的b l o g g e r 都在使 用r s s 提要订阅他们所喜爱的博客上的最新信息。而且商业利益已经发现通过 英特网向各种设备( 如i p o d ,它也使用l ) 发布音频和视频的商机了。应用 程序和开发环境的幕后经常都有x m l 存在,它是创建配置或指令文件的通用 方法。在可读性强的x m l 文件中提供配置指令能让用户比以前更加方便地控 制应用程序的行为。 随着x m l 信息量的飞速增长,x 】l 日益成为i n t e n l e t 上数据交换的标准,人 们迫切需要一种通用途径能够方便的与x m l 数据进行交互。也就是说,必须要 有一种能够从l 文档中准确获得所需信息的查询语言。为了标准化) ( 】l 数据 查询和处理,国际万维网组织( w 3 c ) 发展了x q u 确言,于2 0 0 7 年1 月将它作 为以l 数据查询语言标准发布。 2 2x q u e 吖语言介绍 x q u e 巧是为了满足w 3 cx m l 查询工作组定义的需求x m lq u e r y1 0 r e q u i d e l l l e m s 和用例x m lq u e 拶u s ec a s e s 的需要而设计的。它被设计为一种简 洁而又易于理解的查询语言,足够灵活,能查询范围很广的x m l 信息源,包括 数据库和文档【3 5 】。 北京t 业人学t 学硕十学位论文 x q u e r y 源于一种名为q u i l t 的) ( m l 查询语言,而q 岍l t 本身又借鉴了很多其它 语言的特征,包括,a 吐l1 o 、x q l 、x m l q l 、s q l 和o q l 。 x q u e w 对一个x i l 文档的抽象、逻辑结构进行操作。这种逻辑结构又常 被称为数据模型,它在x q u e 叫1 oa n d ) a t h2 o d a t am o d e l 文档中被定义。 x q u e w 版本1 0 是对x p a t l l 版本2 0 的一个扩充。任何表达式,只要它句法上正 确而且在x p a t h2 o 和x q u e w1 o 中都能顺利执行,则在两种语言中将返回相同 的结果。 x q u e 珂拥有一组丰富的特性,允许对x m l 数据和文件进行不同类型的操 作,包括: 1 根据具体的标准选择信息。 2 过滤不需要的信息。 3 在一个文件或者文件及中搜索信息。 4 从多个文件或文件集合中连接数据。 5 对数据进行排序分组以及求和。 6 把x m l 数据转换和重新创建成另外的l 词汇表或结构。 7 对数字、日期进行算术运算。 8 用操作字符串的方式重新格式化文本。 2 2 1x q u e 巧的基本组成 x q u e r y 语言中计算的基本单位是表达式。查询包含表达式,表达式又可以嵌 套有许多的子表达式。表2 1 归纳了x q u e 巧查询所有的表达式种类: 表2 1x q u e r y 查询表达式种类 t a b l e2 1x q u e r ye x p r e s s i o nt y p e s 种类描述操作关键字 基本表达式 字面值、变量、函数调 用、括号表达式 比较表达式基于值、节点标识或文 = ,! = , = ,e q l l e ,l t ,l e ,舀,g e ,i s 档顺序的比较 条件表达式i f - m e l l e l s e 表达式 i e m e n ,e l s e 逻辑表达式布尔运算符觚i 慨o r a n d 路径表达式从x m l 文档中选择:爷 ,c h i l d :,等 点 构造器往结果中增加x m l ,e l e m t ,a t t r i b u t e f l w o r 控制节点的选择和处 f o r ,l e t ,w h e r e ,o r d e r b y t u m 第2 章x q u e 呵和x q u e 叮数据更新功能 理 量化表达式 判断是否满足指定条 s o m e ,e v 班y ,i n ,s a t i s f i e s 件 序列相关表达式创建和合并序列 t o ,u i l i o n ( 1 ) ,i n t 盯_ s e c t ,e x c 印t 算术表达式加,减,乘,除 + ,一,毒,d i v i ( 1 i v ,m o d 下面将详细介绍x q u e 巧表达式中最为强大的路径表达式和f l w o r 表达式。 路径表达式 最简单的查询类型就是从数据文件中选择元素或者属性,称之为路径表达 式。如: d o c ( “l i b x m l ”) 厂b 0 0 k s b o o k 该表达式从文件1 i b x i i d 中选择b o o k s 下的所有b o o k 元素。 路径表达式通过遍历一个v i l 树的方式选择目标元素和属性。它和很多操 作系统的路径格式相似。路径表达式由多个部分组成,以斜杠分割,在上面的例 子中,路径表达式就被分成了三个部分: 1 d o “l i b x m l ”) 表示调用一个名为面c 的x q u e 巧函数,把文件名以参数形式 传递给该函数,通过该函数打开文件。 2 b o o k s 表示选择最外层的b o o k s 元素。 3 b o o k 表示选择b o o k s 下的所有b o o k 子元素 f l 、o r 表达式 许多x q u e q 查询的基本结构都是一个f l w o r 表达式。与路径表达式不同, f l w o r 允许对结果进行操作、变换和排序。 下面是一个简单的f l w o r 表达式示例,它所做的事情就是返回作者是a l l i s 的所有b o o k 的名称: f o r $ bi nd o “l i b t l l ”) b o o k s b o o k 、) l ,h l 湘$ b a u m o f “砧l i s ” o r d e r b y $ b n 锄e r i 翻姗$ b n a m e 可以看到,f l w o r 由几部分组成: f o r :建立了一个遍历b o o k 元素的循环,每个b o o k 元素都会被代人余下的f l w o r 表达式计算一次。每次计算,变量$ b 都会绑定到不同的b o o k 元素。 、地e r e :筛选条件,只选择作者是a l l i s 的b o o k ,这和在路径表达式添加条件谓 词( 【 a u t h o r = “a l l i s ”】) 是一样的效果。 o r d e rb y :这个子句对结果按照名称进行排序。 北京t 业人学t 学硕 j 学位论文 r 嗍瑚:表示返回b o o k 元素的n 锄e 子元素。 2 3x q u e r y 数据更新功能 x 锄e r y 是一个强大的函数式语言,可以对多种类型的l 数据源进行高 效的查询,但它却并不具备对x m l 数据进行更新的能力【3 6 1 。为了满足日趋复杂 的应用需求,w 3 c lq u e r yw - o r k i n gg r o u p 发布了x 伽e 巧u p d a t ef a c i l i t y1 o 作为w 3 c 候选规范,为x q u e r y 引擎的数据更新功能扩展提供了通用标准。 2 3 1 更新规范对x q u e 巧1 o 的扩展 在x q u e 珂1 o 中,x q u e r y 表达式的输入是0 到多个m 对象,返回的结 果也是一个) ( d m 对象。表达式永远不会修改已存在的节点的状态。 x q u e r yu p d a t ef a c i l i 够1 o 引入了一种新的表达式更新表达式,包括 i n s e n ,d e l e t e ,r 印l a c e 和r e n 锄e 等,这些操作可以修改己存在的节点的状态。 扩展后的x q u e 眄表达式主要分为如下几种: 1 一个基本的更新表达式可以是一个i n s e n ,d e l e t e ,r 印l a c e ,r e i l 锄e 或者更新函 数调用; 2 一个更新表达式是一个基本的更新表达式或者任何直接嵌套更新表达式的表 达式,需要注意的是,更新表达式的定义是递归的; 3 一个简单的表达式指的是任何一个非更新的x q u e 叫表达式; 4 一个空表达式指的是一个只能返回一个空序列或者抛出一个异常的简单表达 式。 在x q u e 可u p d a t ef a c i l i 哆1 o 中,将一次完整的x q u e r y 查询定义成一个 s n a p s h o t ( 快照) 。根据快照语义,在x q u e r ) ,执行的过程中,所有简单表达式( 非 更新表达式) 先被求值,而更新表达式则会被拆分成一个或多个更新函数调用, 挂起到p 铋d i n gu p d a t el i s t s ( 待决的更新列表) 中,待所有非更新表达式求值完 毕,p 锄d i n gu p d a t el i s t s 中的更新操作才被执行。 2 3 2 新增的x q u e 巧数据更新基本表达式 本文参照x q u e r yu p d a t ef a c i l i t y1 o ,实现了四类基本的更新表达式,分别 是1 1 1 s e n e x p r 、d e l e t e e x p r 、r 印l a c e e x p r 和r e n 锄e e x p r 。如表2 - 2 所示,它们 都派生于原x q u e r ) r 文法中的s i n 百e e x p r 表达式。同时,所有基本更新表达式又 能嵌套于一些已存在的普通x q u e 叫表达式中( 见2 3 3 对已有表达式的扩展) 。 第2 章x q u e r y 和x q u e r y 数据更新功能 表2 2s i n 9 1 e e x p r 的语法规则 t a b l e2 2g r a 咖a rr u l e so fs i n 9 1 e e x p r s 崦l e e x p rf l w o i 强x p r q 啪t i f i e d e x p r i1 e g 丽t c l 正x p r i i 也x 班 i o r e x p r h l s e n e x p r id e l e t e e x p r lr e i l 锄e e x p r lr 印l a c e e x p r 下面对每类更新操作的语法和语义进行简要说明。其中提及的所有的 s o u r c e e x p r 和1 砘e t e x p r 都是非更新表达式。 i n s e r t 插入表达式是一个在指定位置插入零或多个节点拷贝的基本更新操作,这里 的s o u r c e e x p r 和姆e x p r 都必须是一个简单表达式。关键字n o d e 和n o d e s 可 以互换使用,无关实际要插入的节点数目。表2 - 3 给出了i l l s e f t e x 芦的语法规则。 表2 3i n s e r t e x p r 的语法规则 i a b l e2 - 3g r a m m a rr ule so fi n s e r t e x p r i n s e f t e x p r”i i i s e r t ”( ”n o d e ”| f t n o d e s ”) s 0 u r c e e x p r ”a n d t a 略e t e x p r h l s e n e x p r ”i n s e n ”( ”n o d e f ,i t n o d e s ”) s o u r c e e x p r 屯e f o r e ”1 a r g e t e x p r i i l s e n e x p r ”i i l s e n ”( ”n o d e ”l f i n o d e s ”) s 0 u r c e e x p r ”i l l t o t t a 玛e t e x p r s o u r c e e x p re x p r s i n g l e t a r g e t e x p re x p r s i n 百e 1 如果指定了b e f o r e ( 或蛆神: a 被插入的节点将成为目标节点的前( 或后) 邻居; b 如果多个节点将通过一个插入表达式插入,这些节点将保持相邻,同时 它们之间的顺序将保持不变; c 如果在同一次锄a p s h o t 中多个插入表达式将插入多组节点,每组节点内 部的相邻关系和顺序将保持不变,但组间的顺序是依赖于实现的。 2 如果指定了i n t o : a 插入节点将成为目标节点的孩子; b 如果多个节点将通过一个插入表达式插入,这些节点将保持相邻,同时 北京t 业大学t 学硕l 学位论文 它们之间的顺序将保持不变; c 节点插入的位置的选择选择上,要避免与说明了b e f o r e ,a r e r 的这些指定 位置插入的节点冲突。例如,如果节点b 将被插入“a l f i e rn o d ea ”那么 不能有其他节点被插入到a 和b 之间,除非该节点也要被插,水a r e rn o d e a 。 查询示例: 1 把一个y e a r 元素插入到第一个b o o k 元素的p u b l i s h 盯子元素之后。 i n s e nn o d e 2 0 0 5 a r e r 伍:d o c ( ”l i b x m l ”) b o o k s b o o k 1 】p u b l i s h e r 2 插入一个绑定变量n e w - p o l i c e 到i n s u r a n c e x “,作为p o l i c i e s 的子元素。 i n s e r tn o d e $ n e w - p o l i c e i n t o 伍:d o c ( ”m s u r a i l c e x m l ”) p o l i c i e s 语义规则如下: 1 s o u r c e e x p r 必须是一个s i m p l ee x p r e s s i o n ( 简单表达式,即非更新表达式) ; 否则抛出一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 子空间的正交补空间课件
- 新能源汽车动力蓄电池与充电系统(微课版) 课件 任务2.1新能源汽车动力电池认知与更换
- 平面设计师课件
- 平面图行的旋转课件
- 平面向量课件
- 工业安全培训感想课件
- FLT3-IN-32-hydrochloride-生命科学试剂-MCE
- 2025年吉林公务员真题
- 2024年黄冈市市直机关遴选公务员笔试真题
- 央视地震逃生安全培训课件
- 灌区续建配套与节水改造工程施工组织设计
- 中职高一数学开学第一课(非凡数学之旅-中职生也能破茧成蝶)-【开学第一课】2024年中职秋季开学指南之爱上数学课
- GMS基础知识(第一版)1
- DL∕T 2528-2022 电力储能基本术语
- 挂靠协议书范本
- 03-03-ZQZ-CY型便携式自动气象站用户手册
- 2024年云南省中考数学试题(含答案)
- 谐波齿轮减速器选型资料-图文
- 藏文基础教你轻轻松松学藏语-知到答案、智慧树答案
- 大冶市大垴山金矿千家湾矿区铜矿矿产资源开发利用与生态复绿方案
- 试运行专项方案模板
评论
0/150
提交评论