已阅读5页,还剩57页未读, 继续免费阅读
(计算机软件与理论专业论文)基于xml的异构数据集成技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 本文针对异构数据集成过程中的模式转换问题,提出一种x m l 模式与关系库 模式的转化方法,通过定义x m ls c h e m a 与关系模式之间的转换规则,以x m l s c h e m a 文档树生成的结点树为基础,实现了x m l 模式与关系模式的映射。该方 法的最大特点是它不但可以反映数据的结构特征,而且还能表示数据的语义约束。 然后针对不用d t d 和s c h e m a 验证有效性的x m l 文档在关系数据库中的存储问 题,以d i e t z 区间编码方案为基础,提出了一种中粒度的存储模式,该方法先对 x m l 文档进行分片,然后按照设计好的关系模式将文档存入关系数据库中,最后, 对不同规模的x m l 文档数据进行数据存储实验,得出实验数据,并且对中粒度方 法和细粒度方法得到的数据进行比较,通过分析可得中粒度方法在一定程度上减 少了订l 文档到关系数据库的存储时间。 关键字:x m l 模式关系模式中粒度方法 a b s t r a e t a b s t r a c t a na p p r o a c ht os e tu pt h ec o n v e r s i o nb e t w e e nt h ex m ls c h e m aa n dt h er e l a t i o n s c h e m ai nt h ep r o g r e s so fi s o m e r o u sd a m i n t e g r a t i o ni sp r e s e n t e di nt h i sd i s s e r t a t i o n i n t h i sa p p r o a c h , t h ec o n v e r s i o nr u l e sb e t w e e nx m ls c h e m aa n dr e l a t i o ns c h e m aa l e d e f m e df i r s t b a s e do nt h ex m ls c h e m ad o c u r n e n tt r e e an o d et r e ei sc r e a t e d t h e nt h e c o n v e r s i o ni si m p l e m e n t e da c c o r d i n gt h en o d et r e e i tn o to n l yr e f l e c t st h es t r u c t u r e c h a r a c t e r i s t i co ft h ed a t a , b u ta l s ok e e p sm o s to ft h es e m a n t i ca t t r i b u t e sa n dc o n s t r a i n t s o ft h ed a t a a f t e rt h a t i no r d e rt os o l v et h et h ep r o b l e mt h a th o wt os t o r ex m l d o c u m e n ti n t od a t a b a s e ,at e l a t i o ns c h e m ao fm i d d l e s i z eg r a n u l a ri sd e f i n e du n d e rt h e d i e t zr e g i o n b a s e dc o d i n gs c h e m a i nt h i sm e t h o d , t h ex m ld o c u m e n t w a sb r o k e ni n t o 矗a g m e m sf i r s t , a n dt h e ns t o r e dt h e mi n t od a t a b a s e a t1 a s t f o rt h ed i f f e r e n ts i z ex m l d o c u m e n t ,t h es a m ee x p e r i m e n th a sb e e nd o n e s o m ed a t aw e r ec o l l e c t e d ,a n da n a l y s e s w e r ed o n ea tt h eg a n l et i m e a c c o r d i n gt ot h ea n a l y s e s ,t h em i d d l e ,s i z eg r a n u l a rm e t h o d c a l ls a v em o r et i m et h a nt h el i t t l e s i z eg r a n u l a rm e t h o d k e y w o r d :x m ls c h e m a r e l a t i o ns c h e m am i d d l e - s i z eg r a n u l a r 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果:也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处, 本人签名:扭 本人承担一切相关责任。 日期: 2 :! :2 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其他复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密在年解密后适用本授权书。 本人签名: 导师签名: 日期:立! :! 只期:四:z ! 第一章绪论 第一章绪论 1 1 研究背景 随着信息化技术的发展,越来越多的应用需要访问各种异构数据源。对于企 业应用来说,这既是企业内部发展的需要又是企业适应外部环境的需要。企业在 发展过程中积累了大量数据,并为存储和管理这些数据不断投资。然而,由于实 施数据管理系统的阶段性、技术性以及其他经济和人为因素的影响,以至于即使 在一个单独的企业内,也存在异构数据源。尽管这些数据管理系统能够满足数据 存储和管理要求,但是在许多情况下,为完成一项工作,企业应用可能需要访问 分布在网络不同位置上的多个数据管理系统中的数据。因此需要一个强大的系统 能够集成存在于分布数据源中的数据。 学校也面临着同样的问题。高校中的很多部门,例如人事处、财务处、教务处 或者是各个不同的系都有着自己的信息系统,并且这些信息系统所使用的数据库 管理系统可能又各不相同( 如m ss q ls e r v e r ,d b 2 ,o r a c l e ,m y s q l ,f o x p m ,m s a c c e s s ,s y b a s e 等) ,系统之间相互孤立,信息不能共享,造成信息资源的不一致 性与浪费,给高校的整体信息化进程带来了很大的困难。高等学校的发展又要求 快速获得学校各方面的准确信息以进行决策,但是若各部门的系统各自为政,则 会给获得及时可靠信息、并通过信息进行决策造成很大困难。 归纳起来,目前高校内部的信息系统可能存在着以下问题: 1 ) 信息分散,无统一管理; 2 ) 各部门、各单位的数据缺乏交互,造成数据不一致或数据冗余; 3 ) 大量的数据或信息被闲置,没有得到很好的利用或应有的处理,或仅仅 对数据迸行了初步的加工处理,缺少用于控制、预测和辅助决策的信息; 4 ) 由于网络的快速发展,系统的升级换代或者是使用了不同的信息系统, 旧有的系统与新系统不能兼容等。 对于以上的问题可以有如下几种解决方案: 1 ) 推倒原有系统,根据当前需求,重新进行总体规划,开发一个全新的符合 要求的信息系统。将原有数据移植到新的数据库系统中来,为集成不同类型的数 据,必须将一些非传统的数据类型转化成新的数据类型。许多关系数据库供应商 提供了类似的功能。这种集成方式的缺点是随着数据库的升级,原来数据的相关 应用软件,或是被废弃或是重新开发,以适应新的数据库系统。显然这种方法不 切实际,首先重新开发一套新系统的费用太高,也会造成现有资源的大量浪费; 2 基于x m l 的异构数据集成技术的研究与实现 用户可能已经适应原有系统,要适应新系统,又要投入很大的入力物力,适应新 的系统往往又需要很长时间;需求总是在不断的变化,不可能为了一个新的需求 而将系统重做一遍。因此,通过重新实现新的系统而将原有数据进行迁移并不是 一个好的解决方案。 2 ) 通过联邦数据库系统( f e d r a t e dd a t a b a s es y s t e m ,f d b s ) 达到部分数据共 享的目的。联邦数据库系统是由参与联邦的半自治的数据库系统组成,联邦中的 每个数据库的操作是独立于其它数据库和联邦的。之所以叫“半自治”是因为联 邦中的所有数据库都添加了彼此访问的接口。联邦数据库系统分为紧耦合f d b s 和松耦合f d b s 两种。紧耦合f d b s 有一个或几个统一的模式,这些模式可通过 模式集成技术半自动生成,也可通过用户手工构造。要解决逻辑上的异构,就需 要领域专家决定数据库模式间的对应关系。由于模式集成技术不易添加删除联邦 数据库集成系统中的数据库,所以紧耦合f d b s 通常是静态的,且很难升级。松耦 合f d b s 没有统一的模式,但它提供了一些查询数据库的统一语言。这样f d b s 中的数据库更具有自治性,但必须用户解决所有语义上的异构。由于松藕合f d b s 没有全局模式,所以每个数据库都要创建自己的“联邦模式”。f d b s 中实现互操 作最常用的方法是将每个数据库模式分别和其它所有数据库模式进行映射,如图 1 1 所示。这样联邦中需要建立n + ( n 1 ) 个模式映射规则,但当参与联邦的数据库 很多( n 值很大) 时,建立映射规则的任务变得不可行了。所以,联邦数据库集成系 统适合于自治数据库的数量比较小的情况,而且希望数据库能够保持“独立”, 允许用户单独查询,数据库间能够彼此联合回答查询的情况。对于网络上越来越 丰富的数据源,f d b s 显然不是个很好的解决方法“”“”。 翻1 1 传统的转换方式 3 1 利用中间件集成异构数据库,该方法并不需要改变原始数据的存储和管 理。中间件位于异构数据库系统和应用程序之间,向下协调各个数据库系统,向 上为访问集成数据的应用提供统一数据模式和数据访问的通用接口。中间件系统 模式是实现异构数据集成的较理想的解决方案。选用中间件作为异构数据源整合 第一章绪论 3 方案后,必须选择一种合适的方法来实现数据的转换,无论数据格式是结构化的 还是半结构化的 1 7 3 1 8 j 。而) 。讧l 作为一种可扩展标记语言,其自描述性使得) m l 本身非常适用于异构应用问的数据交换,由于咀。能够描述不规则数据,能够从 不同的来源集成数据,因此将x m l 作为数据的描述工具和转换工具来构造数据集 成的中间件,不仅能够适合w e b 发展的需要,还将简化w e b 数据集成系统的实现。 1 2 国内外研究现状 基于x m l 的异构数据源集成中间件有多种技术选择,例如: l 从采用基于x m l 技术的中间件来集成异构数据源或异构信息的角度来看: 美国政府在1 9 9 8 年通过o p a l 计划开始支持y a t ( 基于中间件的信息集成系统) 系统的研究,该系统采用m e d i a t o r w r a p p e r 中间件框架实现了关系模式和s g m l 到 o d m g 的转化,在2 0 0 0 年,该系统的研究再次受到o p a l 计划和a q u a r e l l e 资助, 并以研究基于x m l 中间件信息集成系统( y a t 系统) 为主,其中v c h r i s t o p h i d e s ,s c l u e t 等人主要研究了以x m l 集成视图对异构数据的包装和查询,并提出 了相应的代数体系结构。 w i s c o n s i n 大学和i b ma l m a d e nr e s e a r c hc e n t e r 共同研究和实现了x p e r a n t o 中间件系统。该中间件系统支持对象关系数据的x m l 发布,支持基于x m lq u e r y 的x m l 关系数据视图,以d t d 为目标模式,但不支持主键约束和外键约束的描述, 也不支持多表关系约束的转化。r o n a l d o d o s 、s a n t o s m e l l o 等研究利用中间层结构 集成和查询x m l 数据源的问题。m a r y l a n d 大学研究了基于x m l 代码自动部署和数 据交换m o c h a 中间件。 在国内方面,万常选等人开发了x r e s t o r e 中间件系统,支持x m l 文档在关 系数据库中的存储和查询,该中间件只针对无模式的x m l 文档进行存储和查询, 且只支持细粒度的存储方法。 2 ) 在关系模式和x m l 模式转化( 模式转换是基于x m l 的异构数据库集成中 间件的核心) 方面,已存在转化工具和相关算法的研究。 一些产品实现了关系模式到儿文档的转化,例如o d b c 2 x m l 、o r a c l e s x s q l 、s i l k g o u t e 等工具。目前,除o d b c 2 x m l 、s i l k r o u t e # b ,大部分的工具都 是为相关的数据产品服务,不支持多种异构数据库更不支持其到订l 的集成,而 o d b c 2 x m l 、s i l k r o u t e 虽然支持多种数据库系统,但仍不支持异构数据库的集成。 同时,这些工具大部分都是输出x m ld t d 模式,不支持x m ls c h e m a 模式,本文 将提出一种x m ls c h e m a 与数据库模式的映射方法。 j s h a n m u g a s u n d a r a m 等提出了根据d t d 映射关系模式的存储策略,是一种结构 映射方法。m y o s h i k a w a 、t a m a g a r a 等基于结点模型映射方法提出了一个x m l 数 4 基于x m l 的异构数据集成技术的研究与实现 据的关系存储模式,称为x r e l ,香港科技大学j i a n gh a i f e n g 、l uh o n g j u n 和w a n gw e i 等基于结点模型映射方法也提出了一个x m l 数据的关系存储模式,称3 勾x p a r e n t 嘲。 此外还有基于边模型的映射方法的x m l 数据的关系存储模式,而结点模型映射方 法和边模型的映射方法大都是与x m l 模式无关的,x r e l 、x p a r e n t 模式都是细粒度 的映射模式,本文将在此基础上,提出中粒度的映射模式。 1 3 论文内容 针对以上提到的研究现状和所面临的问题,本文首先对关系数据库的完整性 约束进行研究,定义了x m l 模式和关系数据库模式的映射模型,通过对x m l 模式 的简化和扩展,提出了一种能够完成x l d l 模式和关系模式之间的转换的解决方案。 同时也对不用d t d 和s c h e m a 验证有效性的x m l 文档数据的关系存储模式进行了 研究,并且在前人的基础上,提出了一种以d i e t z 区间编码方案为基础的中粒度存 储方法,实现了x m l 文档的中粒度关系存储。最后详细介绍了相关的模型的实现方 法及相关算法。 1 4 论文结构 论文一共分为五章,各章节内容简介: 第一章:绪论。主要介绍了论文的研究背景,国内外研究现状,本论文研究内 容以及本论文的总体结构。 第二章:x m l 相关技术基础。介绍了咀,的相关技术,如d t d ( d o c u m e n t s t y p ed e f i n i t i o n ) ,x m ls c h e m a 以及x m l 分析器d o m ( d o c u m e n to b j e c tm o d e l , 文件对象模型) 、s a x ( s i m p l e a p i f o r x m l ) 等。 第三章:x m l 模式与关系模式的映射模型建立,描述了x m ls c h e m a 和关系 模式之间转换模型的建立及相关语义规则,并且对不用d t d 和s c h e m a 验证有效 性的x m l 文档的关系存储模式进行论述。这一章主要是一个建模的过程。 第四章:映射模型的实现。在第三章的基础上,对转换模型和存储模型的具体 的实现方法和策略进行描述。 第五章:总结与展望。总结本文所作的工作,并对下一步的工作进行了展望 和讨论。 第二章x m l 相关技术基础 5 第二章x m l 相关技术基础 2 1x m l 简介 帆表示可扩展标记语言( e x t e n s i b l em a r k u pl a n g u a g e ) ,是一种具有数据描 述功能、高度结构性及可验证性的语言。和h t m l 一样,x m l 同样使用标记与属 性;和h t m l 的最大的不同点在于x m l 的标记与属性允许用户自行定义,并可 以按照所定义的标记与属性的语法来开发应用程序,因而具有很好的扩展性。在 x m l 文件中,可以使用标记来描述数据,或配合属性来辅助描述数据,因此x m l 十分适合用于作为标准的描述语言;由于可以借助验证规则( d t d 或x m ls c h e m a ) 来规范一个x m l 文件的内容与结构,保证x m l 文档的有效性,所以x m l 又很 适合作为一种数据交换的格式m 1 。 以下面的文档为例,其内容是用户自定义的学生信息: s t u d e n ta g e = 2 2 孙晋 0 7 2 1 4 2 1 2 4 5 男 计算机 汉族 s u n j i n 1 2 6 c o m 上例是一个无模式的x m l 文档( 不用d t d 和s c h e m a 验证有效性) ,它符合 以下规则: 1 ) 以x m l 声明开始x m l 文档,并且必须以小写“x m l ”进行声明,并设置 v e r s i o n 属性,而且必须出现在第一行,而e c o d i n g 则是可选属性,上例中的“v e r s i o n ” 表明是x m l l 0 规格; 2 ) 有且仅有一个根结点( r o o t ) ,上例中的根结点就是s t u d e n t s ; 6 基于x m l 的异构数据集成技术的研究与实现 3 ) 除了内容为空的标记之外,所有标记的开始标记、结束标记必须成对出 现; 4 ) 内容为空的标记结尾必须加上“”,这种标记称为“空标记”,如 r e m a r k 结点所示; 5 ) 标记名称与属性必须合法,且大小写被视为不同,属性的值必须在双引号 或者是单引号之内: 6 ) 特殊字符必须按照规定处理,例如小于号( ) 和结点的开始标记“ ” 相同,必须用“& h ;”来取代。 将符合以上六个条件的x m l 文档成为w e i i - f o r m e dx m l 文档。 2 2 1d t d 2 2x m l 有效性验证 d t d 跚( 文件格式定义) 用来规范x m l 文件的格式定义,它必须定义在文件 头中,以便x m l 分析器在一开始便可以得到这个x m l 文件的格式定义。用d t d 来规范一个x m l 文件主体格式,可分为下面四个部分: 1 ) 规定标记( 元素) 出现的排列方式; 2 ) 元素的构成( 即标记内容的构成) ; 3 ) 属性的种类; 4 ) 实体的声明。 即可以声明内部d t d 又可以声明外部d t d ,内部d t d 的声明语法是: ,外部d t d 的声明语法是: , s y s t e m 一般在d t d 未公开或d t d 属于私人或某特定团体时使用,各个厂商共 同制定x m l 文件文法,并且用d t d 加以描述的时候,此时的d t d 不再属于个人 私有,而是一种公用的d t d ,它可能存放在某个w e b 站点上,此时就可以使用 p u b l i c 参数来标识这个d t d 为公用的d t d 。 d t d 中元素的声明可分为非空元素的声明、空元素声明及不做限制的元素的 声明。非空元素的声明语法: ;空元素的声明 语法: ;不做限制的元素声明; 。 d t d 中属性的声明语法: ,属性( 值) 类型用以指定该属性的设置值类型,共有十种,其 中有c d a t a ,e n u m e r a t e d ,n h n d k e n ,n m t o k e n s ,e n t i t y ,e n t i t e s , n o t a t o o n ,i d ,i d r e f ,i d r e f s 等,属性的内建值类型代表是否需要设置属 第二章x m l 相关技术基础 7 性值,是否有默认或固定值等,共有四种可供选择,分别是# r e q u i r e d 、# i m p l e d 、 卯嘞及特定的默认字符串,其中前三种最为常用。 d t d 中的实体是一个事先定义好的数据,当想要获取该数据时,只要使用“引 用方式”便可以将数据放入引用之处。实体也分为内部实体和外部实体,对于内 部实体,实体在声明时已经被完整定义,并且是在文件头处声明,因此内部实体只 能够是文字,其声明是 ,而对于外部实体,则是 定义在单独的d t d 文档中,其声明是 。 仍以上面例子中关于学生信息的x m l 文档为例,其d t d 文档如下: , 假设这是一个外部的d t d 文档,名字叫s t u d e n t s d t d ,学生的相关信息的x m l 文档要使用该d t d 文档,必须在该x m l 文档的前面加上这样一条语句: ,此时 要改为以下形式 。 2 2 2 】( 1 f 【l 模式 x m ls c h e m a m m ”完全遵循x m l 的基本语法。它是一种描述信息结构的模 型,通过它可以定义一个x m l 文档的有效结构,规范文件中标签和文本可能的组 合形式。 w 3 c 定义了x m l s c h e m a 文档的文法,其中比较常用到的有元素声明、属性 声明、复杂类型声明以及简单类型声明等,下面便对它们声明的表达式做出简要 8基于x m l 的异构数据集成技术的研究与实现 说明: 1 ) 对元素类型的声明:元素声明用于给元素指定元素类型名称和数据类型, 在x s d l 中,通过使用e l e m e n t 元素来实现。元素声明可以是全局的,也可以是局 部的,全局元素的父元素是s c h e m a ,局部元素只出现复杂类型定义内部“”。其声 明的表达式如下: c o n t e n t :( a n n o t a t i o n ? ,( ( s i m p l e t y p ec o m p l e x t y p e ) ? ,( u n i q u ek e yk e y r e f ) + ) ) 矧跚锄护 2 ) 对属性元素的声明:在x s d l 中,使用a t t r i b u t e 元素来声明属性元素。属 性声明可以是全局的,也可以是局部的。全局属性声明出现在模式文档的最顶层, 也就是说,它的父元素是s c h e m a 元素,局部属性声明完全出现在复杂类型定义中, 它们仅能在该类型定义中使用,而且不能被其他类型重用“”。其声明的表达式如 下: c o n t e n t :( a n n o t a t i o n ? ,s i m p l e t y p e ? ) 3 ) 对复杂类型的声明:复杂类型的元素拥有子元素或属性,复杂类型的声 明为复杂类型的元素提供一种表示方法“”。在x s d l 中,通过e o m p l e x t y p e 实现。 其声明的表达式如下: 。 c o n t e n t :( a n n o t a t i o n ? ,( s i m p l e c o n t e n t e o m p l e x c o n t e n ti ( ( g r o u pfa l l c h o i c ei s e q u e n c e ) ? ,( ( a t t r i b u t ea t t r i b u t e g r o u p ) + ,a n y a t t r i b u t e ? ) ,( a s s e r tr e p o r t ) 8 ) ) ) 4 ) 对简单类型的声明:元素和属性都可以使用简单类型来描述组件的数据 内容,简单类型有三种:原予类型、列表类型和联合类型,在x s d l 中,通过 s i m p l e t y p e 声明。其声明的表达式如下: c o n t e n t :( a n n o t a t i o n ? ,( r e s t r i c t i o n l i s t u n i o n ) ) c o n t e n t :( a n n o t a t i o n ? ,( s i m p l e t y p e ? ,( m i n e x c l u s i v em i n l n c l u s i v em a x e x c l u s i v e m a x l n c l u s i v e t o t a l d i g i t sf r a c t i o n d i g i t s m a x s e a l em i n s e a l e l e n g t hm i n e n g t h m a x l e n g t he n u m e r a t i o n w h i t e s p a e eip a t t e r n ) ) ) c o n t e n t :( a n n o t a t i o n ? ,s i m p l e t y p e ? ) c o m e n t :( a n n o t a t i o n ? ,s i m p l e t y p e 4 ) 上面例子中,学生信息的x m ls c h e m a 文档如下所示: x s :e l e m e n tn a m e 2 ”s t u d e n t l a m e ”t r g e = ”x s :s t r i n g ”侈 x s :e l e m e n tn a m e = ”s t u d e n t n o ”t y p e = ”x s :s t r i n g ”6 x s :e l e m e n tn a m e = ”s e x ”够p e = “x s :s t r i n g ”胁 x s :e l e m e n tn a m e 掣d e p t ”t y p e 创x s :s l a - i n g ”胁 x s :e l e r n e n tn a m e = n a t i o n t y p e = ”x s :s t r i n g ”伶 2 2 3s c h e m a 和d t d 的比较 x m l s c h e m a 在很多情况下作用和d t d 相同,但x m ls c h e m a 的功能却要远远 超过d t d 。d t d 有如下缺点: 1 ) d t d 使用了一个属于自己的语法,例如“ ”与 “ ”,它明显与x m l 的标记语法不同,因此要使用一套与处理x m l 文档完全不同的方法来进行处理。 2 ) d t d 对于数据类型的支持过少,在d t d 的定义当中,只能定义p c d a l 渔 这一种字符串数据类型,这明显不足。 3 ) d t d 所支持的结构定义灵活性较低,d t d 所支持的结构定义是根据正则 表达式( r e g u l a r e x p r e s s i o n ) 发展起来的一套系统,因此d t d 能够定义出来的语法, 原则上跳脱不了规范语法( r e g u l a rg r a m m a r ) 的集合,虽然它提供了o 个以上与1 个以上重复的语句定义,以及0 次或1 次的选择定义,但是在现实的应用上,常 常还是不足以描述实际的文件格式,或者即使可以定义出文件格式,但却会显得 d t d 非常的冗长。例如:定义a 元素之下可以出现1 次以上的b 元素时,d t d 可以非常简洁的定义 ,在定义a 元素之下可以出现1 次以 上2 0 次以下的b 子元素时,将会非常麻烦m 1 。 与d t d 相比,x m ls c h e m a 有如下优点: 1 ) 任何一个x m ls c h e m a 文件本身就是一个w e l l f o r m e dx m l 文件,可以 像处理x m l 文档一样进行处理。 2 ) x m ls c h e m a 对于数据类型的支持较多,包含有字符串、布尔值、整数、 浮点数、时间、日期等,而且还支持由这些简单的类型生成复杂的类型。 3 ) x m l s c h e m a 矛l j 用两个属性m i n o c c u r s 与m a x o c c u r s 来达到控制于元素出现 次数的目的,比起d t d 来更具有灵活性。 4 ) 用户自定义数据类型,被称为原型( a r c h e t y p e s ) 。并且原型可修改,d t d 定义的内容模式是封闭的,而x m ls c h e m a 定义的是开放的、可修改的,x m l 中 基于x m l 的异构数据集成技术的研究与实现 定义的类型可以继承1 。 2 3x m l 编程模型 在处理) 叫l 文件时需要用到应用程序接口( a p i ) ,不同的厂家实现了不同的 a p i ,目前处理x m l 文件的标准a p i 主要有两种:s a x 和d o m m l 。 2 3 1 文档对象模型d o m 文档对象模型“( d o c u m e n to b j e c tm o d e l ,d o m ) 是一个抽象数据结构,将 x m l 文档表示为由节点构成的树。o r g w 3 c d o m 包中的不同接口可以表示元素、属 性、字符数据、说明和处理指令,它们都是公用n o d e 接口的子接口。n o d e 接口提 供了在树中导航与处理的基本方法。 树的根是d o c u m e n t 对象,表示个完整的形式合理的文档。分析器读取x m l 文档并建立d o c u m e n t 对象。客户应用程序调用d o c u m e n t 和其他d o m 接口的方法, 在树中取得x m l 文档信息。程序还可以在内存中操纵树,增加、删除、移动或改 变节点。程序甚至可以在内存中从头生成全新的x m l 文档,然后再将这些新文档 写入x m l 文件中。广度优先搜索、深度优先搜索、中序遍历、先序遍历、后序遍 历都适用于d o m 数据结构。 树中每个节点还有一个局部名称、名字空间u r l 和前缀,但有些节点的这些 项目是n u l l 。例如,说明的局部名称、名字空间u r l 和前缀是n u l l 。每个节点还有 一个节点名。对于元素和属性,节点名是前缀名。对于标记与实体等其他项目, 节点名是项目名。对于文本节点之类没有名称的节点,节点名是匹配节点类型的 下列值:# d o c u m e n t 、# c o m m e n t 、# t e x t 、# c d a t a - s e c f i o n 、自k l o c u m e n t - f r a g m e n t 。 最后,每个节点还有一个字符串值。对于说明和文本节点之类的文本项目,字符 串值通常是节点的文本。对于属性,字符串值是属性的规范化值。对其余项目, 包括元素和文档,这个字符串值是n u l l 。d o m 把节点分为十二类:文档节点、元素 节点、文本节点、属性节点、处理指令节点、说明节点、文档类型节点、文档段 节点、标记节点、c d a t a 段节点、实体节点和实体引用节点 d o m 用接口定义语言( i d l ,i n t e r f a c ed e f i n i t i o nl a n g u a g e ) 定义,因此是语言 中立的。d o m 可以关联在大多数面向对象的语言中。 2 3 2x m l 简单编程接口s a x s a x n l l 是1 9 9 7 年末到1 9 9 8 年初发明的,p e t e rm u r r a y - r u s t 和几个用j a v a 编 写x m l 分析器的作者发现不应该用多个相似而不兼容的a p i 来做相同的事。 m u r r a y - r u s t 最早提出了“y a x p a p i ”,( 另一个x m l 分析器a p i ,y e t a n o t h e r x m l 第= 章x m l 相关技术基础 p a r s e ra p l l ,他希望建立一个人人都能同意的标准a p i 。分析器作者t u nb r a y 与 d a v i dm e g g i n s o n 迅速参与了这个项目,开始在x m l d e v 邮件清单上公开工作, 并得到许多人的参与。m e g g i n s o n 编写了最初的s a x 草案,经过一个短时间的测 试后,1 9 9 8 年5 月1 1 日推出了s a ) ( 1 0 。 用抽象接口而不是具体的类来定义s a x ,使其可以放在分析器现有的a p i 之 上。s a x 并不是最复杂的沮,a p i 。分析器厂家很容易用不同的体系结构实现 s a x ,使其取得成功和迅速标准化。尽管s a x 是个事实标准,但没有进行任何正 式的标准化过程。1 9 9 9 年后期,开始s a x 2 的工作,从根本上改造了s a x ,同时 保持基本的面向事件体系结构,几乎替换了s a x l 中每一个类。这个巨大改变的 主要动力是为了使s a x 支持名字空间。但是,s 2 中还增加了许多其他新功能, 包括过滤和可选支持词典事件与d t d 。s a x 2 于2 0 0 2 年5 月完成,比s a x l 取得 了更大成功。事实上,s a x 2 是目前最完整的x m l a p i 。2 0 0 2 年,所有支持s a x 的主要分析器都支持s a x 2 。 s a x 是不同舡。分析器之间共享的第一个标准a p i 。s a x 在皿a p l 中的 独特之处在于它建模分析器而不是建模文档。 两个关键s a x 接口是) 0 订l r e a d e r 和c o n t e n t h a n d l e r ,前者表示分析器,后者 让分析器与客户应用程序通信。分析器从头到尾读取文档,在此过程中遇到开始 标志、结束标志、文本、说明、处理指令等。在s a x 中,分析器通过调用 c o n t e n t h a n d l e r 对象中的方法告诉客户应用程序看到了什么。客户应用程序实现 c o n t e n t h a n d l e r 接口,收到文档内容通知。客户应用程序实例化c o n t e n t h a n d l e r 接 口的客户端特定实例,并向准备分析文档的c o n t e n t h a n d l e r 注册。阅读器读取文档 时,回调注册的c o n t e n t h a n d l e r 对象中的方法。一般模式与a w t 和s w i n g 中处理 事件的方法非常相似。 只有在最简单的程序中,这些回调方法才能在需要时提供所要的全部信息。 通常的情况是在分析文档的同时逐渐填充一个或几个数据结构。任何s a x 程序的 复杂性大致与所要建立的数据结构的复杂性成比例。 2 3 。3d o m 和s a x 的比较 s a x 比其他分析器的最大优点是内存效率高。只须在内存中存放文档中实际 关心的部分,而可以忽略其他部分。相反,d o m 则要同时把整个文档放进内存中。 此外,d o m 数据结构比序列化x m l 本身效率低得多。d o md o c u m e n t 对象所占 的内存量可能比在数组中保存文档字符所需的内存多十倍。这样就严重限制了 d o m 和其他树形a p i 能处理的文档长度。相反,s a x 处理的文档则可以大大超 过可用内存量。如果文档超过g b 阀值,则惟一的方法是使用s a x 1 。 1 4 基于x m l 的异构数据集成技术的研究与实现 此外,s a x 特别适合流式应用程序。s a x 程序可以在分析器到达中部之前开 始处理文档开头。这在低带宽环境中特别重要,如在大多数网络应用程序中。例 如,如果客户向经纪人发送的x m l 文档包含一列要买的股票,则经纪人可以在收 到和分析整个文档之前先执行第一个交易。这里多线程特别有用。 s a x 的缺点是大多数程序更关心x m l 文档而不是x m l 分析器。换句话说, 建模x m l 文档的类层次比建模分析器的类层次更自然也更接近需求。s a x 程序 通常比较迟钝,很难同时提供所要的全部信息。通常,要在内存中建立数据结构, 存储感兴趣的文档部分,直到准备使用。更糟的是,最终可能要建立整个文档的 树模型,这时还不如直接使用d o m 或其他树模型,从而节省自己的工作“。 d o m 的缺点是不像s a x 那样可以提供那么多x m l 文档中的信息。尽管d o m 与s a x 都支持元素、文本与属性的基本内容,但x m l 文档还有许多方面的信息 在s a x 中提供而没有在d o m 中提供,包括非分析实体、标记、属性类型和d t d 中的声明。 而对于x m ls c h e m a 和关系模式的转换,由于x m ls c h e m a 文档不是很大, 因此采用d o m 来解析x m ls c h e m a 文档,可以取得比较好的效果。 由于在关系数据库中存储的x m l 文档往往都是比较大型的文档,因此若用 d o m ,则首先要对x m l 文档在内存中,建立一个d o c u m e n t 往往耗费大量内存, 即使内存较大,也仍然满足不了d o m 的要求,因此在存储沮,文档的时候,采 用的是内存效率高的s a x 。 2 4j a v a 数据库连接 j d b c ( j a v ad a t a b a s ec o n n e c t i v i t y ) 是一个通用的s q l 数据库访问和存储结 构,支持基本s q l 功能的底层应用程序编程接口( a p i ) ,它在不同的数据库功能 模块层次上提供一个统一的用户界面。这使得程序员只需要对简单的数据库界面 进行操作,使得d b m s 的j a v a 应用程序的开发工具和产品成为可能,同时也提供 多样化的数据库连接方式。 下面将介绍j d b c 的特点: 1 ) 在s q l 水平上的a p i j d b c 是为j a v a 语言定义的一个s q l 调用级界面,也就是说其重心在于执 行基本的s q l 声明和取回结果,在此基础上可以定义更高层次的a p i ,其中的接 口可以直接将基本表与j a v a 中的类相对应,提供更多通用查询的语义树表示,以 及提供j a v a 语言的嵌入式s q l 语法。 2 ) 与s q l 的一致性 一般的数据库系统在很大范围内支持s q l 的语法,但它们所支持的一般只能 第二章x m l 相关技术基础 是s q l 语法全集中的一个子集,并且通常它们有许多更强的功能,例如外部连接 及过程存储等方面彼此不能一致,而j d b c 可使用从属于d b m s 的任何查询语句, 因此一个应用程序可以使用尽可能的s q l 功能,尽管在一些d b m s 中可能会出现 错误,即不限制用户使用所有的s q l 语法,而是在驱动程序中加以限制,用户通 过使用j d b c 中提供的一些功能函数来获取有关数据库的基本信息,在对数据库 进行操作来避免错误。实际上一个应用程序的查询甚至不必是s q l 形式的,它可 以是s q l 的特定演化形式。 3 ) 可在现有数据库接口之上实现 j d b cs q l a p i 保证能在普通的s q l a p i 上实现,特别是o d b c ,这种特点 使j d b c 的功能交得更加丰富。 , 4 ) 提供与其它j a v a 系统一致的j a v a 界面 j d b c 提供与j a v a 系统其他部分一致的j a v a 界面,这对于j a v a 语言来说有 着非常重要而且积极的意义。在很大程度上意味着j a v a 语言与标准运行系统被认 为是一致的,简单化的并且是功能强大的。 5 ) 简单易行 j d b c 的基本a p i 最大可能的简单化,很好的体现了在大多数情况下采用简 单的结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山西天地王坡煤业有限公司全球校园招聘历年真题汇编附答案解析
- 2026年机械员之机械员专业管理实务考试题库200道及完整答案(有一套)
- 2026年金华经济技术开发区基层医疗卫生单位招聘编外合同制工作人员22人历年真题汇编及答案解析(夺冠)
- 2025江西吉安市青原区两山人力资源服务有限公司招聘项目制人员2人笔试备考试卷带答案解析
- 2025山东东营市河口区引进第二批急需紧缺卫生专业技术人才15人笔试备考试卷附答案解析
- 2025北京石景山区卫生健康委所属事业单位面向应届毕业生和社会人员招聘工作人员29人备考题库附答案解析
- 2025黑龙江大庆市人力资源和社会保障局所属事业单位选调1人历年真题汇编带答案解析
- 2025年黄山市徽城投资集团有限公司招聘11人历年真题库附答案解析
- 2025年11月江西赣江新区建昌资产运营集团有限公司面向社会猎聘管理人员1人备考题库附答案解析
- 2025广西南宁市马山县人力资源和社会保障局招聘外聘人员1人笔试模拟试卷带答案解析
- 2025年11月广东深圳北理莫斯科大学附属实验中学面向2026年应届毕业生招聘教师15人笔试考试参考试题及答案解析
- 学术论文标准格式规范
- 2025年国家工作人员学法用法试题库及参考答案
- 低氘水对3D皮肤模型抗衰老效果的机制研究
- 重性精神病家庭护理知识
- 2025贵州贵安商业资产运营管理有限公司招聘11人考试笔试参考题库附答案解析
- 循证护理教学20章
- 2025年山东颐养健康产业发展集团有限公司权属企业社会招聘考试笔试模拟试题及答案解析
- 试验员安全生产责任制内容
- 用电安全教育主题班会课件
- 2025年广东公务员笔试考试《行测》试题及参考答案
评论
0/150
提交评论