1、国防科学技术大学硕士学位论文基于关系数据库及面向对象方法的XML存储技术的研究与实现姓名:祝炳强申请学位级别:硕士专业:软件工程指导教师:王意洁20060301国防科学技术大学研究生院工程硕士学位论文摘要如今的软件开发过程中,以XML作为数据传输媒介,基于面向对象开发业务逻辑,以关系数据库存储数据成为一种主流的开发模式。从XML模式到对象模式再到关系模式,数据格式都在变化。XML是层次式的,自描述的,拥有自己的模式和规范以及编程接口。对象则由类实例化而来,通过属性和方法来描述事物的属性和行为而关系数据则通过平面的二维表来保存数据。如何保持这一过程中数据的完整性以及对数据的灵活应用是整个软件开发
2、过程中的难点已有的很多研究都只考虑了一个XML文档和关系数据库之间一次性的映射转换,不能与面向对象开发紧密结合,映射出的表结构较复杂,表之间的关系也比较特殊。而实际应用中,我们往往需要对多个XML转换来的数据进行操作,如删除、修改、筛选、合并等,以重构新XML供其它系统使用。另外,许多研究只关注于保存文档的结构和内容信息,忽略了保存语义约束,导致转换后对数据的维护比较困难。针对以上问题,我们在解析XML时结合面向对象及UML建模方法,先把XML文档转换为对象模式,再根据对象一关系映射方法,把XML对象数据持久化到关系数据库中。我们重点研究了XML到对象模式再到关系模式的映射方法,采用一种基于元
3、表的存储模型来保存数据,并通过触发器来维持XML中的语义约束信息。在持久层中,扩充了对XML操作的封装,方便业务逻辑层以操作对象的方式对关系数据库中的XML对象数据进行操作,如变更及重构XML文档等,并使得对数据的变更能及时反映到关系数据库中。在上述研究的基础上,我们设计开发了一个XML存储系统原型XOR(XMIADbject-Relation),实现了自定义的存储XML以及从关系数据库中重构XML,并对系统原型进行了性能测试。主题词: 对象一关系映射面向对象 对象持久化XML模式第i页国防科学技术大学研究生院工程硕士学位论文ABSTRACTAt present,the development
4、 pattern which transmitting data by XML,designingbusiness logics based on OO(Object-oriented)and storing fmal data into RDB(Relational Database)has become a dominant paRern in the software fieldFrom theXML pattern to the object pattern,then to the relational pattern,the data format ischanging all al
5、ongXML iS hierarchical and self-describedXML has its own schemaand criterion,as well as programming interfaceObject is instanced from class,and itdescribes things by the attributes and methods of a classRDB stores data in flat andtwo-dimensional tablesDuring the transformation,how to maintain the da
6、ta integrityand make use of it conveniently has become a bottle-neck in the software developmentprocessPrevious research concentrates on one-off uansformation between one XML andRDBwhich falls to associate with the OO development process tightly叫S results ina complex table structure and awkward rela
7、tion between tablesHowever,in practicalapplications,in order to rebuild one or many new XML documents for other system,weoften need to append some operations on the multi-copy transformed XML data,such asdelete,update,selecL and combinationMoreover,they only store the sttuctare andcontent,and ignore
8、 the semantics,which makes maintaining data difficultlyIn order to solve the problem,OO and UML modeling method has been appliedwhen parsing XMLFirstly the蹦L is transformed tO object pattern,and then is storedintO RDB according tO the Object-Relation mapping methodThe mapping method fromXML to objec
9、t,then to relation pattern has been mainly researched,and a kind ofmeta-table stOrage model has been taken to store dataTriggers have been applied tomaintain XML semantics11le persistence layer of the system is extended tOencapsulate the XML operations,thus the business layer Can convaniemly manipul
10、atethe XML object data in a way of object manipulationFor example,we can update andrebuild new XML documents in object model,and the results Can be reflected ondatabase in timeBased Oil the research above, an XML storage prototype XOR(XML-Object-Relation)has bean designed and implemented,it Can be c
11、ustomized tostore and rebuild XML documentsAt last,the performance test results of XOR aregivenKeywords:0bject-Relation Mapping 0bjeet-Oriented 0bject-PersistenceXMLSchem第ii页国防科学技术大学研究生院工程硕士学位论文表21 Edge存储表表22 XRel路径表存储表23 XRel文本,属性表存储表24 XRel结点表存储表31元表结构示例表32规则1示例表。表33规则2示例表表34规则3示例表表35聚集前产生的关系表表36聚
12、集后产生的关系表表 目录182130表41简单数据类型对应关系表表51 meta-table表结构表52 DBGroup表结构表53 Member表结构表54 Project表结构表55 XOR与数据库提供支持功能对比37。5056565763第1页国防科学技术大学研究生院工程硕士学位论文图。目 录图11传统XML存储图12应用背景实例图图21 XML文档结构图图31文档定义结构图图32D1D图实例图33文档结构图图34外键关联的映射图35聚集实例图图41域对象持久化图42ADO模式结构17。3535图43 ORM模式结构图44 ORM模式读操作序列图图45模式、类及映射文件相互转换37424
13、646图46 XML模式产生RDB模式,类及映射文件图47解析DTD或Schema产生类的过程图49图48映射文件在应用中的位置。图49持久层静态结构图图51 XOR系统原型结构图52。55图52从模式产生的类图结构。56图53 XOR与递归解析时间对比图54 XOR与0PENxML比较图55 XOR与FOR XML比较。图56FORXML查询结果图57XOR输出的XMg文件第1I页独创性声明本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它
14、教育机构的学位或证书而使用过的材料与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意学位论文题日: 基士差丕熬堡庄区亘血殖丞左洼数l些在篮盐盔鲍盈容量塞理学位论文作者签名:丞鳖壶丝 日期:神6年6月1日学位论文版权使用授权书本人完全了解国防科学技术大学有关保留。使用学位论文的规定本人授权国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印缩印或扫描等复制手段保存,汇编学位论文(保密学位论文在解密后适用本授权书)学位论文题目:基王羞盘熬堡庄丞亘血殖基左洼盟墅些壶
15、篮盐盔盥班窒曼塞理学位论文作者签名:室坠嘘丝作者指导教师签名:_分兰日期:洳缛6月f日日期:“占年占月二日国防科学技术大学研究生院工程硕士学位论文第一章绪论,XML的出现使得基于数据库的开发研究发生了很大的变化。它作为一种轻量级数据库在Web领域得到了广泛应用,但本质上它只是一种文本文件,不能像数据库管理系统一样对数据进行有效管理,因此出现了XML数据库技术的研究。关系数据库的成熟及广泛应用,使基于关系数据库的XML存储技术成为研究热点。11课题背景可扩展标记语言XML【lJ(extensible markup language)自问世以来,在Web领域迅速得到了广泛的应用。xML是90年代后
16、期设计的,它是SG札的一个子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务、接收和处理,并可在SGML和HTML之间互相操作。它鼓励内容(作为抽象数据类型)、表示(作为格式对象)和处理(作为样式表)相分离,每部分都可以独立的发展,不需要在一个统一的框架中折衷。XML是一种简单、灵活的文本格式,它的最初设计是通过分离内容和格式来满足大规模电子出版的需要,而现在它在Web上各种各样的交换当中,扮演着日益重要的角色。XML是一种元语言,通过对一组标签设定特定的意义,可以创造出一般的标记语言。XML可以方便地转换为可显示文档的特性使得可以替代HTML完成显示Web数据的功能。与其它
17、数据交换语言相比,XML具有相当的表现力和可扩展性 XML以一种文本的格式进行数据存放,事实上有很多文本格式可以用来存放数据,如ini文件。在编写程序过程中,有时可能需要将源数据或者最终结果存放在一个文本文件里面,存放的格式是自定义的,在编写这个程序的过程中。开发人员就创建了一种自定义的数据格式。咀,文件与这种文件本质上并无什么区别,但XML格式是被大家所公认而且广泛支持的。XML的简洁、轻便加快了系统应用流程,但从数据管理角度看,不能对其进行有效管理,如不支持事务等机制。一个解决办法就是把XML数据保存到关系数据库,来实现对数据的有效管理,如图11所示。这些解决办法包括关系数据库提供的支持以
18、及专门针对两者之间转换的映射方法第1页国肖Q图11传统XML存储但在开发应用中,我们发现目前这些解决办法还存在以下几方面的不足。(1)数据库提供的支持通用性不够各数据库厂商都或多或少地提供对XML技术的支持,从功能上看,其提供的功能缺乏针对往(详见22节分析),而且不完善。对开发人员来说,它们提供的支持没有通用性,要根据不同的数据库编写不同的接口,并且要求精通数据库技术及XML技术。 (2)数据不能自定义转换目前的转换都是对一份XML文档一次性全部转换。而实际应用中,XML文档可能包含一些重复冗余的信息,我们往往只抽取XML文档中重要数据进行转换,即实现自定义的转换及存储反过来,在从关系数据库
19、到)a帆的过程中,我们往往要对多份XML数据进行筛选组合,以重构新的XML文档。(3)维护转换到RDB中的数据比较困难一些映射算法采用固定表结构存储XML数据,导致转换后的数据结构比较严谨,关系也比较复杂、特殊,不便于对其进行变更等操作,以致出现“死数据”现象。如要我们要变更数据可能要恢复到原xML文档后,对其进行变更,否则容易破坏原来保存在关系数据库中的结构语义信息。(4)不能与面向对象开发紧密结合数据在XML和关系数据库间转换,面向对象开发过程中,仍要对数据从底层开始进行复杂调用,不能真正体会到面向对象开发的优点在实际应用中。我们更多地会碰到如图I2所示的应用实例。两个系统A和B,B系统每
20、隔一段时间要用到A系统的多个流程产生的XML数据。我们的设计就要求达到把A系统的每个流程数据(XML文档)能保存到关系数据库,并根据需求能对其进行更新,B系统要用数据时,能从关系数据库中自定义的提取出数据,重构XML文档。第2页国防科学技术大学研究生院工程硕士学位论文面向对象开发关系数据库图12应用背景实例图B系统在以上的例子中,就有很多个地方值得我们去研究。如何把XML模式映射到对象模式?如何把对象持久化?如何把对象模式映射到关系模式?映射转换过程中,不仅要保持文档的结构和内容,还要保持语义约束信息,确保数据完整性。本文的研究主要就是在以上所讲的应用背景下进行的。12研究现状概述根据前面所描
21、述的研究背景,本文主要对两个方面的研究作了调查:121 XML数据库技术研究目前XML数据的存储方法可分为四种:文本文档格式、XML专门设计的存储结构、对象类模式和关系表模式。对应不同的存储方法,也有不同的XML数据管理技术,分别是基于文件系统的XML管理技术、Native XML数据管理技术、基于面向对象数据库的XML管理技术与基于关系数据库系统的XML管理技术。(1)基于文件系统的XML管理技术XML数据的一般表现形式是文本文件,存储于文件系统中。因此管理XML数据的最简单直接的方法就是直接将它们存储于文件系统中,基于文件系统进行XML数据的管理基于文件系统的XML管理方式的优点是:存储方
22、便,不需要任何额外操作;信息检索技术可以直接应用。但该方法不提供存储控制;不能为结构化查询提供支持;每查询一次都要重新解析:文件空间占用大等等。实际中第3页国防科学技术大学研究生院工程硕士学位论文这种方法的应用很少。(2)Native XML数据库的存储和管理技术由于XML数据的特殊性质,人们考虑设计专门适合XML的数据存储模型,这就是Native XML数据库系统(Native XML Database System)。XML原生数据库的基本存储单元是XML文档,这种数据库维持原有文档的数据结构和相关的元数据,而不关心数据的底层存储格式,只能通过XML特有的相关技术对数据进行存储。由于内部采
23、用的是标准的XML格式,存储时不需要进行格式的转换因而可以充分发挥XML的优势,但它采用的是一种全新的数据组织方式,技术还不成熟,其性能也还没有得到充分验证,因而应用不多国外对这方面的研究成果主要有Taminol21、Loret31、Timberl41等,国内则主要是以人民大学的OrientXt51为代表的研究。(3)基于对象数据库的存储和管理技术ODMG(Objeet Database Management Group)标准为面向对象数据库定义了对象定义语言(Object Definition Language)、对象操纵语言(Object ManipulationLanguage)与对象查
24、询语言(Object Query Language)。另一方面,XML数据模式定义有可能包含元素在不同层次上的嵌套关系,如果使用关系模型描述这种嵌套关系,在进行重构XML数据时,需要许多的连接操作。在理论上,将树形结构数据映射为嵌套对象模型比映射为平面的关系表结构更自然。然而,商用对象数据库的技术没有得到广泛的认可和应用,发展得不成熟。(4)基于关系数据库的存储和管理技术目前大多数使能XML数据库的应用及研究都是在这种方法的基础上进行的。使用关系数据库系统来存储XML数据,是将XML数据映射为几个特定关系表。根据有无XML模式分为模型映射方法和结构映射方法,前者如Edgel61、MonetUI
25、、XRelsl,XParent9,101等,后者如STORED1”、DTDtl21、CPItl31、P Schemav41等,详见第三章基于关系的XML存储分析。本文首先假设在开发过程中,我们总是先设计出XML文档DTD或模式(Schema),才有XML文档,因此本文的研究实际上应归为结构映射方法 。 该方法的优点是:关系数据库技术非常成熟,能够对大量数据进行高效存取,且目前绝大多数的数据都是存储在关系数据库中但是也有如下明显的缺点:首先沮,的数据模型与关系模型显著不同,XML数据是无序的、嵌套的树结构,关系模型是有序的二维表结构。存储时进行的转换规则或方法不统一,具体表现在映射成几个关系表的
26、数日、表结构上的不统一。数据粒度较细,只关注结构和数据信息,忽略语义信息。在开发过程中,应用不灵活。文献151简单的介绍了XML存储的几种类型的方法并对它们进行了比较,这第4页国防科学技术大学研究生院工程硕士学位论文几种方法分别是文件系统(FSO,File System Object),关系数据库系统(Edge)、对象管理器(SM,Storage Manager)。认为:对于查询密集型的应用,文件系统存储是不可取的,因为文件方式存储在查询时需要将整个文档加载到内存,解析整个XME文档需要耗费大量的时间,系统开销大。用对象管理器对XML文档进行存储管理能够得到比其它方法更好的性能,但由于XML文
27、档中的元素一般来说都不是很大,因此SM方法的空间开销比较大。而关系数据库存储时的性能相对就要差多了,因为相对存储管理器来说,关系数据库系统本身就建立于存储管理器之上,因此比存储管理器方法消耗了更多的额外开销,但由于目前绝大多数的数据都是用关系数据库进行存储,而且关系数据库已发展得非常成熟,能够提供对大量数据进行高效存取的技术手段,因此目前对XML映射的研究主要集中在基于关系数据库的存储。 。 122对象持久化技术研究在多层软件系统中,对象模型和数据存储的关系模型之间存在模式不匹配问题,最直接的方法是在应用程序语言中内嵌SQL实现数据库操作,它将数据库访问与应用逻辑捆绑在一起,系统的可维护性较差
28、。随着开放的数据库互连(OpenDatabase Connector,ODBc)技术和JDBC的广泛使用,将数据库逻辑独立封装成为可能,因为0DBC屏蔽了不同关系数据库之间的差异随后微软推出的UDA(Universal DataAccess,统一数据访问技术)为关系型或非关系型数据访问提供了一致的访问接口,为企业级BS应用多层软件结构提供了数据接口标准。统一数据访问包括两层软件接口,分别为ADO(ActiveDataObject)和OLEDB,对应于不同层次的应用开发。ADO提供了高层软件接口,在各种脚本语言(Script)或宏语言中直接使用;OLE DB提供了底层软件接口,可在cC+语言中直
29、接使用。EJB作为Sun公司提出的J2EE体系的核心部分,是Sun所力推的企业级开发的首选,而EJB entity目前仍然是Sun J2EE自皮书所最为推荐的Java持久化技术。不过作为一个重量级技术,entity bean的性能不理想,易用性也相对较差,这成为它备受争议的一个焦点。 一目前一些传统的关系数据库厂商致力于在现有的关系数据库上增加一层“包装”,使之在形式上表现为一个00DB。因为关系模型和对象模型是独立存在的,当涉及到复杂的数据库设计时,会导致严重的性能和操作问题。另外一些研究是在持久对象和关系数据库之间建立一个映射层,它的目的是将业务逻辑和数据库访问隔离开来,通过这一映射层,可
30、以把业务代码中直接的对象操作映射成关系型的数据库访问操作它保护开发者不受数据库或物理结构第5页国防科学技术大学研究生院工程硕士学位论文变更的困扰,使得应用的重用性增强。国外已出现Hibernate、Castor、TopLink等较为成功的商业产品,国内的这方面研究还相对较差,没有比较成熟的产品。13研究目标和研究内容本文主要研究基于关系数据库的XML存储方法,提出一种基于面向对象方法的解决方案,使得存储XML这一过程能够与面向对象开发紧密结合,能够实现自定义的存储及重构XML。在保证良好性能的情况下,功能上易于得到扩展。研究内容归纳为以下四个方面:(1)基于元表的关系数据存储模型研究元表主要存
31、储XML的节点名及结构信息,并通过多个数据表存储XML的内容信息,对于语义约束信息则通过关系数据库触发器实现。这样保证在关系数据库中,能够完整存储XML的内容结构信息以及语义约束信息。(2)XML到对象以及对象到关系两个过程的映射研究,主要实现了从DTD或Schema到类的映射算法。XML到对象的映射分为两个步骤,首先从DTD或Schema映射到类,再解析XML并实例化类,加载XML文档,即把XML数据转换为对象数据然后研究对象到关系的映射,把XML数据从对象模式映射为关系模式(3)对象持久化研究与设计。把XML对象数据映射为关系数据实际上是把对象持久化到关系数据库中的过程。在L映射为对象的基
32、础上,我们构建对象持久层,不仅封装一般对关系数据的操作,还扩充封装了对XML数据的操作,达到以操作对象的方式来操作XML数据的目的(4)XOR(XML-Object-Relation)系统原型的设计与实现。采用分层结构设计,可提供可视化操作,实现自定义的存储及重构XML,并提供接口供其它系统调用。14论文结构本文结构安排如下:第一章绪论,介绍课题背景、国内外研究现状、课题主要内容以及论文的结构等。第二章XML相关技术及基于关系的存储。先介绍XML技术,然后重点分析主流关系数据库提供的支持以及国内外基于关系存储的研究,指出其优缺点,表明本文研究的必要性第三章研究XML存储及映射理论。研究基于元表
33、的存储模型,然后详细介绍XML映射到对象模式,对象模式映射到关系模式的映射理论及相关算法,最后讨论实现完整性及语义约束检查的方法。第6页国防科学技术大学研究生院工程硕士学位论文第四章对象持久化设计。分析了对象持久化存储机制及对象持久化模式,介绍ORM持久化模式及持久层三要素,设计了对象持久层,不仅封装对关系数据的操作,还封装了对皿。的操作。第五章XOR系统原型的设计、测试及分析。介绍了系统原型开发环境,详细需求描述,设计的一些说明以及测试过程,并与SQL Server提供的支持进行对比,表明其应用价值。第六章结束语,介绍本文的主要工作以及下一步的研究工作第7页国防科学技术大学研究生院工程硕士学
34、位论文第二章XML及基于关系的存储技术211 XML的产生背景2IXML技术Intemet提供了全球范围的网络互连与通信功能,Web技术的发展更是一日千里,其丰富的信息资源给人们的学习和生活带来了极大的便利。特别是应运而生的H13L(超文本置标语言),以简单易学、灵活通用的特性,使人们发布、检索、交流信息都变得非常简单,从而使Web成了最大的环球信息资源库。然而,电子商务、电子出版、远程教育等基于Web的新兴领域的全面兴起使得传统的Web资源更加复杂化、多样化,数据量的日趋庞大对网络的传输能力也提出更高的要求。同时,人们对Web服务功能的需求也达到更高的标准,比如:用户需要对Web进行智能化的
35、语义搜索和对数据按照不同的需求进行多样化显示等个性化服务;公司和企业要为客户创建和分发大量有价值的文档信息,以降低生产成本,以及对不同平台、不同格式的数据源进行数据集成和数据转化等等,这些需求越来越广泛和迫切。 一传统的HTML由于自身特点的限制,不能有效地解决上述问题:作为一种简单的表示性语言,它只能显示内容而无法表达数据内容。而这一点恰恰是电子商务、智能搜索引擎所必需的。另外,HTML语言不能描述矢量图形、数学公式、化学符号等特殊对象,在数据显示方面的描述能力也不尽如人意。最重要的是:HTML只是SGML(Standard Generalized Markup Language,标准通用置
36、标语言)的一个实例化的子集,可扩展性差,用户根本不能白定义有意义的标记供他人使用。这切都成为Web技术进一步发展的障碍。SGML是一种通用的文档结构描述置标语言,为语法标记提供了异常强大的工具,同时具有极好的扩展性,因此在数据分类和索引中非常有用。但SGML复杂度太高,不适合网络的日常应用,加上开发成本高、不被主流浏览器所支持等原因,使得SGML在Web上的推广受到阻碍。在这种情况下,开发一种兼具SGML的强大功能、可扩展性以及H删L的简单性的语言势在必行,由此诞生了XML语言。XML(eXtensibleMarkup Language,可扩展置标语言)是由W3C于1998年2月发布的一种标准
37、。它同样是SGML的一个简化子集,它将SOML的丰富功能与HTML的易用性结合到Web的应用中,以一种开放的自我描述方式定义了数据结构,在描述数据内容的同时能突出对结构的描述,从而体现出数据之间的关系。这样所组织的数据对于应用程序和用户都是友好的、可操作的。第8页国防科学技术大学研究生院工程硕士学位论文212 XML的特点及前景XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识,它不像HTML或格式化程序。这些语言定义了一套固定的标记,用来描述一定数据上报元素XML是一种元标记语言,用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建,XML标记描述的是
38、文档内容的结构和含义,而不是描述页面元素的格式化。可用样式单为文档啬格式化信息。文档本身只说明文档包括什么标记,而不是说明文档显示的样式。相对于HTML而言,XML具有很多优点:(1)XML是自描述的XML的最大能量来源于它不仅允许定义自己的一套标记,而且这些标记不必局限于对于显示格式的描述。)mIL允许根据各种不同的规则来制定标记,比如根据商业规则,根据数据描述甚至根据数据关系来制定标记。XML实现了用定义它们自己的标记集来说明文档内容的功能,这些说明的精确度是实现者自己制定的。(2)XML支持对文档内容的验证。XML文档的结构和内容是由其语法定义的。文档类型定义(Document Type
39、 Definition,DTD),XML模式(XML Schema)就是这类语法的代表,可以方便地验证文档的有效性。(3)XML允许开发各种不同专业的特定领域的标记语言,如医疗、化学、音乐等。有了这些语言,该领域的实践者们可以相互自由地交换数据和信息,而不必担心对方是否利用特殊的、专用的软件来创建数据。如目前已经有用于数据领域的标记语言MathML。(4)XML是非专有并易于阅读和编写的。这使得它成为在不同的应用问交换数据的理想格式。XML不是第一种公共文档格式,但它与已有的文档交换格式相比具有很多优点。XML是源文档的最佳格式,因为它允许用最佳的输出格式,例如HTML、PDF和PostScr
40、ipt格式,并格式化应用程序,例如电子数据交换EDD。(5)XML是基于W3C定制的开放标准,从而使基于XML的应用具有广泛性。(6)支持高级搜索因为可以知晓文档内容的结构和含义(根据其语法规则),所以很容易在XML文档中进行搜索在Intemet上如果Web页是XML格式的,则搜索会更高效,而且不仅可以搜索数据,还可以在搜索中加入与数据相关的上下文信息,这样就形成了更精确的搜索机制。XML自从出现以来,一直受到业界的广泛关注。自从1998年2月成为推荐标准后,许多厂商加强了对它的支持力度,包括Microsoft、IBM、ORACLE、SUN等,它们都推出了支持XML的产品或改造原有的产品支持X
41、ML。W3C也一直第9页国防科学技术大学研究生院工程硕士学位论文在致力于完善XML的标准体系。然而由于XML的复杂性和灵活性,加上工具的相对缺乏,增加了XML使用的难度。因此,XML很难在短期内完全替代HTML,成为互联网的主角。另外,由于XML是元标记语言,任何个人、公司和组织都可以利用它定义新的标准,这些标准间的通信成为了巨大的问题,因此人们在各个领域形成一些标准化组织以统一这些标准,但是这些努力并不一定能够形成理想的结果。无论如何,XML的出现为互联网的发展提供了新的动力,终将成为互联网上全新的开发平台。它促使了新的类型的软件和硬件的形成和发展,而这些发展又将反过来促进XML的发展。21
42、3XML规范一个XML文档通常包括XML声明、元素、属性、处理指令、注释以及命名究竟六大要裂”。XML声明必须在文档的第一行,而且其中的字母是区分大小写的。首先声明使用的XML版本号,如,虽然XIvlLl0是目前惟一的版本,但是仍然要声明版本属性。文字编码声明位于版本属性之后,默认值是Unieode编码(LrrF-8或LrrF-16)。独立文件声明位于文字编码声明之后,属性值可以为yes或no。属性值yes表示所有与文件相关的信息都已经包含在文件中,即文件中没有指定外部的实体,也没有使用外部的模式;属性值no表示应用程序需要取得文件以外的信息才能完成文件解析。完整的忸声明如下:元素组成了XML
43、文档中的大部分内容。一个构造良好的XML文档必须至少包含一个元素,即文档中必须有根元素。元素由一对标记(即起始标记和终止标记)串行化而成。元素名称是区分大小写的,它必须开始于字母或下划线(),后面可跟任意长度的字母、数据、句点()、连接符(-)、下划线或冒号。属性通常用来给元素提供所显示内容的额外信息。元素的属性在元素的起始标记中给出,形式为:属性名=属性值。属性名与元素名有相同的构选规则,属性值则必须出现在单引号或双引号中。一个元素可以有任意数目的属性,但是它们的名称必须不同处理指令通常用来为处理XML文档的应用程序提供信息,这些信息包括如何处理文档,如何显示文档等。处理指令可以作为元素的后
44、裔出现,也可以作为文档的顶层结构出现在根元素的前面或后面注释也可以作为元素的后裔出现,也可以作为文档的顶层结构出现在根元素的前面或后面。注释分别使用字符序列“”作为开始和结束,注释的文本内容在这两个字符序列之间。第lO页国防科学技术大学研究生院工程硕士学位论文XML设计者可能选择相同的标记名,命名空间就是用来解决这种情况的。它相当于一个词汇表,它限定了与之关联的所有元素的作用范围。命名空间本身也有名称,它的名称是统一资源标记符(uniform resource identifier,URI)。命名空间的名称和元素的本地名称组合在一起形成了一个全局惟一的名字,即限定名(qualifiedname
45、,QName)。所有的XML文档都应试是构造良好的,满足这样的条件:所有的构造从语法上都是正确的;只有一个顶层元素,也即根元素;所有的起始标记都有与之对应终止标记,或者使用空元素速记语法;所有的标记都正确嵌套;每一个元素的所有属性都是不同名的214 DTD及XML SchemaXML文档本质上是保存信息的结构化载体。为了得到有效的XML文件,还必须明确文件中的信息必须遵守哪些结构,即需要一种用来描述v儿文档中信息结构的数据模型。这些模型包括DTD、XDRCXML data reduced,XML数据简化)、DCD(docutout content description,文档内容描述)、SOR
46、(simple outline XML,简单XML概要)、DDML(document definition markup language,文档定义标记语言)以及Schema。目前使用最为广泛最具有代表性的是D1D和Schema。DTD列出了可用在文档中的元素、属性、实体和符号表示法,以及这些内容之间可能的相互关系。它可以给多个XML文档共享使用,提供三个基本用途:对标记编制文档:加强标记参数内部的一致性;使XML语法分析器能够确认文档。DTD显示了文档的一般结构,这与每个具体文档中的实际数据是相脱离的DTD确切定义了在文档内允许出现什么,不允许出现什么。DTD建立了查看和编辑软件必须支持的标
47、准,而且还建立了一种规则:超出这些DTD声明的扩展是无效的。关于DTD的详细说明,可参考文献【1,16。与DTD相比,XML Schema是一种“强约束”数据模型。主要体现在:DTD几乎完全没有数据类型的定义,特别是对元素的内容而言,一切都是基于字符串,在使用中不能确定数据类型。DTD的定义不符合XML语法。它采用一种不同于XML文档中元素描述的方法,给处理上带来了麻烦。DTD只能有限地进行扩展,而且扩展得不是很好。DTDl的约束定义能力不足,无法对讧L实例文档做出更细致的主义限制,如不能表示出l一3次这样的约束。DTD不够结构化,重用的代价相对较高。Schema的功能包括;丰富而强大的数据类
48、型;基于命名空间的URI的有效性验证;可扩展性和可伸缩性;可重用性。但也不能解决所有问题如有需要可结合DTD和Schema一起使用。第1l页国防科学技术大学研究生院工程硕士学位论文215XML编程接口DOM的全称是Document Object Model,也即文档对象模型f171。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。DOM接口提供了一种通过分层对象模型来访问XML文档信息的方式,这些分层对象模型依据XML的文档结构形成了一棵节点树无论XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用DOM所生成的模型都是节点树的形式也就是说,DOM强制使用树模型来访问XML文档中的信息