(计算机软件与理论专业论文)关于xml+schema到关系模式映射的研究.pdf_第1页
(计算机软件与理论专业论文)关于xml+schema到关系模式映射的研究.pdf_第2页
(计算机软件与理论专业论文)关于xml+schema到关系模式映射的研究.pdf_第3页
(计算机软件与理论专业论文)关于xml+schema到关系模式映射的研究.pdf_第4页
(计算机软件与理论专业论文)关于xml+schema到关系模式映射的研究.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机软件与理论专业论文)关于xml+schema到关系模式映射的研究.pdf.pdf 免费下载

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

文档简介

关于x m ls c h e m a 到关系模式映射的研究 专业: 硕士生: 指导老师: 计算机软件与理论 杨浩 李才伟副教授 摘要 近年来,x m l 在各种应用中得到了广泛的使用,w e b 上涌现了海量的x m l 数据。为了有效地加工、分析和处理x m l 数据,研究者们已经提出了各种x m l 的存储管理技术。基于关系数据库的x m l 数据存储成为了最为流行的方式,受 到了广泛的关注。由于x m l 模式在x m l 文档的关系存储中起着异常重要的作 用,所以x m l 模式到关系模式的映射更是成为了现在乃至未来的一个研究热点。 本文讨论了x m l 文档与关系数据库之间的关系,由于数据结构不同,二者 之间的数据不能够被直接访问。分析了目前x m ls c h e m a 与关系模式之间的一 些主流映射算法,并指出了它们存在的一些问题和缺陷。 本文在对目前的一些主流映射算法的深入研究分析之后,针对这些算法的缺 陷,设计并实现了一个基于j d o m 的带约束的x m l 模式到关系模式的映射算法。 本算法与现存的一些算法相比,有如下优势: 1 对元素的映射更为详细,更符合x m ls c h e m a 的要求。 2 对于x m l s c h e m a 一致性约束保持方面给出了一种比较好的解决方案。 3 对于x m ls c h e m a 的结构信息保留的更为完整。 关键词:x m ls c h e m a ,关系模式,j d o m ,数据转换 r e s e a r c ho ft h em a p p i n gf r o mx m l s c h e m at or e l a t i o n a ls c h e m a m a j o r :c o m p u t e rs o f t w a r e t h e o r y n a m e :h a oy a n g s u p e r v i s o r :c a i w e il i a b s t r a c t r e c e n t l y ,x m lh a sb e e nw i d e l yu s e di nv a r i o u sa p p l i c a t i o n s t oo r g a n i z ea n d m a n a g ex m l d a t ae f f i c i e n t l y ,d i f f e r e n tq u e r yl a n g u a g e sa n ds t o r a g ea p p r o a c h e sh a v e b e e np r o p o s e d a m o n gt h e s ea p p r o a c h e s ,u s i n gr d b m sb e c o m et h em o s tp o p u l a r w a y t h ea l g o r i t h mf o rm a p p i n gx m l s c h e m at or e l a t i o ns c h e m aw i l lb eah o t s p o ti n t h ef u t u r eb e c a u s ei tp l a y sav e r yi m p o r t a n tr o l li nt h es t o r i n gx m ld o c u m e n t si n r d b m s t h i sp a p e rd i s c u s s e st h er e l a t i o nb e t w e e nx m lf i l e sa n dr e l a t i o n a ld a t a b a s e s w ep o i n to u tt h a tt h e yc a n n o te x c h a n g et h ed a t ad i r e c t l yd u et ot h e i rd i f f e r e n td a t a s t r u c t u r e s t h r o u g ha n a l y z i n gt h ep r i m a r ya l g o r i t h m sf o rm a p p i n gx m ls c h e m at o r e l a t i o ns c h e m a ,w ep o i n to u tt h ep r o b l e m sa n db u g si nt h e s ea l g o r i t h m s a f t e rs t u d y i n gt h ep r i m a r ya l g o r i t h m sa tp r e s e n t ,w ed e s c r i b ean e wa l g o r i t h m f o rm a p p i n gx m ls c h e m at or e l a t i o ns c h e m a ,a n dp r e s e n ti t sr e a l i z a t i o n ,a i m i n ga t t h e p r o b l e m s o ft h o s ea l g o r i t h m s c o m p a r e dw i t hs o m ee x i s t i n ga l g o r i t h m s ,m y a l g o r i t h mh a ss o m ea d v a n t a g e sa sf o l l o w s : f i r s t ,m o r ed e t a i l sa r ed e s c r i b e da b o u tt h em a p p i n go fe l e m e n t ,s os a r i s f yt h e r e q u e s to fx m l s c h e m ab e t t e r s e c o n d ,t h ep r o b l e mo fk e e p i n gc o i n c i d e n c er e s t r i c t i o ni nx m ls c h e m ai s s o l v e d t h i r d ,s t r u c t u r ei n f o r m a t i o no ft h ex m ls c h e m ai sm o r ei n t e g r a t e d k e yw o r d s :x m ls c h e m a ,r e l a t i o nm o d e ,j d o m ,d a t at r a n s f o r m i i 第1 章引言 1 - 1 研究背景和意义 近几年,x m l ( e x t e n s i b l em a r k u pl a n g u a g e ,可扩展标记语言) 的各项标准 日臻完善,在各个领域的应用也不断扩展和深入。由于其具有简单性、可扩展性、 易操作性、开放性等优点,因此x m l 在信息表现领域得到广泛的应用。如w e b 浏览、b 2 b 电子商务网上交易和各种w e b 应用等。x m l 已成为互联网上表征和 交换数据的统一标准。随着x m l 数据的大量涌现,需要用经典的关系数据库来 有效的存储、管理和查询x m l 数据。此外,原本存储在关系数据库中的信息又 需要转换成x m l 形式。于是,x m l 存储技术应运而生。这类技术需要解决一 个难题:如何将x m l 文档有效的转化为关系模式存储,并获得尽可能高的执行 效率。 另一方面,当今的数据库的两大主流类型是关系数据库和面向对象数据库, 还有一少部分其它类型,如x m l 数据库。然而由于关系数据库的众多优势:技 术成熟、应用广泛、数据管理能力强( 包括存贮、检索、修改等) 、数据安全程 度高、稳定可靠的并发访问机制等,使得关系数据库仍是目前数据存储的主流数 据库。由于x m l 缺乏像关系数据库这样的有效的数据管理手段,x m l 数据库 尚不能代替关系数据库。但是x m l 在异构数据交换方面具有很大优势,因此, “以关系数据为存贮手段,以x m l 为交换载体”的数据管理方式就成为一种趋 势,而这两种数据间的集成和信息共享则成了研究的热点。 从数据库的内容转换到x m l 文档,这在很多流行的商业数据库产品中己经 实现,如o r a c l e 、m ss q ls e r v e r 、d b 2 等数据库,都可以直接使用s q l 语言输 出x m l 格式的文档。其中有些数据库甚至把内置的数据类型直接映射到x m l s c h e m a 上,如可以使用x m ls c h e m a 将d b 2 数据完整性约束映射至x m l 。但 到目前为止,仍旧没有一个比较完善的算法将一个x m l 文档转换到数据库。 本文只是对这种算法的某些方面进行研究,只给出一个从x m ls c h e m a 到 关系模式的映射算法解决方案,例如本文没有讨论转换中如何对待x m ls c h e m a 中山大学硕士学位论文第1 章引言 中的命名空间、多文档中的模式、抽象元素等等比较高级的内容。只是着重讨论 了一些在转换中必须要考虑的问题,如基础类型元素的转换、一般简单类型和复 杂类型元素的转换等等内容。每种部分的转换都基本给出了详细的转换规则。针 对目前的算法都过分追求性能的提升而损失的过多的结构信息,在转化过程中, 目的是尽量保证x m ls c h e m a 信息的完整性,对确实不能保证的,采用某种变 通的方式来实现。 1 2 国内外研究动态 在对现有的x m l 与数据库技术结合的研究基础上,我们可以发现现在主要 有以下几种不同的研究方向: 1 原生x m l 数据库 n x d ( n a t i v ex m l d b m s ) 1 1 】是专门为存储x m l 文档设计,也兼有一般数 据库的特性,例如支持事务,并发控制,查询语言,安全机制,二次开发接口等。 唯一的不同之处在于其内部存储模型是基于x m l 文档树形结构,而非关系模型。 尽管目前对于原生x m l 数据库( n a t i v ex m ld a t a b a s e ) 的研究还停留在一 个初级的阶段,但是还有一些研究是基于原生x m l 数据库的,这些数据库创建 一些索引,并将这些索引与x m l 文档一起存放到资源库中,以支持快速搜索资 源库以查找特定信息的文档。当前已有一些半结构化数据的研究成果,如l o r e 模型【2 】就一定程度上支持对x m l 数据的d b m s 功能,通过抽取结构信息建立半 结构化的模式,然后实现x m l 数据的查询。由于x m l 数据是半结构化的,已 有的基于半结构化的研究成果都可以应用于x m l 的研究中,半结构化数据的不 确定性使得对数据的插入和删除等操作尤为复杂、效率不高。同时由于半结构 化的数据库尚在研究阶段,应用并不广泛,通过这种方式存储x m l 数据并不合 适。 2 支持x m l 的数据库 一般来说,将x m l 数据存储于传统的数据库,例如关系型,面向对象型或 层次型数据库。并由第三方的中间件完成或数据库本身提供内在支持。该数据库 中山大学碗士学位论文第1 章引言 被称作支持x m l 的( x m l - e n a b l e d ) 【”。 借助支持x m l 的数据库,根据一定的映射关系进行数据转换,将x m l 数 据映射到现有的数据库系统中,然后再进行数据的存储和管理,最后以x m l 的 形式返还给用户。当前x m l 数据模型的映射的研究主要集中在面向对象数据库 和关系数据库的映射方面。 关系数据库以其成熟的技术特点,在当前的数据库市场上占有绝对优势,绝 大多数的数据库应用系统都是建立在关系数据库的基础之上。目前,许多主流的 数据库厂商都在把x m l 支持结合到其产品中,或者提供可在其数据库中使用 x m l 的工具。这种方式很难实现对传统关系数据的改造和继承,仅仅是提供了 融合的途径。在x m l - r d b ( x m l - 关系数据库) 映射转换研究中,由于x m l 和r d b 模式表示的语义、结构关系的机制、方式不尽相同,特别是x m l 语言 有很强的自由度和表现力,它们的数据语义约束信息在提取、映射、转换等方面 的困难性,造成现有带约束的x m l 与r d b 数据转换关键技术研究x m l 与r d b 数据转换的映射算法存在缺陷。仅仅考虑了数据结构信息上的转换,忽略了数据 语义约束的保留。保留约束条件的模式转换还处于研究阶段,还没有一种行之有 效的方法。 1 3 本文主要工作和创新点 本文的主要工作: 本文深入研究了现有基于x m ls c h e m a 的数据转换算法、模型以及相关理论, 指出了它们存在的问题;提出了一种新的x m ls c h e m a 到关系模式的映射算法( 带 约束) ,并给以实现。 本文的创新点: 建立了一套自己的从x m l s c h e m a 到r d b 模式的映射规则。 提出了一种带约束的x m ls c h e m a 到关系数据库模式的映射算法并加 以实现。 第2 章x m l 相关技术简介 2 1x m l 概述 x m l 是e x t e n s i b l em a r k u pl a n g u a g e 的缩写,即可扩展标记语言,是一种可 以用来创建自己的标记的标记语言。它由万维网协会( w 3 c ) 创建,用来克服 h t m l 的局限。和h t m l 一样,x m l 基于s g m l - 标准通用标记语言( s t a n d a r d g e n e r a l i z e dm a r k u pl a n g u a g e ) 。x m l 与s g m l 一样,是一个用来定义其他语言 的元语言。与s g m l 相比,x m l 规范不到s g m l 规范的1 1 0 ,简单易懂,是一 门既无标签集也无语法的新一代标记语言。 2 1 1x m l 的来历 早在1 9 6 9 年,i b m 公司就开发了一种文档描述语言g m l 用来解决不同系 统中文档格式不同的问题,g m l 是i b m 许多文档系统的基础,包括s c r i p t 和 b o o k m a s t e r ,接下来的日子里,这个语言在1 9 8 6 年演变成一个国际标准 ( i s 0 8 8 7 9 ) ,并被称为s g m l 。s g m l 是很多大型组织,比如飞机、汽车公司 和军队的文档标准,它是语言无关的、结构化的、可扩展的语言,这些特点使它 在很多公司受到欢迎,被用来创建、处理和发布大量的文本信息。 1 9 9 6 年,万维网协会( 或者叫w 3 c ,h t t p :w w w w 3 c o r g ) 开始设计一种可 扩展的标记语言,使其能够将s g m l 的灵活性和强大功能与已经被广泛采用的 h t m l 结合起来。这种后来变成x m l 的语言继承了s g m l 的规范,而且实际上 就是后者的一个子集。从s g m l 入手使得该设计小组能够将精力集中在简化已 有的成果上。s g m l 已经提供了一种可以无限扩展的语言,它允许任何人能够根 据自己的需要加以扩充。x m l 之所以要较s g m l 更为简化,很大程度上是出于 易用性的考虑:人们对标记的读写过程应该使用现有的、简便通用的工具,同时, 我们也应当简化计算机对文档和数据交换的处理。由于有太多的可选功能, s g m l 变得过于复杂,以至于很难编写出针对这种语言的普通解释器,而x m l 的解释器则简单得多。此外,x m l 使得现有的i n t e r n e t 协议和软件更为协调,从 中山大学硕士学位论文第2 章x m l 相关技术简介 而简化了数据处理和传输。作为一个不错的s g m l 子集,x m l 还保持了对现有 的面向s g m l 的系统的向下兼容性,这样,用x m l 标记过的数据就仍然可以在 这些系统中使用,为基于s g m l 的行业节省了大笔的改造费用,同时,与w e b 的结合也使得它们更便于被访问峨 在1 9 9 8 年2 月,x m l l 0 的第一版产生了,它是一个推荐版本,是一个非 正式的“标准”。随后,w 3 c 又对它进行修改和更新,到2 0 0 0 年1 0 月,x m l l 0 的第二版出台了。到了2 0 0 4 年2 月4 日,w 3 c 推出了x m l l 1 版1 5 1 。 2 1 2x m l 文档的基本结构 x m l 把数据表示成为一个文本字符串,在字符串中包括了用于描述数据的 “标记”( t a g ) ,使用标记允许把文本和与它的内容或形式相关的信息散布在 一起。每个标记用尖括号“ ”包含字符( 例如,“ ”) 来区别字 符数据( 非标记文本) 。 一个字符串、一个文档由标记和字符数据组成,这些结合起来构成了元素 ( e l e m e n t ) 。元素以一个开始标记开始,以一个结束标记结束。结束标记用尖 括号和一个用来区分开始标记的正斜杠“”来表示,像“ ”。“ i n t e r s p e r s e d ”是一个元素,而“i n t e r s p e r s e d ”就是其中的文本内容。 此外开始标记中可阻包含属性( a t t r i b u t e ) 【6 j 。 如果在某个元素中包含了别的元素,那么这个元素就是所包含元素的父元 素,而那些被包含的元素就是它的子元素。每个x m l 文档都有一个没有父元素 的元素,它就是根元素。根元素是文档中第一个元素,它包含了其它所有元素。 除了根元素以外的其它每个元素有且仅有一个父元素,也就是说这些元素必然封 闭在另一个元素中。每个父元素可以拥有许多子元素1 5 】。 2 1 3x m l 的特点 x m l 以其良好的数据存储格式、可扩展性、高度结构化、便于网络传输等 优势将在许多领域一显身手,便于软件开发人员和内容创作者在网页上组织信 息。不仅能满足不断增长的网络应用需求,而且还能够确保在通过网络进行交互 合作时,具有良好的可靠性与互操作性。它具有以下特点【1 0 】: 中山大学顶士学位论文第2 章x m l 相关技术简介 1 易于扩展。x m l 是摒弃了s g m l 中一些复杂性并考虑到适合w e b 特性 的一个子集,可以定义其他语言,同时x m l 的标记是用户定义的,所以从理论 上讲,其类型的数量可以是无限的。 2 结构性强。x m l 的文件结构嵌套可以复杂到任意程度,能表示面向对象 的等级层次。 3 交互性好。用户与应用进行交互时,使用x m l 可以非常方便地在本地 排序、过滤和进行其他的数据操作。不需要与服务器进行交互。减轻了服务器的 负担。 4 语义性强。x m l 可以白行设计有意义的标记便于异构系统之间的数据交 换和信息检索,实现机器与机器之间的信息交换。 5 纯文本。几乎任何工具都可创建和编辑x m l ,使得程序可以更简单,从 而提供了从小配置文件到企业级数据仓库的可扩展性。 6 基于内容的数据标识。因而可以被不同程序用于不同目的。 7 可格式化。可扩展样式语言x s l ( e x t e n s i b l es t y l el a n g u a g e ) 可以指定如 何显示数据。数据和显示是分离的,可以为同一数据指定不同的样式表用于不同 输出。 8 很强的链接能力。可以定义双向链接、多目标链接、扩展链接和两个文 档问的链接。 9 易于处理。x m l 对格式的定义严格,具有层次结构,而且与厂商无关。 1 0 与平台无关。x m l 文档可无须任何更改直接移植到其他平台上 1 1 。 2 1 4x m l 的优越性 x m l 具备几项革命性的特质,有助于大幅改善现今的电脑、网络世界。下 面针对x m l 最重要的几项特性详细说明: 1 异构系统间的信息互通 从商业的角度来看,这点可以说是x m l 最大的贡献。目前系统与系统之间, 中山大学硕十学位论文第2 章x m l 相关技术简介 往往因为不同的平台、数据库软件等,造成信息流通的困难。在这些异构系统之 间做信息交流,往往需要使用特殊的软件,才能顺利的跨越彼此的门槛、疆界, 非常麻烦。有了x m l 之后,异构系统之间可以很方便的通过x m l 来做交流媒 介。x m l 格式简单易读,对于各类型资料、文章、图形,不论是文本文件还是 二进制文档,都能标注。要做信息交流的各大小系统上只需要装有x m l 的解析 器,便可解读由其他机器所传来的信息,进而加以利用。x m l 解析器取得容易, 有很多优秀的软件供人免费下载。异构系统之间不用再担心看不懂对方的资料格 式,商务往来的公司之间,用不着、也不需要知道对方内部是采用何种格式储存 资料,大家都用x m l 来做中介格式即可。如此一来,某个系统内部的变更,并 不会殃及和它交流往来的其他系统,因为x m l 提供了一层理想的缓冲【1 2 】。 2 保值 s g m l 是一套有十几年历史的国际标准,h t m l 便是一项s g m l 的应用实 例。s g m l 当初设计的一大目标是保值一它是设计来提供文件5 0 年以上寿命的。 多年以来,因为s g m l 太过庞杂,所以一直没有在世界上大量流行起来,一般 只有大型企业或政府机构在使用。 x m l 是s g m l 精简之后的网络版,s g m l 保值的特性,在x m l 中并未消 失。我们不敢保证,使用现在流行的文本编辑软件编写的文档。在5 0 年后还可 以被打开、被识别。如果要让这些文件随着软件的更新和升级,不断的转换、升 级到最新的格式,是非常没有效率的。而且新版的文本编辑软件,对旧版的文件 中的样式,也不一定能忠实重现。 x m l 文件则没有这些问题,在未来的世界,要从x m l 文件转换成其他格 式的文件,更是轻而易举。在图书大量电子化的2 1 世纪,要如何长久保存这些 文件和记录,必将是一大课题。而s g m l 和x m l 的设计,为解决这个问题提供 了一个有效的途径1 1 0 】。 3 更精确的搜索 目前网络中的数据检索主要有两种:一种是分类检索,一种是全文检索,但 是这两种检索数据的方法,在信息量爆炸式增长的今天越来越力不从心。而以 中山大学硕上学位论文 第2 章x m l 相关技术简介 x m l 格式保存的数据具有以下两种功能i ” 以语意标记作为检索索引。 在文件中截取关键部分。 4 数据的显示 由于x m l 将数据保存的格式与数据显示的方式分开,使得x m l 文件可以 轻易的更换数据显示的方式。仅需改变x s l 的设置,用户就可以将同一数据制 作成h t m l 、p d f 、w m l 、h d m l 等不同格式,供不同的硬件显示f 1 3 】。 2 2n m l 模式 2 2 1d t d x m l 被作为一种元标记语言,是一种描述标记语言的语言。这些新的标记 语言( 也叫标记集) 要通过文档类型定义( d t d ) 来定义。各个文档要与d t d 相比较,这一过程称为合法性检验。如果文档符合d t d 中的约束,这个文档就 被认为是合法的,否则就是不合法的。 d t d 代表文档类型定义( d o c u m e n tt y p ed e f i n i t i o n ) 。一项文档类型定义 应规定元素清单、属性、标记、文档中的实体及其相互关系。d t d 为文档结构 制定了一套规则。它可以包括在包含它描述的文档的文件中,或者与外部的u r l 相链接。这些外部d t d 可以被不同文档和网站所共享。d t d 为应用程序、组织 和兴趣组提供了共同遵循的方法,同时也以文档形式阐述了标记标准并强制遵守 此标准。 d t d 有助于不同的人们和程序互相阅读文件。例如,如果化学家们通过专 业机构( 如美国化学协会) 为中介同意将单一的d t d 用于基本的化学记号,那 么他们就能够阅读和理解他们当中任何人的文章。d t d 精确地定义了什么允许 或不允许在文档中出现。d t d 还为查看和编辑软件必须支持的元素建立了标准。 更重要的是,它建立了超出d t d 声明的非法范围。这就使它有助于防止软件商 乘机利用和扩展开放协议以便将用户锁定在他们的专利软件上。 而且,d t d 可以在没有实际数据的情况f 展现出页面上的不同元素是如何 中山大学硕= 匕学位论文第2 章x m l 相关技术简介 安排的。d t d 使人们能脱离实际数据看到文档结构。这意味着可以将许多有趣 的样式和格式加在基本结构上,而对基本结构毫无损害。 d t d 作为x m l1 0 规范的重要组成部分,对于x m l 文档的结构起到很好 的描述作用。但是,它也具有一些缺点,比如,它采用了非x m l 的语法规则、 不支持数据类型、扩展性较差等等。s c h e m aj e 好解决了这些问题。 2 2 2x m ls c h e m a x m l 是一个缺乏良好类型系统的语言。在x m l 的文档中找到的信息只能 被当作文本来对待,这就要求开发人员事先知道“真正的类型”,以便在他们的 代码中采取必要的强制措施。最初,在传统s g m l 派系中文档规则的表示曾经 是d t d 不过,有一些d t d 无法实现的相当常见的约束;d t d 的主要限制在于 它们缺乏数据类型的表达。所以w 3 c 又提出了x m ls c h e m a 规范,为x m l 处 理环境提供了一种类型系统,可以描述打算使用的类型。它可以在把x m l 文档 中的信息传递给应用之前,先检查x m l 文档的有效性。 x m ls c h e m a 就是由一组s c h e m a 组件组成。在x m ls c h e m a 中一共有1 3 种组件。分为3 个类: 1 主要组件( p r i m a r yc o m p o n e n t s ) :简单类型和复杂类型的定义、元素和 属性的声明。它包括:简单类型定义( s i m p l e t y p ed e f i n i t i o n s ) 复杂类型定义 ( c o m p l e x t y p ed e f i n i t i o n s ) ,属性声明( a t t r i b u t ed e c l a r a t i o n s ) ,元素声明( e l e m e n t d e c l a r a t i o n s ) ; 2 二级组件( s e c o n d a r yc o m p o n e n t s ) 包括:属性组定义( a t t r i b u t eg r o u p d e f i n i t i o n s ) 、一致性约束定义( i d e n t i t y c o n s t r a i n td e f i n i t i o n s ) 、模型组定义( m o d e l g r o u pd e f i n i t i o n s ) 和表示法声明( n o t a t i o nd e c l a r a t i o n s ) ; 3 最后是辅助组件( h e l p e rc o m p o n e n t s ) :它们不能被命名或独立访问。 它包括:注释( a n n o t a t i o n s ) 、模型组( m o d e lg r o u p s ) 、粒子( p a r t i c l e s ) 可 以分割的元素组、通配符( w i l d c a r d s ) 、属性使用( a t t r i b u t eu s e s ) 。x m ls c h e m a 使用x m l 语法,当看到x m ls c h e m a 时,感觉它和d t d 的区别最明显的地方 就是x m ls c h e m a 是真正在x m l 中写的。由于d t d 的语法是用巴斯科范式定 9 中山大学硕士学位论文第2 章x m l 相关技术简介 义的,所以一般不容易理解。而x m l s c h e m a 是使用x m l 来描述一个文档,使 用者就用不着再去学习新的语法和相关规则了【7 】1 8 l 【9 】。 2 2 3x m l s c h e m a 与d t d 的比较 由于x m l d t d 具有的一些缺点,比如它采用了非x m l 的语法规则、不支 持数据类型、扩展性较差等等,使得x m ls c h e m a 在近年来得到了国际上许多 知名企业和组织的重视。这是因为x m ls c h e m a 与x m ld t d 相比具有其自身 的许多优点: 1 x m ls c h e m a 相对于d t d 最大的优势就是丰富的数据类型支持,d t d 中几乎没有数据类型的定义。而在x m ls c h e m a 中,却能够知道一个元素或者 属性的内容是字符串、整数、布尔数、浮点数或是其它任何一种类型,这是一个 很大的优势。从属性中读取正确的数据类型,并且在应用处理之前把字符串转换 成合适的数据类型: 2 一致性:x m ls c h e m a 使得对x m l 的定义不必再利用一种特定的形式 化的语言,而是直接借助x m l 自身的特性,利用x m l 的基本语法规则来定义 x m l 文档的结构,使得x m l 达到了从内到外的完美统一,也为x m l 的进一 步发展奠定了坚实的基础; 3 互换性:可根据需要设计适合自己应用的s c h e m a ,并且可以同其他人交 换彼此的s c h e m a 。还可以将不同的s c h e m a 进行转换,以实现更高层次的数据 交换; 4 扩展性:d t d 作为描述x m l 的语言自身却不是可以扩展的,而x m l s c h e m a 是用x m l 书写的,所以它继承了x m l 的可扩展性。在可扩展性方面, 主要表现为: 在一个模式中复用另一个模式部分功能的能力。 定义在不同模式中复用复杂结构的能力。 p 从己有数据类型出发制定自己的新数据类型的能力。 在一个文档实例中引用多个模式的能力。 中山大学硕= b 学位论文第2 章x m l 相关技术简介 我们可以更容易的共享标准的词汇,可以依据我们的要求修改已经存在的模 式而不必每人都从头写起: 5 规范性:同d t d 一样,s c h e m a 也提供了一套完整的机制以约束x m l 文 档中置标的使用。相比之下,后者基于x m l ,更具有规范性。s c h e m a 利用元 素的内容和属性来定义x m l 文档的整体结构,如哪些元素可以出现在文档中、 元素间的关系是什么、每个元素有哪些内容和属性、元素出现的顺序和次数等, 可一目了然; 6 易用性:s c h e m a 取代d t d 的另一个原因要归结于d o m 和s a x ,作为 一种x m l a p i ,d o m 和s a x 只是对x m l 实例文档有效,对d t d 则无能为力。 2 3x m l 的编程接口 2 3 1d o m d o m ( d o c u m e n to b j e c tm o d e l ,文档对象模型) 是一套为合法的w e l l f o r m e d 文件设计的a p i ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e ,应用程序接口) ,它同时 定义了h t m l 文档和x m l 文档的逻辑结构,并给出了一种访问和处理h t m l 文档和x m l 文档的方法。利用d o m ,程序开发人员可以动态的创建文档、浏 览文件结构以及增加或删除文件的某些内容。可以这样说,文档代表的是数据, 而d o m 则代表了如何去处理这些数据。通过d o m 接口,应用程序可以在任何 时候访问x m l 文档中的任何一部分数据,因此,这种利用d o m 接口的机制也 被称作随机访问机制。利用d o m 所生成的模型都是节点树的形式。也就是说, d o m 强制使用树模型来访问x m l 文档中的信息。由于x m l 本质上就是一种 分层结构,所以这种描述方法是相当有效的【1 4 】。 作为w 3 c 的标准接口规范,目前,d o m 由三部分组成,包括:核心( c o r e ) 、 h t m l 和x m l 。核心部分是结构化文档比较底层对象的集合,这一部分所定义 的对象已经完全可以表达出任何h t m l 和x m l 文档中的数据了。h t m l 接口 和x m l 接口两部分则是专为操作具体的h t m l 文档和x m l 文档所提供的高级 接口,使对这两类文件的操作更加方便。 d o m 解析器通过对x m l 文档的解析,把整个x m l 文档以一棵d o m 树的 中山大学硕士学位论文 第2 章x m l 相关技术简介 形式存放在内存中,应用程序可以随时对d o m 树中的任何一个部分进行访问与 操作,也就是说,通过d o m 树,应用程序可以对x m l 文档进行随机访问。这 种访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个 x m l 文档中的内容。然而,由于d o m 解析器把整个x m l 文档转化成d o m 树 放在内存中,因此,当x m l 文档较大或者文档结构比较复杂时,对内存的需求 就比较高。而且,对于结构复杂的树的遍历也是一项比较耗时的操作。所以, d o m 解析器对机器性能的要求比较高,实现效率不十分理想。不过,由于d o m 解析器的树结构的思想与x m l 文档的结构相吻合,而且,通过d o m 方式容易 实现随机访问。 2 3 2s a x s a x 的全称是s i m p l e a p i sf o rx m l ,即x m l 简单应用程序接口。与d o m 不同,s a x 提供的访问模式是一种顺序模式,这是一种快速读写x m l 数据的方 式。当使用s a x 解析器对x m l 文档进行解析时,会触发一系列事件,并激活 相应的事件处理函数,应用程序通过这些事件处理函数实现对x m l 文档的访问, 因而s a x 接口也被称作事件驱动接口t 1 4 】。 s a x 解析器在对x m l 文档进行解析时,触发一系列的事件,应用程序通过 事件处理函数实现对x m l 文档的访问。由于事件触发本身是有时序性的,因此, s a x 解析器提供的是一种对x m l 文档的顺序访问机制,对于已经解析过的部分, 不能再倒回去重新处理。s a x 解析器在实现时,它只是顺序地检查x m l 文档中 的字节流,判断当前字节是x m l 语法中的哪一部分,检查是否符合x m l 语法 并触发相应的事件。对于事件处理函数本身,要由应用程序自己来实现。同d o m 解析器相比,s a x 解析器对x m l 文档的处理缺乏一定的灵活性,然而,对于那 些只需要访问x m l 文档中的数据而不对文档进行更改的应用程序来说,s a x 解 析器的效率则更高。由于s a x 解析器实现简单,对内存要求比较低,因此实现 效率比较高,具有广泛的使用价值。 2 3 3 j i ) o m j d o m = j a v a b a s e d “d o c u m e n to b j e c tm o d e l ”= j a v a b a s e dd o m ,即:基于j a v a 的文档对象模型、基于j a v a 的d o m 。 中山大学硕= l 学位论文 第2 章x m l 相关技术简介 j d o m 是j a s o nh u n t e r 与b r e t tm c l a u g h l i n 于2 0 0 0 年春建立的一个开源项目 ( h t t p :w w w j d o m o r g ) ,它是一个基于j a v a 的对象模型,与d o m 一样也采用 树状结构,能使读取、操作和写入x m l 文档,但比d o m 更容易、更高效。j d o m 1 0已经于2 0 0 4年9月 9 日正式推出 。 ( h t t p :w w w j d o m o r g d i s t f o i n a r y j d o m 1 0 z i p ,3 7 m b ) 。 j d o m 是基于树的处理x m l 的j a v aa p i ,它抛开了d o m 的局限与假设, 完全从新开始构建。它是纯粹为x m l 和j a v a 设计的,没有必要担心与旧版的向 下兼容性,因此比d o m 更简单、更整洁。 和d o m 相似( 与s a x 不同) ,j d o m 可以在内存中建立新的x m l 树。树 的数据可以来自数据库之类的非x m l 库、来自j a v a 程序中的直接量或来自计算。 从头开始建立新的x m l 文档时( 而不是从分析器读取时) ,j d o m 检查所有数据 的形式合理性【1 。 文档装入内存以后,无论是从头生成还是从流中分析,j d o m 都可以修改这 个文档。j d o m 树是完全读写的,树的所有部分都可以移动、删除和增加,只是 受到通常的x m l 限制( 例如可以将属性加进元素,但不能将属性加进说明) 。 与d o m 不同的是:树中没有不能改变的只读部分。 j d o m 本身不包括分析器,而是依赖s a x 分析器,用自定义c o n t e n t h a n d l e r 分析文档和由其建立j d o m 模型。 2 3 4s a x ,d o m ,j d o m 技术对比 技术优点 缺点最适合于 无需将整个文档 没有内置的文档导航支只从x m l 读取 加载到内存,因 持数据的应用程( 不可 s a x 而内存消耗少 不能够随机访问x m l 文用于操作或修改 推模型允许注册 档x m l 文档) 多个 不支持在原地修改x m l c o n t e n t h a n d l e r不支持名字空间作用域 中山大学硕l j 学位论文第2 章x m l 相关技术简介 易于使用整个x m l 文档必须一次需要修改x m l 丰富的a p i 集解析完文档的应用程序或 合,可用丁轻松地将整棵树加载到内存成x s l t 应用程序( 不 d o m 导航本较高可用于只读x m l 的 整棵树加载到内 一般的d o m 节点对于必应州程序) 存,允许对x m l 须为所有节点创建对象 文档进行随机访的对象类型绑定不太理 问想 是基于树的处理 不能处理大于内存的文 x m l 的j a v a 档 a p i ,把树加载在j d o m 表示x m l 文档逻 内存中辑模型。不能保证每个字 j d o m 没有向下兼容的节真正变换。 限制,因此比针对实例文档不提供 d o m 简单d t d 与模式的任何实际 速度快,缺陷少模型。 具有s a x 的 不支持与d o m 中相应遍 j a v a 规则 历包 1 4 第3 章x m l 的关系数据库存储 现在,越来越多的行业都将关键数据放置于数据库中进行管理,一来目前数 据库技术已经相当成熟,二来其管理功能的确非常强大。而x m l 作为一种可扩 展的标记语言,其自描述性使其非常适用于不同应用问的数据交换,因此具有广 阔的应用前景。为了使基于x m l 的业务数据交换成为可能,就必须实现数据库 的x m l 数据存取。 3 1x m l 与数据库 3 1 1x m l 与关系数据库的发展概况 1 9 7 0 年,e d g a rc o d d 在i b m 的s a nj o s e 研究实验室推出了一种新的称之为 关系数据模型的数据表达框架。c o d d 提出了1 2 个关系数据库的规则,用来验证 一个数据库是否是关系的【1 5 】。在2 0 世纪8 0 年代末期推出的关系数据库查询语言 s q l 得到了标准化。从最初的s q l - 8 6 到现在最新的s q l - 2 0 0 3 版,s q l 标准在 不断的得到更新和修改。 从体系结构上看,数据库技术的发展经历了网状数据库、层次型数据库、关 系型数据库、面向对象数据库、x m l 数据库( 内部以x m l 格式存储数据) 到 目前为止,在各个领域使用最广的还要数关系型数据库。关系型数据库管理系统 ( r d b m s ) 采用二维表格作为存储数据的基本模型,表格由行和列组成,一般 情况下,列被称为“字段”用于表示组成数据有效信息的属性,行则用于表示一 条完整的数据纪录。由于数据间的相关性可以通过表之间关键字( 外键) 来关联, 由此产生了“关系”类型数据库的由来。 关系数据库针对x m l 数据,一般有两种存储方式:一是将其按结构层次拆 分开来分别存于不同字段,二是将x m l 文档原封不动地存入数据库。实际应用 中,后者的应用环境将受到一定限制,因为关系数据库不能很好地处理大容量的 结构化的信息和文本数据。至于前一种方式,因为关系型数据库并不能很好地支 持层次、顺序、包含等在结构化标记语言中十分本质的关系,所以在开发中也仍 中山大学硕士学位论文第3 章x m l 关系数据库存储 有很多问题要解决。 3 1 2 商用数据库对x m l 的支持 1 o r a c l e o r a c l e 公司从o r a c l e8 i 就开始提供了对x m l 的支持,使其成为开发基于 x m l 的i n t e m e t 应用的系统平台。作为o r a c l e8 i 数据库的一个主要组成部分, j a v a 版本的x m l s q l 实用工具在o r a c l e 公司的x m l 战略计划中扮演着重要角 色。该工具包包含了一组j a v a 类,可完成下述两大功能: 向数据库发送查询语句,然后从返回的结果中输出x m l 文档( 文本或 d o m 节点树) 。 将x m l 数据保存至数据库。 这两大功能可以说是s q l 数据库支持x m l 的最基本要求,却足以体现当 今x m l 技术发展的潮流。 2 m s s q l s e r v e r m i c r o s o f ts q ls e r

温馨提示

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

评论

0/150

提交评论