(计算机科学与技术专业论文)基于xquery规范的报表系统的设计与应用.pdf_第1页
(计算机科学与技术专业论文)基于xquery规范的报表系统的设计与应用.pdf_第2页
(计算机科学与技术专业论文)基于xquery规范的报表系统的设计与应用.pdf_第3页
(计算机科学与技术专业论文)基于xquery规范的报表系统的设计与应用.pdf_第4页
(计算机科学与技术专业论文)基于xquery规范的报表系统的设计与应用.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机科学与技术专业论文)基于xquery规范的报表系统的设计与应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于x q u e r y 规范的报表系统的设计与应用 摘要 报表作为一种信息组织和展示的有力手段,是企业信息系统的 重要组成部分,是进行信息浏览、分析、打印的有利工具。然而传 统的报表生成系统在不同程度上都存在生成报表种类固定,格式不 统一,程序升级维护困难等问题。越来越多的企业希望能够有一种 基于高水平的查询语言的报表系统。x q u e r y 规范的推出,使得设计 一种基于标准的解决方案来实现在全异数据源之间进行查询成为可 能。因此,基于x q u e n r 规范的报表系统成为了技术上的研究热点。 本文基于x q u e r y 查询语言的优势和报表系统的基本要求,设计 了一个基于x q u e r y 规范的报表系统,在设计和实现方面做了以下有 意义的尝试: 1 x q u e r 、r 的数据模型由扩充的x m l 信息集和简单类型值以 及它们之上的一些操作构成,为x q u e r y 的执行提供底层的 数据支持和基本操作支持。 2 使用扩展的q i z x 做为x q u e n ,的实现引擎,将各种数据源中 的数据集成到一个x m l 文件中,方便的实现了数据集成和 交互,并很好的保证了集成后数据的实时性。 3 本文提出了使用r e p o r tt e m p l a t e s 和x q u e r y 的新的报表框 架,能够在不影响应用程序其余部分的前提下轻松实现对报 表模板的修改,从而使系统维护问题更少而生产效率更高。 本文设计的报表系统已经被应用于某银行风险管理系统中,在 财务分析、统计报表、科目分析等功能模块中得到了很好的应用。 关键词:x q u e r y v 几q i z x o p c n 报表系统数据集成查询引擎 d e s i g na n da _ p p l i c a t i o no fa n r e p o r t f o r m ss y s t e mb a s e do nx q u e r y a sap o w e r f u lm e a s u r co fi 1 1 f o 瑚a t i o no r g a n i z a t i o na n dr e v e l a t i o n , r e p o r t f o m :l sa r ct h e i i n p o r t a n tc o m p o n e n tp a r t o ft h e e n t c r p r i s e i n f b r m a t i 伽s y s t e ma n da d v a l l t a g c dt 0 0 lo fi i l f b 珊a t i o nb r o w s e ,a n a l y s i s 柚dp r i n t w h i l em e r ea r es o m ep r o b l e m sa b o u tt h et m d i t i o n a lr e p o r t f b n 璐s y s t e mm o r eo rl e s s ,辄c h 勰s i l l 出e n e 髓0 fr e p o 札f 0 珊sk i n d s , d i 鲫n i t y o ft h ef b n i l a t ,b ed i f i c t l l tt ou p g r a d ea n dm a i n t e n 卸c ct h e a p p l i c a t i o np r o g r a ma n d o n m o r ca j l dm o r ee n t e 叩r i s ew i s h e s 山a t t h e r ci sal 【i n do fr e p o r tf 0 加 1 ss y s t e mw h i c hi sb a s e do nh i g t il e v e lq u e 叮 l a n g u a g e 1 1 l ea p p e a r a n c eo ft h ex q u e r yc r i t e r i o nm a k e s i tp o s s i b l et h a t d e s i g l lar e s o l v es c h e m eb a s e do n 丽t e r i o nt 0i m p l e m e n tq u e r ya m o n g t o t a l l yd i 骶r e n td a t as o u r c e s t h e r e f o r e ,t h er e s e a r c hi nt h er e p o r tf o r l l 晦 s y s t e mb a s e do nt h ex q u e r y c r i t e r i o nb e c o m e st h et e c h n i c a lh o t s p o t b a s e do nt h ea d v a n t a g eo fx q u e r y 柚dt h eb a s i cr e q u i r e m e n t so f r e i ) o r tf 0 加ss y s t e m ,ad e s i g i lo fr e p o nf o r 脚s y s t e mb a s e d 0 nl h e x q u e r v 商t e r i o ni sc o n c e i v e d t h e r ea r eaf e wm e a n i n g f u la t t e m p t si i lt h i sa n i c l eo nb o t h d e s i g n i n ga n di m p l e m e n t i n g : 1 x i e r yd a t am o d e li sm a d eu po fe x t e n s i b l ex m l i n f b n n a t i o n s e t ,s i m p l et y p ev a l u e 粕ds o m eo p e r a t i o 璐a b o u tt h e m t h ed a t a m o d e lp r o v i d e sb o t t o md a t as u p p o r ca n db a s i co p e r a t i o ns u p p o r t t ox q u e d rp e d - o 彻a n c e 2 t 1 1 i ss y s t e mu s e se x t e 啮i b l eq i z x 筋x q u e r yi m p l e m e n t i n g e n g i n e nc a nc o l l e c td a t af r o ma uk i n d so fd a t as o u r c e st oa x m l f i l e , i m p i e m e n t d a t ac o l l e c t i o na n di n t e r a c t l o n c o n v e n i e n t ly a n da s s u r et h er e a l t i m eo ft h ec o l l e c t e dd a t a 3 i nt h i sa n i c l e ,t h e r ei san e wr e p o r tf o 册sf r a m eu s i n gr 印o r t t e m p l a t e sa 1 1 dx q u e 哆n i s f r a m ec a nm o d i f yt h er e p o nf o r m s t e m p i a t ee 硒i l yb u td o n ta f f e c to t h e rp a r t so ft h ea p p l i c a t i o n p r o g r a m s o ,t h es y s t e mw i l lh a v el e s sm a i n t e n a n c ep r o b l e 傩 a n dh i g h e rp r o d u c ee f f i c i e n c y t h i sr e p o r tf o r m ss y s t e mh a sb e e na p p l i e dt ot h er i s km a n a g e m e n t s y s t e mi nw h i c hi tp e 0 丌n st h ea n a l y s i so ff i n a n c i n g ,s t a t i s t i cr e p o r t f o 珊s ,a n a l y s i so fs u b j e c t sa n ds oo n k e y w o r d s :x q u e r y ) ( 1 v 【l d a t ai n t e 鲈a t i o n q i z x o p e nr e p o r tf o r 胁s y s t e m q u e 哆e n g i n e 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中 不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或 其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所 做的任何贡献均己在论文中作了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:彩轻拯日期:丛掣垒圭 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权 保留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅 和借阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印 或其它复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密 论文注释:本学位论文不属于保密范围,适用本授权书。 本人签名:趁主丝盥日期:塑z 垒:兰 导师签名: 渤! 日期: 塑7 :垒z 北京邮电人学硕 二研究生学位论文 1 1 研究背景 第一章绪论 当今世界最大的特征是信息时代的到来,更确切的说是网络时代的到来。 l l l t e m e t 给全球企业带来了前所未有的影响,电子政务、电子商务及企业 e r p ( e n t e r p r i 辩r e s o u r c cp l a i l n i n 曲得到迅猛发展,这时数据的采集、传输、展示、 交互、安全等问题显得越来越重要。报表作为一种信息组织和展示的有力手段, 是企业信息系统的重要组成部分。报表生成系统在各行各业中都有很广泛的用 途,是进行信息浏览、分析、打印的有利工具。 随着网络技术的发展,企业信息系统从传统的c ,s 结构逐步向b s 结构转移, 企业信息系统也正向基于w 曲的信息系统进行转变,越来越多的报表应用将在网 络环境下开发与运行。另一方面,随着i l l t e 丌l e t 的发展,x ml 1 1 j 的各项标准也日臻 完善,在各个领域的应用也不断扩展和深入。由于x m l 具有简单性、可扩展性、 易操作性、开放性等优点,因此它在信息表现领域得到了广泛的应用,并逐渐成 为i n t e m e t 上数据表示和交换的新标准。随着使用x m l 存储、交换及表示的信息 量的增加,智能地查询x m l 数据源并对此数据生成报表的能力变得越发的重要。 虽然使用x m l 数据表示带来了极大的灵活性、可扩展性及开放性,但至今为止 高水平查询语言的缺乏意味着生成x m l 激据报表仍然很复杂。 通常应用程序通过从数据库中提取相关信息来生成报表。不从底层数据库来 提取信息的应用程序则采用x s l f q x s l f 0 册a t t i n g o b j e c t s ) 【3 j 及专有技术。其他 解决方案完成报表要依赖于向数据库移植数据。这种生成x m l 数据报表的技术 不仅灵活性差而且成本昂贵。 目前,传统的报表生成系统有较大的局限性,主要体现在: 1 生成报表的种类固定,虽然使用方便,但增加报表种类必须改写应用系 统代码,带来系统扩充困难、成本大等问题。 2 报表保存格式不统一,且保存格式理解困难,即便保存为流行的电子表 格格式,由于电子表格文档格式本身也很复杂,并且一般为二进制格式, 因此,只有特定的程序才可以生成和管理报表,报表保存格式的通用性 较差,虽然也有支持聊l 【2 】格式的报表,但是由于其在表现形式上的 局限性,使它不能得到广泛的应用。对报表格式或数据的微小改动均需 要调用报表管理系统,效率不高。 第1 页 北京邮l 乜大学硕 :研究生学位论文 3 报表管理软件通常是按c 俗模式结构开发,程序的升级维护困难,同时还 存在通信和安全等问题。 因此,研制报表的智能化生成系统,对于提高报表的开发效率和软件质量, 具有实际的研究意义。 1 2 问题提出 目前大多数已有的解决方案使用x s u e x t c 璐i b l es t y l cl a n g i i a g e ) 文件来生 成报表,但在这种解决方案中存在许多不足之处。首先,x s l 主要是一种转换 语言而非查询语言。其语法对于非编程人员而言过于复杂。而且,这种技术是 基于文件的,不能与其他x m l 数据源一起使用。其他解决方案都是专有的, 带来了附加成本。一些解决方案虽然使用基于模板的方法生成报表,但却在模 板中使用专有标签。 这就要求一种基于标准的解决方案来实现在全异数据源之间进行查询。我 们需要一种报表分析框架,它应满足以下要求: 1 使用一种易于使用的( 对于域专家而言) 查询语言。 2 所使用的查询语言支持对环境信息的算术运算、布尔运算、条件逻辑、 递归、聚合、排序、筛选和访问。 3 支持包括流x m l 数据在内的全异x m l 数据源。 4 能够对报表轻松实现格式化,尤其是在使用模板时。 5 能够轻松实现对报表的自定义。 一个经济高效并且具有灵活性的报表框架允许快速报表创建,并且使报表独 立于已有的代码库和x m l 数据源。在本文中,我们推荐使用基于x o u e r v l l l l 规范 的x m l 报表框架。该框架所创建的报表不仅能对) ( 1 讧l 数据进行转换,同时还包 括对数据进行查询、提取及分析。x q u e r y 旨在为所有类型的x m l 数据源提供标 准查询机制。因此,使用x q u e r y 的报表框架可用于各种使用x m l 数据的应用程 序,是较为理想的解决方案之一。 本人在研究生学习期间,有幸参与了某银行风险管理系统的项目开发和实 施,根据银行风险管理系统对于报表系统的要求,参与设计开发了一个基于 x q u e r y 规范的报表系统,并将其应用到风险管理系统中。 第2 页 北京邮电人学硕i :研究生学位论文 1 3 主要研究内容 1 x q u e r v 技术和实现报表系统的理论研究 学习了x q u e r y 规范的基本理论知识和关键技术,并对与x o u e r y 技术紧密 相关的x m l 技术进行了一定的学习;学习并研究了设计实现报表系统的一些 关键技术,为设计基于x q u e r y 规范的报表系统提供了必备的理论基础。 2 报表系统的设计 深入调查研究了现有报表系统的特点和功能及其实现技术,针对传统报表 系统存在的弊端和当前新的功能需求,在认真学习了x q u e r y 技术规范的基础 之上,设计了一套可以实现在全异数据源之间进行查询的基于x q u e r y 规范的 报表系统。 3 使用s q l 扩展将关系数据库中的数据转换为x m l 数据集 研究了x q u e r y 查询语言的语法规则,由于其与s q l 有某些相似之处,所以比 较容易理解,而且x q u e r y 实现中的s q l c o 曲e c t i o n 扩展允许用户用s q l 从数据库 中查询数据,并将这些数据转换为x ml ,这是一个将关系数据库中的数据转换 为x m l 的简单的方法。 4 q k 吲o p e n 做为x q u e r y 的实现引擎 q 酬0 p e n 【1 2 】在目前官方公布的所有开放源代码的x q u e r y 引擎中查询速度 几乎是最快的,本文使用基于o i 冽o p c n 的x o l i i e r y 引擎来实现查询,研究发现, 通过扩展功能的实现,不仅扩展了x q u e r y 的功能,而且可以使x o u e r y 与j a v a 更好地集成在一起。 5 使用m e p o n 的扩展功能做为报表模板设计器 m e p o n 做为一种可视化的报表模板制作工具已经得到了很多人的青睐,本 人在学习研究了报表模板x m l 文件的生成过程之后,尝试改写了瓜e p o n 软件 包中定义报表模板文件的类方法,将其输出为本系统需要的模板文件格式,使 用该方法可以轻松实现报表模板的设计。 6 报表系统在银行风险管理系统中的应用 本人有幸参与了某银行风险管理系统的建设工作,在实践中将本文设计的 报表系统应用于风险管理系统,完成了投资分析、统计报表、科目分析等功能 模块的设计和实现。 第3 页 j 匕京邮电丈学硕 :研究生学位论文 1 4 本文结构 本文共五章:第一章介绍了论文的研究背景,阐述了传统报表系统的缺点, 并提出了本文将要论述的问题;第二章介绍x q u e r y 规范的基础理论和关键技 术以及与x o u e r y 技术紧密相关的一些x m l 技术:第三章设计了一个基于 x q i i e r y 规范的报表系统:第四章介绍了本文设计的系统在某银行风险管理系统 中的应用;第五章对本论文的工作做了总结和展望。 第4 页 北京邮电人学硕l 。研究生学位论文 2 1 概述 第二章x q u e r y 规范介绍 2 1 1x q u e r y 的产生背景 x m l 的查询语言经历了个比较复杂的发展过程。x m l 可以灵活的表示 多种不同数据源的不同信息,为了使这种灵活性得到最大程度的发挥,人们设 计了多种x m l 查询语言,用它们来从这些多样的数据源中获得查询数据。人 们提出并使用过的查询语言有x s lx q l ,x m l q ly a l r i ,l 0 r e l l 9 】等。每种语 言都有自己的优点,满足一定的x m l 查询需要,但作为一个通用的查询语言 又有些不足。在这种情况下d 1 0 mc h a m b c r l i i l 等人提出了q u i l t 语言,现在已经 被w 3 cx m lq u c r yw o r k j n gg m u p 采用,作为x q i l e r y 语言的基础。q u i l t 有很 多非常优秀的特性,集s q lo d m g ,x p a t h l o ,x q l ,以及x m l 广q l 的诸多特 性于一身,然而随着存储在x m l 文档中的信息量的增长,对于能高效的存取 和查询x m l 的信息,q u i l t 显示出了它的不足。于是全新的x c i l l e r y 数据查询 语言诞生了。 2 1 1 0x q u e 巧的历史 x q u e r v 规范启动于1 9 9 8 年由w 3 c 发起的查询语言波士顿专题讨论会,与 会的成员认为应该将x m l 的使用者划分为两类,第一类是将x m l 主要作为文 档使用的人,第二类是将x m l 作为数据使用的人。来自业界、学术界和研究 团体的受邀代表利用这个机会发表了各自的看法,他们认为重要的x m l 查询 语言应该能够同时满足上述两种使用者的需求。讨论会之后成立了0 u e r y l a n 印a g cw o r k j n gg r o u p ( 查询语言工作组) 。这个工作组很庞大,由3 0 多个成 员公司构成,任务是创建一种灵活的查询语言来从x m l 中抽取数据。 虽然1 9 9 8 年x q u e r y 规范化工作就已经启动,但是由于x m l 应用领域的 差异,这项工作花费的时间是相当漫长的。直到2 0 0 1 年2 月,工作组的发布工 作开始大踏步地进行,大量的文档开始推出。在2 0 0 1 年6 月和1 2 月、2 0 0 2 年 8 月和1 1 月、和2 0 0 3 年5 月进行了重要更新。在2 0 0 3 年5 月加入了一个x q u e r y 序列化和两个全文相关的工作草案后,1 2 个文档基本完成,工作草案接近收尾 工作。 第5 页 北京邮电大学硕上研究生学位论文 2 1 3 x q u e r y 的定义 x m l q u e r y ,通常缩写为x q u e r y ,是一个从x m l 格式的文档中获取数据 的查询语言,起源于x m l 数据查询语言q u i l t 并将x p a t h 旧版本2 0 作为其子 集。做为一种新型的查询语言,x q u e r y 汲取了其他多种查询语言的优点,包括 x q l 、s q l 、o q l 、x m l q l y a t l 等,如x q u e r y 吸收了x q l 语言的路径 表达式,x m l 广q l 语言的变量绑定机制,o q l 中的函数概念等,适用于各种类 型的x m l 数据源的查询,不仅查询功能强大而且简洁灵活易于实现。x q u e r y 还具有从多种数据库中检索信息的特点,它能对各种文档和数据进行查询。 x q u e r y 规范为x m l 引入了易于使用的、高水平的查询语言语法,将成为对所 有类型的x m l 数据皆可用的、独立于系统的标准。 2 1 4 x q u e r y 的设计原则 x m l 标准体系己经建立起来,x m l 核心标准己经成熟,所以x m l 查询 语言的设计必须要在符合原有的标准的前提下进行。下面总结出一些在x q u e r y 设计过程中公认被严格遵循的基本原则1 6 l i l 6 l ,它们不仅反映出x q u e r v 语占本身 的特点,其中一些也是对x m l 查询特征的体现。所以这些原则从另外一个角 度说明了我们使用x q u e r y 来实现x m l 查询工具的合理性,对我们在x m l 查 询工具的设计上有一定的指导作用。 1 组合性 x q u e r y 是一种具有组合性原则的功能性语言。x q u e r y 由多种表达式组成, 比如路径表达式、条件表达式、元素构造器等,这些表达式构成了x q u e r y 的 内容。任意表达式的结果都可以作为另一个表达式的操作数。表达式的组织没 有任何语法约束( 尽管整个语言有一些语义的约束) 。每个表达式的输出结果只 与操作数有关,而且所有表达式都不会影响到其他表达式的执行。一个查询的 最乡卜层表达式的输出结果就是这个查询的返回结果。 2 完备性 x q u e r y 是在查询数据模型的基础上建立起来的,每条查询或子查询的输入 和输出均来自于查询数据模型的一个实体。这就表明x q u e r y 在查询数据模型 上的描述是完备的。 3 模式一致性 x m ls c h e m a 【4 】【5 】是w 3 c 的推荐标准,它提供了组原始类型,类型定义 第6 页 北京邮电大学硕l 研究生学位论文 工具和继承机制。x m l 模式的验证处理对x q u e r y 中生成新元素和指派元素类 型的装置有相当大的影响,所以x q u e r y 中与类型定义和验证相关的部分也将 根据s c h e m a 来进行模块化,以便今后x q u e r y 可以与其他模式语言共同使用。 4 x p a t h 兼容性 路径表达式是x q u e r y 中最重要的表达式之一,路径表达式实际上就是 a t h 表达式。又因为x p a t h 标准先于x q u e r y 制定出来,已经被广大的x m l 用户广泛使用起来,所以x q u e r y 要尽可能的和x p a t h 保持兼容。但x p a i h 本 身并不完善,x c 山e r y 中出现了一些不兼容x p a t h 的情况。不过随着x p a t i l2 0 1 1 5 j 的公布,这个问题有所缓解。 5 简单性 表达式的简单性和易于理解是x q u e r y 设计的最基本目标。简单可以让这 个语言更快的被推广和应用起来,但简单也使得语言本身的处理能力大打折扣, 所以x q u c r y 的复杂程度是在与其他原则的权衡下决定的。 6 完整性 这里的完整是指能够完全表达尽可能大范围的查询。应用层次上,通过对 查询需求和用户用例的分析,大致可以得到所有可能的查询条件和所有可能的 查询结构。在形式语义的层次上,x q u e r y 被设计为能够由输入x m l 文档进行 运算后构造出任何x m l 文档,这主要是利用前序谓词演算的作用。另外,递 归表达式也增加了x q u e r y 的表现力。 7 一般性 ) ( 1 l 数据己经被应用在各种不同的领域中,显而易见,x q u e r y 必将被用 于这些不同的环境,面对不同形式出现的x m l 数据。它适用于由s c b e m a 或 明m 描述结构的文档,也适用于没有结构描述的文档。它能够使用在输入类型 和输出类型都己知的环境中,也能够使用在输入输出类型在执行期才能动态获 得的环境中它应该接纳多种来源的输入文档,包括w 曲上的x m l 文件,数 据库中获取的x m l 文档,流数据( 比如股票行情) 和从数据库中合成的x m l 数 据。 8 简明性 与简单性不同,简明性是指在不同的应用情景下同一个x q u e r y 语句不能 出现二义性,而要保证查询的明确。所以x q u e r y 运算符的定义均包括有一些 第7 页 北京邮电人学硕l 研究生学位论文 特定的固有操作。例如,算术运算符+ 的两个操作数都要求为双精度数,当 需要处理两个元素相加时,自动的提取这两个元素的数值作为操作数来处理。 9 静态分析 一个查询的处理可以被假定分为两个阶段,分别是查询分析和查询求值( 可 以对应于一个程序的编译和执行) 。分析阶段是进行类型检查和性能优化的时 机,所以要对分析阶段执行的各种检查做一些定义。 纵观上述原则:简单性、简明性、一般性是从使用者的角度对查询语言的 基本要求;模式一致性和x p a i h 兼容性是x m l 标准体系中其他标准对x q u e r v 的支持和限制:组合性是x o u e r y 语法上的特性;完备性和完整性是从底层数 据模型和形式语义出发的必须;静态分析是实际处理方式上的定义。在实际 x 0 u e r y 的设计中这些性质并非全部完全遵守,而是相互折中以达到一个最理想 的效果。 2 1 5 x q u e r y 的应用 由于现在x q u e r y 还不是很成熟,还不是、”c 的推荐标准,其应用还不是 非常广泛,目前主要的应用集中在以下几个方面。 1 ) ( 1 订l 转化:x q u e r y 提供了功能强大的( 可扩展的) x m l 文档非平凡 ( n o n t r i v i a l ) 【8 1 转换机制,能够将x m l 文档从一种形式转换为另一种形 式。 2 x m l 数据提取:x q u e r v 可以从不同的源中( 如x m l 文档、关系型数 据库、本地x m l 数据库) 提取x m l 数据。 3 生成瑚州懈h 刑l :可以使用内嵌x o u e r y 动态生成h t m i 耵m l 页面,类似于其他诸如j s p 、a s p 以及p h p 等技术。 2 2x q u e r y 查询语言 x q u e r y 是一种强类型语言。它有一套基于x m ls c h c m a 的类型系统,其中 定义了一系列的数据类型计算和数据类型转换的规则。借助于此我们可以实现 x q u e r y 语言编译过程中的类型检测。同时x q u e r y 还是一种函数语言,我们可 以使用表达式来表达我们的查询意图。 第8 页 北京邮电大学硕l 研究生学位论文 x q u e w 是函数化的表达式语言,表达式是其查询实现的基础,每一个查询 都是一个简单的或是嵌套的表达式,因此x o u e r y 查询求值的实现主要体现在 表达式的运算中。x q u e r v 定义的表达式由关键词、符号以及操作数组成,由于 它是一种强结构化语言,其表达式中的操作数、算子、函数必需遵循已经定义 好的模式。目前,最新版本的x q u e r y l 0 规范【1 4 l 共有1 4 种表达式:路径表达式 ( p a i l le x p f e s s i o n s ) ,f l w o r 表达式( f l w o re x p r c s s i o n s ) ,元素构造器( e l 锄e n t c o 璐t n l c t o r s ) ,条件表达式( c o n d j t i o n a le x p m s s i o n s ) ,量化表达式( q u 卸t i f i c d e x p 亿蟠i o n s ) ,逻辑表达式( l 0 9 i c a le x p r e s s i o n s ) 比较表达式( c o m p a r i s o n p r c s s i o n s ) ,序列表达式( s c q u e n c ee x p 懈s i o i i s ) ,算术表达式( a d t h m c t i c e x p 托s s i o n s ) ,有序和无序表达式( o r d e f c d 卸du n o r d e r c de x p 化s s i o n s ) ,序列类型 表达式( e x p r 鹳s i so ns c q u e n c c l y p e s ) ,初级表达式( p r i m a r ye x p r e 鹞i o 雌) ,验证 表达式( v a l i d a t ee x p r e s s i o i l s ) ,扩展表达式( e x o 曲s i 彻e x p r e s s i 加s ) 。由于篇幅的原 因,本文只对相关规范【1 1 】【1 3 l 中几种比较常用的重要表达式算法进行讨论和研 究。 2 - 2 1 路径表达式 路径表达式作为订l 数据查询语言的核心部分,是一种对x m l 文档的内 容进行定位、检索的表达式。x q u e r y 中的路径表达式沿袭了x p a t h2 0 i ”j 的语 法,用来对提供x m l 文档的树形表示节点树的数据模型的值进行处理。 节点有七类,包括根节点、元素节点、属性节点、文本节点、命名空间节点、 处理指令节点、注释节点。路径表达式通过这样的节点树来跟踪路径,识别出 所有被路径表达式检索的节点。 2 z 1 1 定位路径 尽管定位路径不是路径表达式中最完整的语法构件,但他们却是最重要的 构件。x p a t h 定义了两个术语:上下文节点集( c o n t e x tn o d e s e t ) 和上下文节点 ( c 咖t “t d e ) ,用来帮助描述定位路径求值过程是如何进行的。上下文节点集 定义为:表达式中给定点确定的当前节点集。上下文节点定义为:正在处理的当 前节点。 定位路径表达式产生一个节点集( n o d c s c t ) 。定位路径可以是绝对路径表达 式( a b l u t el o t j p a t h ) 或者是相对路径表达式( r e l a t i v eb c a t i o np a t h ) 【1 5 r 丌。 下面对二者进行说明: 绝对定位路径表达式由正斜杠( “力及紧随其后的作为可选项的一条相对地 第9 页 北京邮电大学硕l 研究生学位论文 址路径组成。正斜杠本身选择以包含上下文节点的文档的根节点,如果它带着 相对的地址路径,该地址路径选择的节点集合则由相对于包含上下文节点的文 档的根节点相对地址路径来确定。如:b i b b o o k ,确定b i b 根元素的b 0 0 k 子元素。 相对定位路径表达式不以正斜杠( “n 开始并且由正斜杠分开的一个或多个 地址步进序列组成。在相对地址路径中的步进是从左到右组成。每一步进依次 选择相对于上下文节点的节点集。步迸的初始的序列与后续的步迸组成在一起。 例如:c h i i d :b o o k c h i l d :p r i c e ,选择了上下文节点的所有b 0 0 k 元素孩子的所有 州c c 元素孩子,或者换句话说,选择了上下文节点中所有有以b o o k 为父的p r i 元素孙子。如果该定位路径应用于根元素b o o k ,那么相对定位路径表达式将产 生与绝对表达式相同的结果。 定位路径可以通过竖直杠( “l ,) 进行合并。两个节点集的联合除去其中重复 的部分就是合并的结果。如:a u t l l o r i p r i c e 确定上下文节点的a u 出0 r 和p r i 子元 素。 定位路径表达式的求值过程是由定位步骤决定的。定位路径由一个或多个 定位步骤( l 0 c a t i o ns 把p ) 构成,每个定位步骤之间用正斜杠隔开。定位步骤按顺 序( 从左到右) 一次一个地求值。每一个定位步骤都是对照上下文节点集中的节 点进行求值的。第一个定位步骤是把上下文节点集中的每个节点当作上下文节 点进行求值,然后结果节点集被合并为新的节点集,这个节点集成为下一步操 作的上下文节点集。这样的处理在路径的每一个定位步骤中持续进行,最后的 定位步骤产生的节点集就是这个表达式的结果。 2 2 1 2 定位步骤组成 定位步骤有三个部分: 1 轴标识符( a x i si d e n t j f j c r ) :指明定位步骤选择的节点与上下文节点在节 点树上的关系; 2 节点测试( n 0 d et c s t ) :指明定位步骤选择的节点的类型和扩展名称; 3 零个或多个谓词( p f c d i t c ) :使用任意的表达式进一步精简选择的节点 集。 x p a l h 定义了多个轴,每一个轴确定与上下文节点相关的一系列节点。轴 包括前向轴( f o 聊a r d a 工动( 如表2 - l 所示) 和反向轴( r e 蹴a x i s ) ( 如表2 - 2 所示) 。 第1 0 页 北京邮电人学硕1 :研究生学位论文 表2 1f o r m r d a 虹名称及描述 轴名称 描述 c h i l d标识上下文节点的子节点 【 c s c e n d a n t标识上下文节点的子孙节点。子孙节点是子节点或子节点 的子节点,依次类推:因此,d e s c c n d a n t 轴永远不包含属 性节点或名称空自j 节点 a 蜘b u t e 标识上下文节点的属性节点。除非上下文节点为元素节 点,否则该轴为空 d 伪c c n d a n t 0 r s e l f 标识上下文节点和d e s c c n d 柚t 轴标识的节点 f o u o w i n g s i b l i n g 标识上下文节点后面的所有兄弟节点。如果上下文节点是 属性节点或名称空间节点,那么f o l l o w i n g s i b l i n g 轴为空 f o u o w i n g 标识同一文档中按照文档顺序在上下文节点之后的所有 节点,不包括子孙节点、属性节点和名称空间节点 s e l f 标识上下文节点 n a m 髓p a c c 标识上下文节点的名称空间节点。除非上下文节点为元素 节点,否则该轴为空 表2 _ 2r e v e f a 】【i s 名称及描述 轴名称描述 p a 咖t如果上下文节点有父节点,那么标识上下文节点的父节点 a n s t o r标识上下文节点的祖先节点。上下文节点的祖先节点包括 上下文节点的父节点和父节点的父节点,依次类推。因此, a j l c c s t o r 轴始终包括根节点,除非上下文节点是根节点 p “,c e d i n 哥s i b i i n g 标识上下文节点前面的所有兄弟节点。如果上下文节点是 属性节点或名称空间节点,那么p 陀c c d i n 哥s i b l i n g 轴为空 p 嗽列i i l g 标识同一文档中按照文档顺序在上下文节点之前的所有 节点,不包括任何祖先节点、属性节点和名称空间节点 a m c e s i ( r - o r - s e l f 标识上下文节点和a n c c s t o r 轴标识的节点 每一个轴都有一个方向和主节点类型。包括上下文节点以及其后续节点( 按 照文档顺序) 的轴称为前向轴;包括上下文节点以及其前驱节点( 按照文档顺序) 的轴称为后向轴,对s e l f 轴来说,它最多包括上下文节点一个节点,称其为前 向轴或后向轴都可以。需要注意的是,每个轴都有其首选节点类型,即在进行 节点测试时,节点的类型首先应该符合轴的首选节点类型,对a t t 曲u t e 轴,首 第1 1 页 北京邮f u 大学硕i :研究生学位论文 选节点类型为属性节点:对n a m e s p a c c 轴,首选节点类型为命名空间节点;对 其他轴,首选节点类型为元素节点。 节点测试用于确定轴中的结点。如果给定的节点的节点测试值为t ur c ,则 它保留在节点集中;否则,它被从节点集中移除。当且仅当节点的类型是基本 类型【1 6 l 且扩展名等于由q n a m e 指定的扩展名时,为q n 锄e 节点测试才为真。 例如,c h i l d :b o o k 选择了上下文节点的a u l h o rb 0 0 k 元素孩子,如果上下文节点 没有b 0 0 k 孩子,它将选择节点的一个空集合;a t t 曲u t e :y e a r 选择了上下文节点 的”a r 属性,如果上下文节点没有y e 缸属性,它将选择节点的一个空集合。对 于基本节点类型的任何节点,节点测试都为真。例如,c h j l d :t 将选择上下文的 所有的元素孩子,而a t t 曲u t e :将选择上下文节点的所有的属性。 如果要对节点集进行进一步的过滤,可以使用谓词。谓词被置于定位步骤 末端的方括号中。谓词删除一个节点集以生成新的节点集。对于节点集中每一 个被筛选的节点,谓词表达式将此节点做为上下文节点进行求值,结果强制转 换为布尔类型值。如果结果为t l l r c ,则节点保留在节点集中,否则,它将从节 点集中被删除。谓词表达式可以是任意的基本表达式。谓词一般针对节点的上 下文位置,上下文大小,节点名称,属性值等进行计算,其中,上下文节点大 小为原节点集节点的个数,上下文位置为当前计算节点在原节点集中的位置, 从1 开始计数,上下文位置根据轴的方向计算方法略有区别。 假设现有如下表达式: c h i l d :b i d d e s c e n d a n t :b o o k 【a t t r i b u t e :y e a r = ”2 0 0 0 ”】e h i l d :a u t h o r 其节点步骤组成说明如下图2 1 所示: 图2 - 1 定位路径与定位步骤 其中,初始节点集由定位步骤c h i l d :b j b 得出,其后找出与初始节点集b i b 有关系的b 0 0 k 的节点产生新的节点集,其中b i b 与b k 的关系由轴d e 辩n d a m 确定,在此节点集中由谓词a t t 曲u t e :y e 盯= 。2 0 0 0 ,进行过滤,即在上述节点集中 找出关系为属性,节点测试为”盯,且y e 缸的值为2 0 0 0 的节点。最后在这些 第1 2 页 北京邮电人学硕i :研究生学位论文 节点中,找出其孩子为叫t h o r 的节点,这些满足条件的a u t h o r 节点构成了最终 结果。 2 2 2f l w 0 r 表达式 x o u e r y 中最强大的新特性是f l w 0 r 表达式。x q u e r y 提供该表达式来重 复节点组和将中间结果捆绑到变量。我们先了解一下x q u e r y 中的常量和变量。 常量和变量是x q u e r y 中最为基本的表达式构件。常量以字面量的方式代表一 个值。而变量引用总是以美元符号( $ ) 开始,后面跟随变量的名字。例如:$ b o o k , 声明了变量b o o k 。 “f l w o r ”发音同“n o w e r 竹。它们看上去和s q l 的辩l e c t 语句类似,并且具 有相似的功能。使用f l w 0 r 语句,可以用比x p a t h 语句更自然的方法来创建 非常特定的查询。f l w 0 r ,代表f o r ,l e t ,w h e ,0 t d c rb v 以及r c t i i m 子表达式。 下面分别介绍各个子表达式的用法。 2 z2 1l 子旬和i 麒于句 f l w o r 表达式中f o r 和l e t 子句的用途是产生一个元组流,其中每个元组 包含一个或多个绑定变量。最简单的f o r 子句的例子是包含一个变量和一个关 联的表达式。表达式的值为一个输入序列( i n p u ts e q n c c ) ,f o r 子句迭代输入序 列中的数据项,依次将变量与每个数据项绑定。一个f o r 子句也可能包含多个 变量,每个变量有一个关联表达式,其值为那个变量的输入序列在这种情况 下,f o r 子句迭代每个变量到其输入序列。结果元组流对每一个值与输入序列的 笛卡儿乘积的组合包含一个元组。 一个l e t 子句也可能包含一个或多个变量,每个变量有一个关联表达式。然 而,与6 d r 子句不同的是,一个l c t 子句将每个变量与其关联表达式的结果绑定, 并不迭代。由l c t 子句生成的变量绑定加到由f o r 子句生成的绑定元组上。如果 没有f o r 予

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论