(计算机应用技术专业论文)资源检查系统resa的设计与实现.pdf_第1页
(计算机应用技术专业论文)资源检查系统resa的设计与实现.pdf_第2页
(计算机应用技术专业论文)资源检查系统resa的设计与实现.pdf_第3页
(计算机应用技术专业论文)资源检查系统resa的设计与实现.pdf_第4页
(计算机应用技术专业论文)资源检查系统resa的设计与实现.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

中文摘要 伴随着网络技术的飞速发展,可扩展标记语言x m l 以其很好的扩展性、开放 性与可验证性等特点及优势逐渐成为网络世界的“国际语言,在电子商务、数 据交换、网络出版、制造业、生物医药以及电信等行业得到了广泛的应用。x m l 应用市场的蓬勃发展,使x m l 文档的数量急剧增多,x m l 语言的作用日显重要。 越来越多的各种数据和文档资料开始用x m l 语言编写。 本文设计并实现了一个基于x m l 技术对应用系统中资源的使用进行跟踪,生 成跟踪日志,然后通过分析日志来实现对各类资源使用情况的跟踪和资源泄漏检 查,并形成结果通过浏览器报告给用户的资源检查系统( r e s a ) 。 该系统的设计主要由四部分内容组成:系统运行参数的分析,资源监视日志 抽取,资源监视日志分析,分析结果生成与显示。重点在于以x p a t h 作为查询语 言,基于x m l 文档的逻辑结构,把一个x m l 文档看成树或节点的模型对x m l 文档 的元素和文本进行寻址,x s l t 解析器从句法上分析输入的x m l 文档,包括x s l t 样式表,处理从x s l t 样式表中找到的指令,将x m l 文档转换为h t m l 文档在浏览 器上输出,使用户可以根据相关结果采取措施,进而提高应用软件开发和维护的 可靠性及效率。 关键词:x m l x p a t hx s l 资源泄漏检查 a b s t r a c t w i t ht h er a p i dt e c h n i c a ld e v e l o p m e n to fn e t w o r k , t h ee x t e n s i b l em a r k u p l a n g u a g ex m l i sb e c o m i n ga ni n t e r n a t i o n a ll a n g u a g ef o ri t se x c e l l e n tc h a r a c t e r i s t i c s a n da d v a n t a g e ss u c h 嬲e x t e n s i b i l i t y ,o p e n i n ga n dv a l i d a t i o n ,a n dh a sg o tm u c hm o r e a p p l i c a t i o n i ne l e c t r o n i c c o m n l e r c e ,d a t ae x c h a n g i n g ,n e t w o r kp u b l i c a t i o n , m a n u f a c t u r i n gi n d u s t r y , t h el i v i n gc r e a m r em e d i c i n e ,t e l e c o m m u n i c a t i o n sa n ds oo n t h e d e v e l o p m e n to f t h ex m lm a r k e tm a k e st h eq u a n t i t yo f t h ex m l t e x tf i l e sg r e a t e r a n dt h ef u n c t i o no ft h ex m l l a n g u a g ei n c r e a s i n g l yi m p o r t a n t m o r ea n dm o r ev a r i o u s d a t aa n dt e x tf i l e sw r i t ei nx m l l a n g u a g e t h i st h e s i sd e s i g n sa n dc a r r i e so u tar e s o u r c e s a n a l y z i n gs y s t e m ( r e s a ) b a s e d o nx m lt e c h n i q u ew h i c hc a nt r a c er e s o u r c e si na p p l i c a t i o ns y s t e m s ,p r o d u c et h e t r a c i n gl o g ,c h e c kl e a k a g e so ft h er e s o u r c e sb ya n a l y z i n gt h el o g sa n df i l lo u tar e s u l t t a b l e ,t h es h o war e p o r tt oc u s t o m e r sv i at h eb r o w s e r t h es y s t e mi sm a d eo ff o u r p a r t s :a n a l y s i so ft h es y s t e mp a r a m e t e r s ,d e r i v i n go ft h er e s o u r c e sm o n i t o rl o g , a n a l y s i so ft h er e s o u r c e st r a c i n gl o g ,r e s u l tt a b l ea n dd i s p l a y i n g t h ek e yp o i n ti st o u s ex p a t ha st h eq u e r yl a n g u a g e ,b a s e do nl o g i c a ls t r u c t u r e so ft h ex m lt e x t s , l o o k i n gf o rt h ea d d r e s so f t h ex m l e l e m e n ta n dt e x tb yt a k i n gax m lt e x ta sam o d e l o ft r e eo rn o d e t h ex l s ta n a l y s i sm o d e l a n a l y z e st h ei n p u tx m lt e x t ,i n c l u d i n gt h e x s l tp a t t e r nt a b l e ,d e a l sw i t ht h ec o m m a n df o u n df r o mt h ex s l tp a t t e r nt a b l e , c o n v e r t st h ex m lt e x tf i l ei n t oh t m lt e x tf i l ea n dd i s p l a y st h ef i l e0 1 1t h eb r o w s e r , i no r d e rt oh e l pt h es o f t w a r ed e v e l o p e r sd e c i d eh o wt oe n h a n c es o f t w a r ed e v e l o p i n g a n dm a i n t a i n i n gr a t e k e yw o r d s :x m l ,x p a t h ,x s l ,r e s o u r c el e a k a g ea n a l y z i n g 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得叁垄盘堂或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:却司绎 签字眺 。坶月z 彦日 学位论文版权使用授权书 本学位论文作者完全了解苤鲞盘堂有关保留、使用学位论文的规定。 特授权鑫鲞叁堂可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 、( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:妻矽胡绎 导师签名:多哪 签字日期:矽7 年 月必日 签字日期:工印序2 胡二日 天津大学硕士学位论文第一章绪论 1 1 研究背景 第一章绪论 当应用程序在w i n d o w s 中运行时,w i n d o w s 必须实时“跟踪”该应用程序的 运行,并保留与之相关的许多信息,这些信息由w i n d o w s 保留在一种叫堆的内 存块中。简单地说,堆是采用特殊机制管理的内存块。u s e r 资源堆和g d i 资源 堆合称为系统资源堆,习惯上就把它们叫作系统资源( s y s t e mr e s o u r c e ) 1 1 。 当一个应用程序在w i n d o w s 中被加载时,w i n d o w s 自动地将可用u s e r 资源 堆和可用g d i 资源堆中的一部分空间分配给它,而当应用程序退出时,这部分 空间也应该由w i n d o w s 收回以交给别的应用程序使用。但实际上几乎所有的 w i n d o w s 用户都发现:一个应用程序加载前和退出后可用系统资源的值是不相等 的,而且随着应用程序的不断加载和退出,随着w i n d o w s 使用时间的增加,附 图中资源状况显示的可用系统资源也在不断减少。并且许多程序员在实际工作中 还发现在其他一些情况下w i n d o w s 也会不能完全收回系统资源,这也导致可用 系统资源不断减少,程序员们称这种现象为资源泄漏( r e s o u r c e l e a k a g e ) 【l 】。 对于大中型软件来说,资源泄漏问题往往很难全面检测和定位。常见的资源泄漏 分为两类:一是打开的文件或资源句柄没有及时关闭,二是动态申请的内存没有 及时释放。针对这两种情况,可以使用编译器自带的检测功能,或编写代码时养 成良好的编程习惯,尽量不要在函数内的分支中调用r e t u r n ,以确保在统一的 出口前释放临时申请的资源等方法来发现和解决资源泄漏问题。也可以使用 “n u m e g ab o u n d sc h e c k e r 刀或“r a t i o n a lp u r i f y 等外部工具,但这两款检测 软件的实际使用结果却不太理想。误报现象不算严重,不至于影响自己的分析判 断,但在漏报情况下就还得靠其他手段来检测了。 本工具系统正是适应此种需要设计开发的,专注于系统资源泄漏检查,通过 该系统的使用,用户可以根据本工具系统检查汇报的结果采取措施,进而提高应 用软件开发和维护的可靠性及效率。 天津大学硕士学位论文第一章绪论 1 2 本文内容安排 本论文组织的内容如下g 第一章是全文的绪论。 第二章x m l 相关技术研究。主要介绍了本次开发所用到的x m l 、x p a t h 、x s l t 、 d o m 的相关知识。 第三章r e s a 的总体设计。主要研究了r e s a 的开发目的,结构及本次开发的 主要内容。 第四章详细设计。主要包括生成界面的设计,模版文件的设计及j a v a 类设 计。 第五章总结。是对本次开发的总结与展望。 天津大学硕士学位论文第二章x m l 相关技术研究 第二章x m l 相关技术研究 2 1x m l 的起源和目的 1 9 9 6 年,万维网协会( 或者d q 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 已经提供了一种可以无限扩展的语言,它允许任何人能够根据自 己的需要加以扩充p 2 1 。 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 协议和软件更为协调,从而简化了数据处理 和传输。作为一个不错的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 的推荐标准【3 】。包括e x t e n d e db a c k u s - n a u r f o r m ( e b n f ) 中语法标识在内的这个正式的规范可以很容易地从w 3 c 的w e b 站点( h t t p :w w w w 3 c o r g t r r e c - x m l ) 上得到;此外,x m l 规范的制定者之一 t i mb r a y 还在h t t p :w w w x m l c o m a x m l t e s t a x m l h t m 上提供了一个有着非常不错 的注解的版本。在h t t p :w w w u c c i e x m l 上,由p e t e rf l y n n 等人代表w 3 c 的x m l 研究组维护的一个x m l1 0 f a q 还提供了到其他与x m l 相关的主题的链接。 x m l 是一种界定文本数据的简便而标准的方法。它曾经被人称作“w e b 上 的a s c i i 码”。就好像你可以使用自己喜爱的编程语言来创建任何一种数据结构, 然后同其他人在其他计算平台上使用的其他语言来共享一样。x m l 的标记用来 说明你所描述的概念,而属性则用来控制它们的结构。所以,你可以定义自己所 设计出的语法并同其他人共享。 天津大学硕士学位论文第二章x m l 相关技术研究 2 2x m l 特性及发展目标 x m l ( e x t e n d e dm a r k u pl a n g u a g e 可扩展标记语言) 是从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 通用标记语言标准) 进化来的,最初s g m l 是为 了解决文档及其格式问题的一种标记语言,所以非常的复杂和难以实用,那时计 算机的应用水平还处在很低的阶段,并且那时人们只需要传递和显示一些简单的 数据。 因此,1 9 8 9 年t i mb e m e r s 1 e e 依据s g m l 开发出一种超文本格式,就叫 h t m l ( h y p e r t e x tm a r k u pl a n g u a g e ) 。随着计算机的应用,h t m l 缺点就暴露 了出来,h t m l 是把数据和显示格式一起存放的,如果只想使用数据而不需要格 式,分离这些数据和格式就非常困难。而随着i n t e m e t 的发展,1 9 9 8 年1 月w 妃 公布了x m l l 0 版本。x m l 包括x m l 元数据文件,s c h e m a 文件,x s l t 显示 文件,x l i n k 链接,x p a t h 等一系列相关部分【4 1 。 x 池的两大发展目标是数据的表示和数据的交换格式。x 池可以对数据进 行统一的描述,功能强大,同时又具有易用性,良好的适应性和可扩展性,它已 经成为一种信息交换的标准格式,可以进行跨平台的数据交换和数据共享,很好 地满足了i n t e r n e t 对信息交换的迫切需求,尤其是在电子数据交换和电子商务等 应用领域内,x m l 已经逐渐成为数据表示的标准【5 j 。 x m l 在采用简单,柔性的标准化格式表达和应用程序间交换数据方面具有 很大的优势。 x m l 优点之一是使用用户界面和结构化数据彼此分离,允许不同来源,异 构的数据无缝集成以及对同一数据进行多种处理,例如,对同一数据内容可以表 现为多种视图。这既可以满足不同用户的需求,又能在一定程度上保证数据的安 全性。另外,x m l 在数据描述方面十分灵活,扩展性强,而且具有良好的结构 和约束机制;数据经过x m l 的处理之后表达方式简单,易读,同时也易于有其 他应用进行进一步的加工和处理。正是由于x m l 具有上述特点,所以它正逐步 成为在因特网环境中进行数据交换的标准和中间介质。 下面我们具体说说x m l 的特点: 1 电子数据交换( e d i ) 2 灵活的开发 因为x m l 是数据和格式分离设计的,所以x m l 元数据文件就是纯数据的 文件,这样就可以使用同一个数据源,显示多种样式了,而使用h t m l 的话, 每显示一种式样,就必须重新把数据和格式混到一起,这是一件很痛苦的事情1 6 。 x m l 采用的t a g 是自己定义的,这样我们的数据文件的可读性就能大大提 天津大学硕士学位论文第二章v 匝相关技术研究 高,也不再局限于h t m l 文件那些标准的t a g 了。而且因为x m l 支持u n i c o d e , 所以我们就可以使用中文标记( t a g ) ,是不是感觉很自由呢? 看看这样一个存 放职员数据的x m l 数据文件: 于青姓名 女 2 3 叫学历 北京大学 1 9 9 6 0 9 0 1 2 0 0 1 0 7 0 1 中文 看到这个文件感觉是不是很棒? 这样的文件不需要使用很复杂和专业 的工具就可以增加、修改和编辑( 使用微软的记事本就可以做到这些) ,而且大 部分人都可以使用,可以让一个非计算机的专业人士,在1 0 分钟内学会,这就 是一个x m l 元数据文件的样子。当然x m l 文件也不象h t m l 那样可以写的不 完整,x m l 必须写的中规中矩( w e l lf o r m e d ) ,否则x m l 的解析器就会报错。 3 面向对象的特性【刀 x m l 的文件是以树状方式存储,同时也有属性,这非常符合面向对象方面 的编程,而且也体现了以对象方式存储,o r a c l e 数据库就使用了这种面向对 象的特性,但是o r a c l e 数据库的根本是关系型的数据库,因此速度和稳定性 都有一定的问题,而且特别的复杂,所以大家基本上是很少使用它的这一特性。 4 缺陷 世界上永远也不会出现完美的语言的,x m l 也是一样,它也有很多的缺陷, 虽然它是树状存储的,搜索的效率极高,但是问题不是在搜索,而是在于目前它 的插入和修改1 2 3x m l 术语 x m l 术语比较多,此处先作一个简单的介绍【8 】: 元素( e l e m e n t s ) :代表x m l 文档中的每一个组件,包含字符、元素或者两 天津大学硕士学位论文第二章x m l 相关技术研究 者皆有,允许有空元素( e m p t ye l e m e n t ) 。 属性( a t t r i b u t e s ) :放在元素后面的数据,代表这个元素的另一种特性和特 征。 统一编码( u n i c o d e ) :一种字符集,包括了全世界各种语言中有用的字符。 实体:“文本片 ,实体也像一个缩写,一个实体可以是一个字符也可以是一 个文档的数据,是x m l 文本的基本单位。 一标记( m a r k u p ) :像标记( t a g ) 、实体引用( e n t i t yr e f e r e n c e ) 和声明这样 的构件。 序言( p r o l o g ) :关于文档实例表现形式的信息。 “ 文档实例( d o c u m e n ti n s t a n c e ) :以元素的层次结构组织的实际文档数据。 样式表( x s l ) :描述x m l 的元数据文件格式的语言( 因为c s s 对于x m l 来讲不够用) 。 样式表转换( x s l t :e x t e n d s i b l es t y l e s h e e tl a n g u a g et r a m s f o r m a t i o n ) :负责 将x m l 的源代码转换为另一种格式。 文档类型定义( d t d 9 】:d o c u m e n tt y p ed e f m a t i o n ) :对x m l 文件进行格式 上的定义和规范,用d t d 来确定为正确的x m l 文档称为v a l i dx m l 。 、 x m l 组织机构( 诅。s c h e m a ) :也是一种用来规范x m l 文档的组织结构, 与d t d 具有异曲同工的作用,由于有其自身的优越性,有取代d t d 的趋势。 x l i n k :x m l 中的链接语言。 文档对象模型( 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 分析器将一个x m l 文档转换成一个对象模型的集合( 通常称d o m 树) 。 s a x ( s i m p l ea p i sf o rx m l ) :x m l 简单应用程序接口。 其中x m l 的三要素就是指的d t d ( x l 儿s c h e m a ) ,x s l 和x l i n k 。 2 4x m l 文档及其分类 2 4 1 文档类型定义( d t d ) 相对于h t m l 的演绎固定的语法,x m l 有一个更具弹性,更容易添加新功 能而又不失同一标准的语言格式l 1 0 1 ,可以通过在数据中加入附加信息的方式来描 述结构化数据。作为一种元标记语言,x m l 突出的优点是:允许程序开发人员 根据它所提供的规则,针对不同的应用领域,制定各种各样的标记语言。为了确 保x m l 文档具有较强的易读性,易检索性和清晰的语义,一个完全意义上的 x m l 文档不仅仅是“格式良好的 而且还应该是使用了特定的标记的“有效的 x m l 文档。在x m l 中,标记的语法可以通过文档类型定义d t d 来描述。也就 天津大学硕士学位论文第二章x m l 相关技术研究 是说,通过d t d 来描述什么是有效的标记,并进一步定义标记语言的结构【1 0 l 【l l 】。 d t d 可以包含在它所描述的x m l 文档中,或者与外部的u r l 相链接。外 部d t d 可以被不同文档和网站所共享i l 。d t d 以文档形式标记标准,并强制 x m l 数据使用者遵守此必标准。d t d 可以用来定义x m l 数据格式,并且可以 确定输入的数据是否遵循了特定的格式。在d t d 的帮助下,可以从关系数据库 或对象数据库中移出数据或把数据送往目标数据库。甚至可以用适当的d t d 利 用x m l 作为中间格式来转换不同的数据格式。利用d t d 的这个特点,可以实 现各种基于x m l 的数据传输应用。 2 4 2x m l 文档分类 用x m l 语言书写的文档就是x m l 文档,它由元素、属性、实体引用、注 释、c d a t a 和处理指令等部分组成。一个x m l 文档可以选择具有一个文档类 型定义( d t d ) ,它用来定义一个x m l 文档的结构。x m l 文档具有类似h t m l 的基于文本的格式,是一种标准化的可以在网络上表示数据的文档。x m l 文档 通常以一个x m l 声明开始,通过x m l 元素组织x m l 数据。根据x m l 文档的 内容、结构和用途的不同,可以将它分为如下三类: ( 1 ) 以数据为中心的文档( d a t a - c e n t r i c d o c u m e n t s ) 1 2 1 x m l 用作数据的传输载 体,着重于文档中的数据,而非文档格式,通常是给机器用的,方便机器进行数 据处理。例如销售订单、航班时刻表、科学计算结果及股市汇率。这类文档的特 点是结构相当严谨,数据粒度精细( 即最小的独立数据单位只存在于p c d a t a 元 素或属性这一级别) ,很少或没有混合内容。除非在对文档进行验证的时候,同 级元素或p c d a t a 的出现次序一般来说并不重要,交换两个同级元素并不会破 坏文档的可读性。主要应用在电子商务、e r p , e a t 等领域,集成不同数据源的 数据,交换信息。 ( 2 ) 以文档为中心的文档( d o e u m e n t - c e n t r i c d o c u m e n t s ) 1 2 】将x m l 用作文本 的传播载体,通常是给人阅读的。例如书籍、e m a i l 、用户手册等。其特点是半 结构化或非结构化的数据,数据粒度大,混合内容多。同级元素或p c d a t a 出 现的次序一般来说非常重要。 ( 3 ) 混合型x m l 文档。在实际应用中,以数据为中心和以文档为中心的文 档之间的差别不一定很明显。例如,一种以数据为中心的文档比如发票,可能含 有大粒度的、结构不规则的数据比如零件说明;另一种以文档为中心的文档如用 户手册,可能包含细粒度的结构规则的数据,比如作者和修订日期。其它例子包 括法律和医学文书,虽然以松散的形式写成,但是却包含离散的数据块,例如日 期、名称和操作程序,出于法规的原因通常要以完整的文件形式存储。此类文档 天津大学硕士学位论文第二章x m l 相关技术研究 同时具有面向数据和面向文档两种类型特征,称为混合型) m l 文档。在混合型 x m l 文档中,有结构化数据,也有非结构化数据。 2 4 3x m l 文档的解析 对于一个现成的x m l 文档,应用程序是不能直接使用或进行处理的,必须 通过x m l 文档的解析器( x m lp a r s e r ) 把文档解析成可操作的形式。x 6 4 文档解 析器实际上是一些程序,用来读取文档并分析文档的结构。解析x m l 文档是 处理x m l 文档的第一步。一般来说,处理x m l 文档还要对x m l 文档中的数 据进行处理,比如对文档进行添加、删除、修改等操作,这都要通过x m l 的 解析器。解析器读取x m l 文档并检查文档的有效性在多数情况下,会生成一棵 解析树。目前,对于x m l 文档的解析主要有d o m 解析和s a x 解析两种方法 1 1 3 1 1 1 4 】【1 5 】,如图2 1 所示。 2 5x m l 简单a p i 豳幺lm 儿j d 当雕埔析 x m l 简单a p i ( s i m p l ea p i f o rx m l ,简称s a x ) 不是某个标准化组织的产品 它是早期开发x m l 过程中,许多x m i 开发者为了实现一种有效的a p i 而创造 出来的产品。s a x 并不把注意力放在整个文档的树型结构上,而是采用了基于 事件的模型,并在解析x m l 文档的时候可以触发一系列的事件【1 6 j 。比如当发现 给定的标注( t a g ) 的时候,它可以激发一个事件处理函数。对于这个事件的反映取 决于使用解析器的程序( 它定义事件处理函数) 。s a x 提供的这些事件包括:元素 声明开始、元素声明结束、属性声明开始、遇到注释声明等等。 天津大学硕士学位论文第二章x m l 相关技术研究 一个s a x 应用程序可以完全操作和控制x m l 文档,这样就可以根据实际 需要来维护x m l 文档中的数据。s a x 解析器并不在内存中保留x m l 文档,因 此它们通常是短小精悍的,对内存的要求通常也是比较低的。正因为如此s a x 没有像d o m 那样的随机定位到文档的特定部分的功能,也不支持复杂的搜索功 能。但是这并不意味着s a x 不能用于复杂的x m l 应用程序。相反,s a x 具有 很多优点,完全可以满足我们开发复杂的x m l 应用程序的需要。 在我们这个设计里并没有用到s a x ,我们只作简单的介绍,下面让我们来 看设计中用到的文档对象模型d o m 。 2 6 文档对象模型d o m 2 6 1 文档对象模型简介 w 3 c 文档对象模型( d o c u m e n to b j e c tm o d e l 简称为:d o m ) 规范是一组基于树 模型的平台和语言中立的应用程序编程接1 3 ( a p i ) ,它能够描述如何访问和操纵 存储在x m l 和h t m l 等文档中的信息。它是由万维网联盟( w 3 c ) 发布并维护的一 个标准。d o m 提供了文档的结构化视图,以及一个标准的可互操作的类和方法 的集合,可以用于x m l 文档元素的添加、修改、删除和检索,以及文档内容的 定位。d o m 解析器读取整个文档,并通过在内存中构造一个对象树,提供文档 的一个视图。文档的主要结构是通过对象树中的节点来表达的,并通过使用d o m 接口来访问和处理对象树【1 6 】。目前d o m 是处理x m l 文档时最常用的应用程序接 口。 依照w 3 cd o m 规范,选用d o c u m e n to b j e c tm o d e l 这个术语是因为d o m 在传 统的面向对象编程的意义上来看是一个对象模型。文档利用对象被模型化,模型 用来描述文档的结构以及文档的行为和文档对象的行为。d o n 规范是结构化文 档处理技术的一次巨大的飞跃。这个规范为处理存储在x m l ,h t m l 和其它包含 结构化信息的文档中的信息提供了一组标准编程接口。 d o m 设计的基本原理规定,在d o m 中“每个事物都是节点一,节点是d o m 的一个基本概念,这是d o m 的最大特点。除此之外,d o m 还具有如下特点: ( 1 ) 语言和平台的中立。d o m 一开始就被设计成独立于各种平台和语言的。 目前,几乎可以在每一种流行的平台上,使用任何一种常用的编程语言来使用 d o m 。如j a v a ,j a v a s c r i p t ,p e r l ,c + + 等等。 ( 2 ) 开放的并且是可扩展的。也就是说,一个供应商可以向d o m 规范添加规范 中没有定义的方法和属性,并且只要我们认为这些方法和属性是符合d o m 基本 规范的。比如m i c r o s o i t 公司,它为了给开发人员带来便利,在不违反d o m 规 天津大学硕士学位论文第二章x m l 相关技术研究 范的基础上,向d o ma p i 提供了多个特定于i n t e m e te x p l o r e r 的扩展。 2 6 2d o m 的树型结构1 6 】 d o m 在逻辑上用一棵树来表示文档( 下面是一个x m l 文档的例子,用d o m 树表示,其结构如图2 2 所示。 例2 1 一个典型的x m l 文档 c a r s o n 31 9 5 , 在图2 2 中,实线双圆圈代表根节点,实线圆圈代表元素节点,虚线圆圈代 表属性 节点,矩形代表文本节点,箭头代表父子关系。在d o m 术语中,图2 2 中的每个圆圈或方框都称为一个“节点。节点就是文档内容中的一个特定元素、 属性和文本等等的对象表示。依据在文档树中的位置的不同,节点有特定的名称。 所有的文档都有一个节点称为根节点,它是位于树型结构最顶部的节点。如图2 2 所示,根节点就是表示 标记的那个双圆圈。如果一个节点下面有一个或 者多个节点,那么就把下面的节点称为这个节点的子节点,也就是说每个子节点 都是其“父 节点的一个孩子节点。图中表示 标记的节点就是 节 点的一个子节点,而它同时又是表示 标记的节点的父节点。节点之间的这 种父子关系在d o m 中被广泛地使用。那些没有子节点的节点称为叶节点,它们 是位于树的最远端的节点。把父子关系的比喻加以延伸,具有相同父节点的 节点称为“兄弟节点。如果两个节点都是从树型结构某处的同一个节点派生出 来的,就说它们具有一个共同的祖先节点。 天津大学硕士学位论文第二章x m l 相关技术研究 图2 2 文档树 节点的概念不仅限于元素,文档中的每个事物都可以表示为一个节点,包 括注释、元素的属性、文本内容、x m l 处理指令、文档类型声明等等。只要是 文档中的事物,就可以将它表示为一个节点。 2 6 3d o m 的数据类型 基本的、原子性的数据类型是编程接口内部工作方式所必需的,而d o m 也 不例外。d o mw o r k i n gg r o u p 定义了一些基本的数据类型用来表示存储在文档中 的信息,而且这些文档是可以通过多种语言和平台来使用和实现的。通常情况下 可以从其它语言中借用现有的数据类型,但是对于更复杂的信息,d o mw o r k i n g g r o u p 仓t j 造了属于d o m 自己的数据类型。从l e v e l 2 层起,d o m 规范使用的基本 数据类型是d o m s t r i n g 和d o m t i m e s t a m p 两种。 d o m s t r i n g 类型用来描述一个字符序列,其中的每个字符都用双字节的单元 来表示。它在d o m 规范中的定义方式如下: v a l u e t y p ed o m s t r i n gs e q u e n c e u n s i g n e ds h o r t ; 根据d o m 规范,d o m s t r i n g 使用u 1 6 ( 在u n i c o d e 规范中有详细的定义) 进 行编码。选择u t f 1 6 编码是因为这种编码方法支持世晃各地的多种语言,并且 在高科技行业中的应用十分广泛。 在所有的d o m 规范中,无论哪里需要字符串,都会使用d o m s t r i n g 类型来表 示。但在具体的使用过程中,经常需要把d o m s t r i n g 类型转换为一个本地平台支 持的字符串类型。所以在某些d o m 实现( 比如x e r c e s ) 中,专门提供了把d o m s t r i n g 天津大学硕士学位论文 第二章x m l 相关技术研究 表乏1 x 节点类型 节点类型说明 e l e m e n t 在町札戏看瑚l 蟹又档r 霰不一个元系如幽2 2 所示, 节点 就是一个e l e m e n t 类型的博点 a tt r i b u t e表示一个元豢的属性 t e x t 表不一个元素的文本内容 c d a t a s e c t i o n 在儿文档中表示c h a r a c t e rd a t a ( 字符数据) 部分 c o e d e n t表示个注释注释的表示形式为 d o c t q e l l t 表示整个) 眠或者h 1 讥文档 d o c u m e n t t y p e 每个文档部有个d o c u m e n t t ) r d e 节点它提供已经包含在d t i ) 声明中 的符号的渤鹏矾o d 枷叩年咆含一般实体的h a d n o d 崩印 注:腻? 棚o d e m 印代表那些通过名称访目的节点的集合 d o c u m e n t f r a g m e n t可以把文档片段看作轻量级或者更小型的d o c u m e n t 节点定义 d o c u m e n t f r a 册e n t 节点类型是目为经常希望只提取文档的部分进行处 理使用d 0 c 岫明t f n 阴t 可以在无需创建个全新的d o c u m e n t 节点 的基础匕方便地对文档树的部分进行有效的操作 p r o c e s s i n g l n s t r u c t i o n表不个又碍处埋程厅便用网荷伺羽双琚处埋瑁伫x 侣甲口j 瞄椅匕 用作种保存特有处理程序信息的方法 e n t i t y 在文档中表示个分析过或未被分析的实体 e n t i t y r e f e r e n c e 。在文档中表示个实体引用 n o , a t i o n在m 儿支挡中表示一个在i y r d 中声明的符号n o t a t i o n 节点没有父节 点 类型转换为本地字符串类型的方法。这样做完全是具体的d o m 实现为编程提供 的方便,但并不要求每一个d o m 实现也提供类似的方法,而且在d o m 规范中也 没有定义这样的方法。d o wr im e s t a m p 数据类型在d o m 规范中是按如下方式定 义: t y p e d e f u n s i g n e dl o n gl o n gd o m t i m e s t a m p ; 根据d o m 规范,d o m t i m e s t a m p 类型是用来表示毫秒值的,但并没有指出 对应0 毫秒的基础日期。 除了基本数据类型以外,d o m 也有自己的节点类型。d o m 本质上是节点的 集合。由于一个文档中可能包含不同类型的信息,因此也要定义不同类型的节点。 d o m 规范定义了1 2 种包含在文档中的节点类型。每种节点类型都有一组相同的 属性和与之相关的方法。表2 1 列出了从d o m 的l e v e l 2 层开始支持的各种节点类 型,并且针对每种节点类型进行了简要的说明。 通常,d o m 程序只需要处理最重要的节点类型,这些节点类型包含了文档 的实际内容,比如d o c u m e n t , e l e m e n t ,a t t r i b u t e ,c o m m e n t , c d a t a 和t e x t 等。其 天津大学硕士学位论文第二章x m l 相关技术研究 它节点类型通常是用来描述复杂) u l 文档中包含的信息格式和结构。每种节点是 否允许具有子节点取决于它们的节点类型。一些类型的节点根本不允许包含子节 点。如果一个d o m 应用程序试图把一个不适当的节点指派给另一个节点当子节 点,而这另一个节点又不允许具有所指定类型的子节点,那么d o m 将通过引发 一个d o m e x c e p t i o n 来显示相应的错误信息。 2 7 a t h 2 7 1x p a t h 简介 x p a t h ( x m l p a t hl a n g u a g e ) 是一种基于x m l 文档树模型的专门用来在x m l 文档中查找信息的路径描述语言,可以对x m l 文档的不同部分进行寻址定位。 它是w 3 c 的建议语言,具有强大的表达能力。它基于x m l 文档的逻辑结构,把 一个x m l 文档看成树或节点的模型,可以用来对x m l 文档中的各部分内容进行 定位和检索,并提供了公共的定位语法。它是后续更强大的数据检索语言如 x q u e r y t l 7 】的基础。x p a t h 因使用路径标记在x m l 文档的层次结构中进行导航而得 名。其工作方式与语法有些类似操作系统中用于文件定位的路径以及互联网中用 于资源定位的u r i ,。但是x p a t h 要比后两者复杂得多。x p a t h 还可以嵌入在x s l t , p o i n t e r , d o m 等宿主语言中使用f l 引。 在x p a t h 中共有七类节点,它们是根节点、元素节点、属性节点、文本节点、 命名空间节点、处理指令节点和注释节点。而脚a t h 对每种节点都定义了计算 其字符串值的方法,不同的节点计算方法可能不同。 目前,x p a t h 作为x m l 数据的查询语言还有不少缺陷,比如:不能支持分组、 排序和联接操作等。 2 7 2x p a t h 表达式 x p a t h 是一种专门设计的查询语言,用于对x m l 文档的元素和文本进行寻 址。x p a t h 表示法在本质上是声明性的。任何有效的表达式都会使用强调节点之 间层次关系的表示法来声明节点模式。与文件系统路径类似,x p a t h 表达式从根 ( x p a t h 术语中的轴) 前进至源文档中的特定节点集或值。然而,它与文件系统 的相似性并不仅限于此。x p a t h 表达式总是在节点的上下文中求值。上下文节点 由应用程序指定,并且代表查询的起点。它与当前目录的概念没有太大区别。 x p a t h 查询的上下文包括但不限于上下文节点和上下文节点集。上下文节点 集是查询所处理的节点的整个集合。通常,它是实际返回到应用程序的节点集的 天津大学硕士学位论文第二章x m l 相关技术研究 超集。x p a t h 上下文还包含位置和命名空间信息、变量绑定和一个可供应用程序 扩展的标准函数库。x p a t h 分析程序的任何实现都提供了一个用于对表达式进行 求值的函数库。扩展函数被定义在特定于供应商的x p a t h 实现中,但是也可以 由专用的和基于x p a t h 的编程a p i ( 例如,x s l 转换和x p o i n t e r ) 提供。x p a t h 表 达式通常会返回节点集,但是布尔值、字符串、数字和其他类型也受到支持。 最常用的x p a t h 表达式类型是位置路径。位置路径是一个看起来与文件系统 路径非常类似的表达式,它既可以是绝对路径,也可以是相对于上下文节点的相 对路径。绝对位置路径以正斜杠开始。完全限定位置路径由三部分组成:轴、节 点测试以及一个或多个谓词。轴信息定义表达式的初始上下文节点集,而节点测 试是标识该节点集中路径的一系列节点名称。谓词是一个逻辑表达式,它定义了 用于筛选当前节点集的条件。【1 8 】 x p a t h 表达式可以包含任何数量的谓词。如果没有指定任何谓词,则在查询 中返回该上下文节点的所有

温馨提示

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

评论

0/150

提交评论