(计算机应用技术专业论文)xml在数据查询中的应用研究.pdf_第1页
(计算机应用技术专业论文)xml在数据查询中的应用研究.pdf_第2页
(计算机应用技术专业论文)xml在数据查询中的应用研究.pdf_第3页
(计算机应用技术专业论文)xml在数据查询中的应用研究.pdf_第4页
(计算机应用技术专业论文)xml在数据查询中的应用研究.pdf_第5页
已阅读5页,还剩96页未读 继续免费阅读

(计算机应用技术专业论文)xml在数据查询中的应用研究.pdf.pdf 免费下载

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

文档简介

x m l 柏数据查询中的心用研究摘要随着网络技术的发展,可扩展标记语言x m l 得到了极大的进步。与超文本标记语言h t m l 不同x m l 实现了文档数据内容与显示的分离,具有很强的自我描述能力、可扩展性好等特点,从而有利于信息共享和查询,已经被广泛的应用在各个方面,包括定义行业数据标准、数据交换和数据集成。它正在成为数据表达和交换的新标准。本文首先针对x m l 语言分析了它的数据和文档组织的模式,因为x m l 的模式语言有很多种,并且各自有各自的特点和优势,所以本文通过比较的方法研究了d t d 、w 3 cs c h e m a 和r e l a xn g 等几个主要的x m l 模式语言。然后本文探讨了x m l 中操作数据的几个关键技术,其中包括数据岛技术( d s o ) 和两个主要的接口技术文档对象模型( d o 吣和x m l 简单程序接口( s a x ) 。在x m l 与传统数据库结合使用的系统中,这几种技术发挥着重要作用,数据查询往往是通过它们来实现的。本文重点讨论了x m l 的数据模型并提出两种查询算法。从数据库的角度看,) l m l 文档是一种典型的半结构化数据:数据往往是不规整的,结构是不稳定的;它的模式信息和数据混在一起,因此是自描述的。x m l文档的结构可以看成为树;树节点由标记定义,而叶节点是具体的元素数据。所以根据x m l 文档的结构,提出了路径查询算法和树查询算法。同时本文还分析研究了x m l 的几种查询语言对它们的特点和性能进行了分析和研究,并进行了一定程度上的相互比较。最后,本文在分析x m l 技术的基础上,针对大量数据信息以传统数据库形式存储的现状,采用x m l 结合j a v a 语言以及流行的数据库系统作为解决方案。设计并实现了一个包括数据查询功能在内的应用实例w e b 文档处理系统。关键词:x m i ,、模式、a p i 、数据模型、查询算法、查询语言x m i 。在数据查询中的麻用研究t h er e s e a r c ha b o u tx m li na p p l i c a t i o no fd a t aq u e r ya ns h a o f e n g ( c o m p u t e ra p p l i c a t i o n )d i r e c t e db yl us h i w e na b s t r a c t| i it ht h ed e v e l o p m e n to fi n t e r n e tt e c h n o l o g y r e s e a r c ho n ) 蝴lh a sb e e nm a d eg r e a tp r o g r e s s d if f e r e n tf r o mh t m l ,x m ls e p a r a t e si n f o r m a t i o nc o n t e n t sf r o mi n f o r m a t i o nr e n d e r i n g i th a ss t r o n ga b i l i t yo fd e s c r i b i n gi t s e l fa n dg o o de x t e n s i b i l i t y t h e s ec h a r a c t e r sf a c il i t a t et h ei n f o r m a t i o ns h a r i n ga n dq u e r yo nt h ew e b n o wi th a sb e e na p p l i e dt oa llk i n d so fa p p l i c a t i o n s ,i n c l u d i n gi n d u s t r yd a t as t a n d a r dd e f i n i t i o n ,e l e c t r o n i cd a t ae x c h a n g ea n di n t e g r a t i i o n x m li sn o wo nt h ew a yt ob ean e $ s t a n d a r df o rd a t ar e p r e s e n t a t i o na n de x c h a n g e f i r s t ,t h i st h e s i sa n a l y s e st h es c h e m ao f ) 【h l ld a t aa n dd o c u m e n t ,r e s e a r c h e ss e v e r a lm a i nx m ls c h e m a s :d t d 、w 3 cs c h e m aa n dr e l a xn gt h r o u g hc o m p a r i n gm e t h o db e c a u s ex m ls c h e m al a n g u a g e se x i s ti nk i n do ft y p e sw i t hd i f f e r e n tf e a t u r e sa n da d v a n t a g e s s e c o n d ,t h i st h e s i sd i s c u s s e ss e v e r a lk e yt e c h n o l o g i e so fo p e r a t i n gx m ld a t a ,i n c l u d i n gd a t as o u r c eo b j e c t sa n dt w om a i na p i :d o c u m e n to b j e c tm o d e la n ds i m p l ea p i sf o rx m l t h e s es e v e r a lt e c h n o l o g i e st a k ei m p o r t a n tr o l ei nt h ei n t e g r a t i o ns y s t e mo ft h et r a d i t i o n a ld a t a b a s ea n dx m l ,d a t aq u e r yi sa l w a y sf u l f i l l e db a s e do nt h e m t h i st h e s i se m p h a s i z e so nt h ex m ld a t am o d e la n di t sq u e r ya r i t h m e t i c a tt h ed a t a b a s ep o i n t ,x m ld o c u m e n ti sat y p i c a ls e m i s t r u c t u r e dd a t as e t :i ti si r r e g u l a r ,i n c o m p l e t e ,a n du n s t a b l e i ti ss e l f d e s c r i b i n g x m lc a nb em o d e l e da sat r e et h a tt h et a g sd e f i n et r e en o d ea n dt h el e a v e sa r et h ed a t av a l u e t h e r e f o r e ,a c c o r d i n gt ot h es t r u c t u r eo fx m ld o c u m e n t ,t h et h e s i sa d v a c e st h ep a t hq u e r ya r i t h m e ti ca n dt r e eq u e r ya r i t h m e t i c t h et h e s i si i i中科院计算所颂1 论文a n a l y z e sk i n d so fx m lq u e r yl a n g u a g e sa n dh a sac o m p a r i s i o na m o n gt h e m a tl a s t b a s e do nx m lt e c h n o l o g ya n dc o n s i d e r i n gt h es t a t u so fp l e n t yo fd a t ai n f o r m a t i o ns t o r i n gi nt h et r a d i t i o n a ld a t a b a s e ,t h et h e s isa d v a n c e sas o l u t i o nt h a tc o m b i n e sx m l ,j a v aa n dp o p u l a rd a t a b a s es y s t e m ,d e s i g n sa n di m p l e m e n t saa p p l i c a t i o ni n s t a n c ew i t hd a t aq u e r yf e a t u r ew 曲d o c u m e n tp r o c e s s i n gs y s t e m k e yw o r d s :x m l ,s c h e m a ,a p i ,d a t am o d e l ,q u e r ya r i t h m e t i c ,q u e r yl a n g u a g ex m l 辑:数据盎询中的廊用研究声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。就我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。作者签名:始蝽嗍知。”j关于论文使用授权的说明可以采用影印、缩印或其它复制手段保存该论文。作者概蚴导师虢荔疋吼妒,i l lx m l 在数据查询中的应用研究1 1 x m l 简介1 1 1 x 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 的缩写,意为可扩展的标记语言。x m l是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。x m l 除了标签之外。x m l 的另一个强大功能来自于“x ”。也就是说,x m l 不但是标记语言,而且是可扩展的( e x t e n s i b l e )标记语言。x m l 并非象h t m l 那样,提供了一组事先已经定义好了的标签,而是提供了一个标准,利用这个标准,你可以根据实际需要定义自己新的标记语言,并为你的这个标记语言规定它特有的一套标签。准确的说,x m l 是一种源标记语言,它允许你根据它所提供的规则,制定各种各样的标记语言。这也正是x m l 语言制定之初的目标所在。x m l 是s g m l 的一个子集,本质上是一种特殊的s g m l 标记语言,它继承了s g m l 的优点剔除了s g m l 的不适合i n t e r n e t 的部分,并对s g m l 进行了大刀阔斧的改革。目前x m l 已经是一门十分友好的语言。在语言的简单性方面可以和h t m l 相媲美,是i n t e r n e t 的下一代语言。1 1 2 x m l 的结构x m l 文件主要分为序言和主体两大部分。序言x m l 文档是以序言开头的。它用来表示x m l 数据的开始,描述字符的编码方法,为x m l 解析器和应用程序提供其他一些配置线索。序言的最主要的组成部分是) ( m l 声明。x m l 声明的作用就是告诉x m l 处理程序:“下面这个文件是按照x m l 文件的标准对数据进行置标的”。一个最简单的x m l 声明是这样的 ,x m l 声明中要求必须指定中科院计算所顺卜论史“v e r s j o n ”的属性值。同时,声明中还有两个可选属性,分别是“s t a n d a l o n e 和“e n c o d i n g ”。s t a n d a l o n e 表明该x m l 文件是否和一个独立的置标声明文件配套使用。e n c o d i n g 属性表示x m l 文件的编码方式。常见的编码有:简体中文码:g b 2 3 1 2 、繁体中文码:b i g 5 、西欧字符:u t f 一8 等。因此,一个完整的x m l 声明是这样的: 。此外序言还包括了d t d ( 或者是x m ls c h e m a ) ,d t d ( d o c u m e n tt y p ed e f i r e ,文档定义类型) 和x m ls c h e m a 都是用来描述x m l 文档结构的,也就是描述元素和属性是如何联系在一起的。主体除序言外,由根元素所包括的所有子元素构成了x m l 文件的主体部分。x m l 的结构可以如下图所示:图1 1 x - i l 文件的结构x m l 在数据查询中的应用研究1 1 3 x m i 。的特点x m l 给基于w w w 的应用软件赋予了强大的功能和灵活性。x m l 作为一种标记语言,它具有很多良好的性能特点:( 1 ) 简单性x m l 经过精心设计,整个规范简单明了,它由若干规则组成,这些规则可用于创建标记语言,并能用一种常常称作分析程序的简明程序处理标记语言。x m l 为程序员和文档作者提供了一个友好的环境。x m l 的严格定义和规则集使人类和计算机都能更容易地阅读文档。x m l 文档语法包含一个非常小的规则集,使开发者能立刻开始工作。x m l 能创建一种任何人都能读出和写入的世界语。( 2 ) 开放性x m l 标准在因特网上是完全开放的,可以免费获得。x m l 文档自身也较为开放,任何人都可以对一个结构良好的x m l 文档进行语法分析,如果提供了d t d ,还可以校验这个文档。x m l 并不禁止创建私有格式,但它的开放性是它最大的优点之一。由于x m l 的开放性,使它便于不同系统之间信息的传输。在电子政务中,不同业务领域、不同部门中存在着许多不同的系统。操作系统有n t 、u n i x ,数据库系统有s o ls e r v e r 、o r a c l e 等等。要想在这些不同的平台、不同的数据库软件之间传输信息,不得不使用一些特殊的软件,这样非常不方便。而不同的显示界面,如工作站、个人微机、手机,使这些信息的个性化显示也变得很困难。现在通过x m l ,各种不同系统之间可以采用x m l 作为交流媒介。( 3 ) 可读性即便对于一个预先对定义的x m l 标记一无所知的人,x m l 文件也是简单易读的,而且可以标注各种文字、图像甚至二进制文件,只要有x m l 处理工具,就可以轻松地读取并利用这些数据。文件中严格的层次结构使信息之间的某些复杂关系,比如树状结构、继承关系,都得到了绝好的体现。( 4 ) 可扩展x m l 在两个意义上是可扩展的。首先,它允许开发者创建他们自己的d t d ,有效地创建可被用于多种应用的“可扩展的”标志集;其次,使用几个附加的标准,可以对x m l 进行扩展,这些附加标准可以向核心的x m l 功能集增加样式、链接和参照能力。作为一个核心标准,x m l 为可能产生的其他标准提供了一个中科院计算所硕i 。论文峰实的基础。( 5 ) 国际化标准国际化,且支持世界上大多数文字。这源于依靠它的统一代码的新的编码标准,这种编码标准支持世界上所有以主要语言编写的混合文本。在h t m i 。中,就大多数字处理而言,一个文档一般是用一种特殊语言写成的,不管是英语,还是日语或阿拉伯语。如果用户的软件不能阅读特殊语言的字符,那么他就不能使用该文档。但是能阅读x m l 语言的软件就能顺利处理这些不同语言字符的任意组合。因此,x m l 不仅能在不同的计算机系统之间交换信息,而且能跨国界和超越不间文化疆界交换信息。1 2i n t e r n e t 、数据库与) l m l 查询) 【m l 是一种专门为i n t e r n e t 所设计的标记语言,它的重点是管理信息的数据本身,而不是数据的形式,数据的显示则交给另外的技术来解决。这种明确的分工导致的将是更高效的w e b 程序设计、更快的搜索引擎的出现、更统一的数据表示和更方便的数据交流的出现。x m l 是一种定义语言的语言,它克服了h t m l 标记有限的缺点,给了程序员更大的程序设计的自由空间。使用x m ld t d 等模式语言可以根据具体的项目背景设计出适合于自身的标记语言,而不是所有的信息都是使用h t m l 标记来表示。x m l 具有数据和表现相分离的特性和强大的数据表达能力,不仅可以表达关系模型和对象模型的数据,而且还可以表达不规则的,易变的数据,它是典型的半结构化数据( s e m i s t r u c t u r e dd a t a ) 。既然x m l 包含着数据,那么就存在着如何查询,如何管理这些数据的问题,而目前应用最广泛的关系数据库管理系统并不适合管理x m l 数据。这是因为关系模型的二维表结构在表达树形结构的x m l 数据上存在很大的困难,不但转化算法复杂,而且数据的冗余度很大,简单的x m l 数据往往需要表示成多个表。不仅如此,关系模型还会丢失x m l数据包含的一些重要信息,比如数据之间的相对次序,以及数据在文档中的绝对次序。受关系模型的限制,直接用s q l 语句查询x m l 数据也存在表达不自然,查询效率低的问题。如果先用比较自然的查询语言书写查询语句,再将其转化为s q l 语句,又会带来冗余j o i n 的问题,而消除冗余j o i n 的代价是非常高的。事实上,现在互联网上已经存在大量的x m l 数据,这些数据基本上仍是以文件的形式存放。这些x m l 文档一般都不大,但包含了丰富的数据,因此需4兰坚生鱼墼塑查塑! 堕些旦型塞要一个可以从文档中抽取信息的x m l 文档查询工具。近年来,随着x m l 相关技术的深入研究,x m l 查询已经具备了坚实的技术基础。传统数据库的查询技术无论是理论还是实现都已经相当成熟,大部分技术都可以比较方便地移植到x m l 查询上来。x m l 是典型的半结构化数据,因此半结构化数据查询技术方面的研究成果可以直接应用于x m l 查询。更为重要的是,w 3 c 在x m l 工作文本中为其定义了模式( x m ls c h e m a ) 、查询语言( x q u e r y ) 、查询形式语义( f o r m a ls e m a n t i c s ) 等数据库才具备的特征,并己得到广泛的支持,这使得采用类似用s o l 查询关系数据库的方式进行x m l 查询成为可能。此外,随着计算机硬件技术的发展,现代计算机的内存容量越来越大,可以在内存中处理更多的数据,对x m l 数据的查询完全可以在内存中进行。1 3x 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 的可选d t d 或其它模式定义和传统数据库模式之间的关系,并加以利用。需要定义一种适宜的x m l 查询语言。在建立以数据为中心的x m l 应用之前,用户对查询语言的要求是不清楚的,所以这一任务是相当艰巨的。虽然在因特网上x m l 的应用主要是只读环境,但是必须考虑可能的数据厍修改。对于x m l 查询,需要同时考虑传统的数据库查询处理方式和新的方式来对结构化、半结构化和自由文档进行有效的处理。如何将传统数据库中的视图机制在x m l 数据库中加以有效的实现。中科院计算所硕士论文随着研究的深入,目前这些问题已经得到了不同程度的解决。对x m l 查询研究中出现了不少的原型语言,其中比较著名的有l o r e l ,x m l q l ,x m l g l 等,这些语言各有优点:x m l q l 和x m l 文档的集成性比较好,l o r e l 的功能比较强,而x m l g l 在图形化界面方面做得比较好。q u il t 综合先前各种语言的优点:它的路径表达式参考了x p a t h ,变量绑定借鉴了x m i ,一q l ,f l w r 表达式类似于s q l ,而且它还支持用户自定义函数。q u i i t 不仅可以查询x m l 数据,也可以方便地查询关系数据,因此它的表达能力是很强的。w 3 c 在它的基础上提出了x q u e r y 语言,该语言已经获得广泛的支持,因此很有可能成为x m l 查询的标准语言。x m l 是典型的半结构化数据,因此半结构化数据管理方面的研究成果对x m l查询有特别重要的借鉴作用。l o r e 系统是斯坦福大学开发的半结构化数据库管理系统,它在半结构化数据的查询处理技术方面做了深入的研究。l o r e 采用o e m ( o b j e c te x c h a n g em o d e l ) 模型表示半结构化数据,该模型基于图,表示x m l 也比较自然。l o r e 的查询语言l o r e l 基于o q l 语言。l o r e 采用基于代价的查询优化技术,同时也应用了一些启发式规则以减小搜索空间;它针对半结构化数据的特点提出了包括边索引,父子索引在内的几种新型索引;它的d a t a g u i d e 不仅可以用作路径索引,还可以记录优化所需的统计信息,甚至可以作为可视化用户晁面的一部分;它还提出了利用d a t a g u i d e 展开正则路径表达式的方法。综上所述,在结合x m l 和数据库技术方面已经有了非常广泛的研究,也取得了很多成果,但也遇到了许多问题,这需要在数据库理论和x m l 技术有更多的突破。1 4 本文的研究内容及内容组织本文主要围绕“x m l 在数据查询中的应用”这个主题展开,对有关x m l 的数据查询技术进行分析和研究,并通过实例进行实现和探讨。论文的内容组织如下:第二章:介绍和分析x m l 的模式。其中包括对d t d ,w 3 cs c h e m a ,r e l a xn g 等有关x m l 的模式定义语言介绍、比较和探讨。第三章:分析和研究在x m l 查询中相关的技术及接口:数据岛( d s o ) 技术。文档对象模型( d o m ) 和x m l 简单应用程序接口( s a x ) 。6兰竺兰翌;塑塑垒塑! 堕生里! 型第四章:探讨x m l 的数据模型并提出查询算法。对x m l 数据模型进行分析。并提出x m l 数据库中的查询算法。第五章:研究x m l 的查询语言并对x m l 的查询语言进行各方面的比较。第六章:通过实验,设计并实现了一个文档处理系统,验证本文所研究的技术。中科院计算所硕i 论文2 1 1 定义元素及其后代第二章x i l 的模式2 1 1 1 元素类型声明元素类型声明( e t d ) 不但说明了每个文件中可能存在的元素,给出了元素的名字,而且给出了元素的具体类型。一个x m l 元素可以为空,也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时又可以有它们的子元素。d t d 正是通过元素之间的父子关系,描述了整个文件的结构关系。e t d 应该采用如下的结构:| l2 1 1 2 定义元素及其子元素d t d 尽管要求严格,但也有它的灵活性。使用正则表达式,可以描述父元素与子元素之间非常复杂的关系。例如,可以对一个元素作如下任何一种类型的定义:它有一个子元素,有一个或多个子元素,有零个或多个子元素,至少有一个子元素。还可以定义复合关系,比如“元素x 是有效的,如果它含有一个或多个子元素y ,或一个子元素z ”。元素定义是由它们的元素内容模型( e c m ) 来描述的,也就是说,是由紧跟元素后面的括号中的内容来定义的。在下表中,列出了正则表达式中可能出现的元字符:r 一一一一”一p 一一“l元字符含义ii ,一一。一一一一二一一一,一,一、l+| 出现一次或多次lf丰l 出现零次或多次:;一:一,。,;|?阿选,不出现或出现一次。一。一。一“。”。f 一一一1 1 1 一一1 ”。!( )l 一组要共同匹配的表达式|i o r ,或x m l 在数据查询中的施用研究,l a n d ,要求严格遵从顺序要求元素af元素b 元素列表,无须遵从顺序要求元素c2 1 2 定义元素属性2 1 2 i 定义有效的元素属性在d t d 中定义属性时,使用下面的格式l 元素名是属性所属的元素的名字;缺省值说明在x m l 文件中,如果没有特别说明属性的取值,语法分析器默认它具有的取值;属性类型则用来指定该属性是属于十个有效属性类型中的哪种类型。由于a t t l i s t 是一个属性的列表,它可以包含很多属性,在实际应用中,一个元素也经常有多个属性。2 1 2 2 属性缺省值根据x m l 文件是否必须为一个属性提供取值,属性的缺省值又可以分为以下三类:必须赋值的属性关键字r e q u i r e d 说明x m l 文件中必须为这个属性给出一个属性值。例如,假设定义一个”页面作者”元素,并把这个元素加入所有网站中的每一个页面。之所以定义这个元素,是为了页面编辑者能够提供他的联系信息,以便当发现页面错误或无效链接时,可以及时地通知他。在这种情况下,每个页面作者都有不同的个人信息,所以无法事先知道应该用什么作为缺省值,但又的确需要提供每个人的信息。这时候,就可以把与联系信息相关的属性定义为必须的( r e q u i r e d ) ,而且不用提供缺省值。属性值可有可无的属性当使用i m p l i e d 关键字时,文法解释器不再强行要求在x m l 文件中给该属性赋值,而且也无须在d t d 中为该属性提供缺省值。可以说,这是对属性值有无的最低要求,现实中经常用到。9中科院计算所硕士论文固定取值的属性还有一种特殊情况,需要为一个特定的属性提供一个缺省值,并且不希望x m l 文件的编写者把缺省值替代掉。这时候,就应该使用f i x e d 关键字,同时为该属性提供一个缺省值。定义缺省值的属性如果不使用上面任何一种关键字的话,该种属性就是属于这种类型。对于这种属性,需要在d t d 中为它提供一个缺省值。而在x m l 文件中可以为该属性给出新的属性值来覆盖事先定义的缺省值,也可以不另外给出属性值,后一种情况下它就默认为采用d t d 中给出的缺省值。2 1 2 3 属性类型一个元素可以为以下十种类型中的任意一种:c d a t ae n u m e r a t e d-i di d r e fi d r e f se n t i t ye n t i t i e sn m t o k e nn m t o k e n sn o t a t i o n2 2w 3 cx m ls c h e m a事实上,s c h e m a 也是x m l 的一种应用,它是将d t d 重新使用x m l 语言规范来定义。这从某种意义上讲,这正充分体现了我前面所提到的x m l 自描述性的优点。一致性s c h e m a 建立在x m l 之上,它的样子和一般的x m l 文件完全相同,使得x m l 达到了从内到外的完美统一。扩展性s c h e m a 对d t d 进行了扩充,引入了数据类型。1 0x m l 在数据查询中的应用研究易用性x m ls c h e m a 取代d t d 的另一个原因要归结于d o m 和s a x 。作为一种x m i ,a p i ,d o m 和s a x 只是对x m l 实例文档有效,对于d t d 则无能为力,不可能期望通过d o m 或s a x 来判定一个元素的属性类型或者某个元素的子元素允许出现的次数。但是,一旦有了s c h e m a ,这个问题便不复存在,因为此时对于x m l 文档结构的描述已变成为s c h e m a - 一一种“形式良好的”x m l 文档,可用d o m 和s a x 去访问。规范性同d t d 一样,s c h e m a 也提供了一套完整的机制以约束x m l 文档中置标的使用,但相比之下,后者基于】( m l ,更具有规范性。s c h e m a 利用元素的内容和属性来定义x m l 文档的整体结构,如哪些元索可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性、以及元素出现的顺序和次数等等。互换性每个人可根据需要设计适合自己应用的s c h e m a ,并且可以同其他人交换彼此的s c h e m a 。利用s c h e m a ,可以书写x m l 文档,验证文档的合法性。另外,通过映射机制,还可以将不同的s c h e m a 进行转换,以实现更高层次的数据交换。2 2 1s c h e m a 文件的结构s c h e m a 文件和其它x m l 文件的样子非常相似,它是由一组元素构成的,其根元素是“s c h e m a ”。“s c h e m a ”元素是x m ls c h e m a 中第一个出现的元素,用于表明该x m l 文档是一个s c h e m a 文档,相应的,“s c h e m a ”的结束标记一般在文档的末尾。这样,一个s c h e m a 的结构如下:s c h e m a 具有两个属性:n a m e 指定该s c h e m a 的名称,而x m n s 则指定该s c h e m a 包含的命名空间。一个x m ls c h e m a 文档中可以包含多个命名空间,比如下面的语句指定了三个命名空间:中科院计算所硕i j 论文第一个是x m l n s = ”u r h :s c h e m a s m i c r o s o f t c o m :x m l d a t a ”,它指定本文档是一个x m ls c h e m a 文档;第二个是x m l n s :d t = ”u r n :s c h e m a s - m i c r o s o f t c o m :d a t a t y p e s ”,它定义了在本文档中可以使用的数据类型;第三个是x m l n s :m y n s = ”h t t p :w w w x m l s t e p b y s t e p e d u n s x m l ”,它表明下面可能会用到在m y n s 中定义的元素或属性。2 2 2 用s c h e m a 定义元素属性s c h e m a 中用来定义属性的元素有两个,a t t r i b u t e t y p e 元素是声明属性的,a t t r i b u t e 元素则是说明一个元素中究竟包含那些属性。a t t r i b u t e t y p e 元素a t t r i b u t e t y p e 元素也是s c h e m a 中的重要元素之一,用于定义该s c h e m a 文档中出现的属性类型。a t t r i b u t e t y p e 的语法表达如下: _- “一 ,一一一一一对于这些属性的规定:l - n a m e-n a m e 是所声明的属性类型的名称。该属性是必须的。1 2x m l 在数据查询中的应用研究2 d t :t y p ed t :t y p e 指定所声明属性的数据类型,它除了支持d t d 中包含的全部十大数据类型外,还支持一些扩展属性。3 d t :v a l h ed t :v a l u e 只有当d t :t y p e 取值”e n u m e r a t i o n ”时才有效,此时,d t :v a l u e需列出所有可能的取值。4 d e f a u l td e f a u l t 指定该属性类型的缺省取值。d e f a u l t 取值必须是有效的,例如,当d t :t y p e 取值”e n u m e r a t i o n ”时,d e f a u l t 的取值必须来自d t :v a l u e 所列出的值。5 r e q u i r e dr e q u i r e d 指定该属性对于引用它的元素是否是必须的。取值y e s 表明是必须的,取值n o 则表明并非必须。a t t r i b u t e 元素a t t r i b u t e t y p e 和a t t r i b u t e 的关系与e l e m e n t t y p e 和e l e m e n t 的关系相同,a t t r i b u t e t y p e 只是起到声明属性的作用,而真正指明一个元素具有哪些属性还需依靠a t t r i b u t e 元素。a t t r i b u t e 的语法表达如下:因为a t t r i b u t e 实际上是对该s c h e m a 中a t t r i b u t e t y p e 声明的引用,而具体引用什么属性类型,关键就要靠t y p e 属性了。t y p e 唯一指定了要引用的属性类型,因此其取值必须同某个k t t r i b u t e t y p e 元素中n a m e 属性的取值严格一致。其它两个属性与h t t r i b u t e t y p e 中相应属性的含义相同,d e f a u l t 指定该属性类型的缺省取值,r e q u i r e d 指定该属性对于引用它的元素是否是必须的。如果和同一个属性相对应的a t t r i b u t e t y p e 和a t t r i b u t e 中都对d e f a u l t 和r e q u i r e d 给出了定义,则在a t t r i b u t e 中的取值具有更高的优先级。中科院计算所硕士论文2 2 3 扩展数据类型s c h e m a 中共有2 3 种扩展数据类型,包括b i n b a s e 6 4 、b i n h e x 、b o o l e a n 、c h a r 、d a t e 、d a t e t i m e 、d a t e t i m e t z 、f i x e d 1 4 4 、f l o a t 、i n t 、n u m b e r 、t i m e 、t i m e t z 、i l 、i 2 、i 4 、r 4 、r 8 、u i l 、u i 2 、u i 4 、u r i 、u u i d ,已经可以覆盖相当广泛的应用。l 类型解释举例i b o o l e a n布尔型:0 或1 ,其中0 代表0 。1f a l s e ,1 代表t r u ec h a r单字符“a ”、“b ”t i m e时间类型,符合i s 0 8 6 0 1 格式,无0 8 :1 6 :1 8日期和时区部分。d a t e日期类型,符合i s 0 8 6 0 1 格式且无2 0 0 0 - 0 6 - 0 1时间部分d a t e t i m e日期类型,符合i s o8 6 0 1 格式,带2 0 0 0 0 6 一0 1 t 2 0 :0 8 :1 8可选时间部分但无时区部分,秒可精确到纳秒级。f i x e d 1 4 4数值类型,同“n u m b e r ”类似,但1 4 1 2 3 4精度上小数点前不超过1 4 位,小数点后不超过4 位f l o a t实效类型,位数不受限制,可以包3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 e 十j含符号位和小数位以及指数。取值范围从1 7 9 7 6 9 3 1 3 4 8 6 2 3 1 5 7 e + 3 0 8至2 2 2 5 0 7 3 8 5 8 5 0 7 2 0 1 4 e - 3 0 8i n t数值类型,可以包含符号位,但不l ,一1 0 ,2 5 6 6含小数位和指数位n u m b e r数值类型,位数不限,可以包含符1 2 ,3 1 4 1 5 ,一1 2 4 e 一1 0号位和小数位以及指数。取值范围从1 7 9 7 6 9 3 1 3 4 8 6 2 3 1 5 7 e + 3 0 8 至】4兰竺兰垄墼堡至塑12 2 2 5 0 7 3 8 5 8 5 0 7 2 014 e 一3 0 8的应用研究i b 主主乜;里! ! 型:i 苎:垡i :金垒坠;l i p u b i e t f u r i 一。一一一一,。,d a t a t y p e 来定义,这个元素是统一资源标识( u r i ) 类型。元素和属性的数据类型可以使用元素s c h e m a 中一个重要元素,。d a t a t y p e 的语法表达如下:i l除此以外,还有另一种更直接的方法,是在元素e l e m e n t t y p e 和a t t r i b u t e t y p e之中利用d t :t y p e 属性。2 3r e l a xn g 技术特点及其与d t d 及w 3 cs c h e m a 的比较r e l a xn g ( r e g u l a rl a n g u a g ed e s c r i p t i o nf o rx m ln e x tg e n e r a t i o n )于2 0 0 1 年5 月被正式推出。r e l a x n g 是r e l a x 和t r e x 合并的结果,由o a s i s( o r g a n i z a t i o nf o rt h ea d v a n c e m e n to fs t r u c t u r e di n f o r m a t i o ns t a n d a r d s ) 的r e l a xn g 技术委员会( t c ) 开发,由j a m e sc l a r k 和m u r a t am a k o t o 合作编辑的。r e l a xn g 的关键特点在于它简单,易学,使用x m l 语法,不改变x m l 文档的信息集,支持) ( m l 名字空间,对待属性尽可能的与元素一致,对无序内容的支持没有限制,对混合内容也没有限制,有坚实的理论基础,可以与单独的数据类型语言( 如w 3 c 删ls c h e m a 数据类型) 结伴工作。r e l a xn g现在已成为o a s i sr e l a xn gt c 正式的规范”1 。r e l a xn g 是) ( m ld t d s 的发展。它们共享相同的语法基础的范例。在s g m l和x m l 的基础上,r e l a xn g 增减并改进了x m ld t d s 的相关功能。x m ld t d s可以自动转换为r e l a xn g 。在) ( 1 l ld t d s 中使用的设计模型( p a t t e r n ) 可以在r e l a xn g 中使用。r e l a xn g 是非常成熟的。它强调易用性、模块化和有效性验证。它在有效性检查过程中不会造成对信息集的修改,从而可以避免出现很多有关x m ls c h e m a 的问题。x m ls c h e m a 是w 3 c 于2 0 0 1 年正式推荐使用的“x m l 规范标记语言”。规范标记语言旨在定义与数据的属性和类型等相关的规范。所起作用是规定不同企业间进行数据交换时,各种数据所代表的意义。在x m l 规范标记中最早使用的就是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 存在下列几个明显的缺陷:1 ) d t d 本身并不遵循x m l 标准,其语法定义与x m l 不同,且复杂古怪。中科院计算所硕l :论文这就要求x m l 文档的编写者必须在x m l 外,学习和掌握d t d 标记写法;另外,程序中还需要多一道语法分析过程。2 ) 可定义的数据类型太少,而且数据类型和数据格式的定义无法做到与编程语言之间的自动映射。3 ) 不支持名称空间,易与标记名发生冲突。为了弥补上述缺点,各种规范标记语言纷纷出台,这些提案中包括微软制定的x d r ( x m ld a t ar e d u c e d ) 、】( m ls c h e m a 以及日本标准r e l a xn g 等。其中,r e l a xn g 模式提供了比w 3 cx m ls c h e m a s 更有力,更简单,语义上更真接描述有效的x m l 实例的类的方法。r e l a xn g 的优点是它扩展了d t d s被很好证明了的语义,允许直接扩展数据类型并对相关的实例模型很容易的组合。r e l a xn g 中的s c h e m a 可以用x m l 格式书写,也提供对非x m l 语法的支持,这有点类似于上下文无关文法。r e l a xn g 中的非x m l 语法易于理解,但需要额外的语法分析器啪1 。同时,r e l a xn g 的支持无序( 或半有序) 的内容模型回答了一个问题:o o p 数据类型的语义模型与x m l 元素的线性之间的不匹配。r e l a xn g 的出现为使用x m l 的软件开发者提供了更加有力的工具。为更清晰地理解r e l a xn g 相比d t d s 及w 3 cx m ls c h e m a s 的优越之处,可以从以下几个方面进行比较:2 3 1 语义模型r e l a xn g 的语义是非常直接的在这一方面,它们是d t d 语义的自然扩展。r e l a xn g 模式描述的是模型( p a t t e r n s ) ,由量化,排序,交替组成。另外,r e l a xn g 为无序集引入了一个模型( p a t t e r n ) ,而对于无序集d t d s和w 3 cx m ls c h e m a s 都不支持( s g m l 支持,但灵活性比r e l a xn g 差很多) 。此外,r e l a xn g 对待元素和属性采用几乎致的方式。元素属性的一致与x m l 的概念

温馨提示

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

评论

0/150

提交评论