(计算机应用技术专业论文)dom2分析及其在嵌入式系统上的实现.pdf_第1页
(计算机应用技术专业论文)dom2分析及其在嵌入式系统上的实现.pdf_第2页
(计算机应用技术专业论文)dom2分析及其在嵌入式系统上的实现.pdf_第3页
(计算机应用技术专业论文)dom2分析及其在嵌入式系统上的实现.pdf_第4页
(计算机应用技术专业论文)dom2分析及其在嵌入式系统上的实现.pdf_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

摘要 近年来,随着软硬件技术的飞速发展,移动终端特别是手机具有了访问 因特网的能力。作为在因特网中获取信息最重要的工具浏览器,在这类设备上也 有了发展。 。 然而,相比于桌面浏览器,移动终端上的浏览器显得非常简陋。例如,无法 运行j a v as c r i p t 、不支持动态网页、不支持a j a x 等等。没有这些功能,就无法充 分的使用互联网提供的各种应用。支持这些技术的关键在于浏览器首先要支持 d o m 。 d o m 是d o c u m e n to b j e c tm o d e l 的缩写,郎文档对象模型。它是在1 9 9 8 年 1 0 月1 日由w 3 c 组织发布的一个标准。其目的在于建立一套平台和语言无关的标 准接口,允许程序和脚本读取和操作“文档”的内容、结构和样式。这里的文档, 主要指的是x m l 和h t m l ,也包括从这两种文档中衍生出来的其他文档,如 ) 【h t m l 。 d o m 在桌面浏览器中已经是一个标准,但是在嵌入式浏览器中,支持d o m 的还不是很多。本文针对什么是d o m 以及如何在嵌入式浏览器中实现d o m 进行 了研究。主要的研究内容包括: 1 详细分析了d o m 的结构和特点,研究d o m 是什么,在浏览器中充当怎 样的角色。 2 以一个嵌入式浏览器为平台,完成一个嵌入式版本的d o m 的实现 m i n i d o m 3 使用内存对换、资源池等技术,有效降低嵌入式d o m 所使用内存资源 关键词:嵌入式,浏览器,文档对象模型、超文本语言 a b s t r a c t r e c e n t l y , w i t ht h er 印i dd e v e l o p m e n to ft h es o f t w a r ea n dh a r d w a r et e c h n o l o g y , t h em o b i l ed e v i c e s ,e s p e c i a l l yt h em o b i l ep h o n e s ,h a v eh a dt h ea b i l i t yt oa c c e s si n t e r a c t t h eb r o w s e r , w h i c hi st h em o s ti m p o r t a n tt o o lf o ra c c e s s i n gi n t e m e t ,h a sb e e na l s o d e v e l o p e d i ns u c hd e v i c e s h o w e v e r , c o m p a r e dw i t hd e s k t o pb r o w s e r , t h eb r o w s e ri ne m b e d d e dd e v i c ei s v e r ys i m p l e f o ri n s t a n c e ,i tc o u l d n tb i bj a v as c r i p t , d o e s n ts u p p o r td y n a m i cw e bp a g e , a n dt h ea j a xt e c h n o l o g yi sn o ts u p p o r t e da l s o t h eb r o w s e rc o u l d n tf u l l yu s ev a r i o u s a p p l i c a t i o n sw h i c ha r ep r o v i d e db yt h ei n t e r n e t t h ek e yp o i n tt os u p p o r tt h o s e t e c h n o l o g i e si st h a tt h eb r o w s e r s h o u l di m p l e m e n td o mf i r s t d o mi ss h o r tf o rd o c u m e n to b j e c 【m o d e l i ti sas p e c i f i c a t i o nw h i c hw a s d i s t r i b u t e db yw 3 c o r g a n i z a t i o no no c t1 武,1 9 9 8 t h ep u r p o s eo f t h es p e c i f i c a t i o ni st o b u i l dap l a t f o r mn e u t r a la n dl a n g u a g en e u t r a ls t a n d a r di n t e r f a c e , w h i c ha l l o w st h e p r o g r a ma n dt h es c r i p tt oa c c e s sa n dm a n i p u l a t et h ec o n t e n t s ,s t r u c t u r e sa n ds t y l eo f t h e d o c u m e n t t h ed o c u m e n tm e n t i o n e dh e r em a i n l yr e f e r st ox m la n dh t m l f i l e s , o t h e r d o c u m e n tt y p e sw h i c hi n h e r i tf r o mt h et w od o c u m e n t sa r ei n c l u d e da l s o ,f o ri n s t a n c e , x h t m lf i l e s d o mh a sa l r e a d yb e e nas t a n d a r dm o d u l ei nt h ed e s k t o pb r o w s e r s ,b u tt h e r ea r e l i t t l ee m b e d d e db r o w s e r st h a ts u p p o r td o m t h i st h e s i ss t u d i e dw h a tt h ed o mi sa n d h o wt oi m p l e m e n tt h ed o mi ne m b e d d e db r o w s e r t h em a i nt a r g e t so f t h es t u d ya r e : i a n a l y z i n gt h es t r u c t u r ea n dt h ef e a t u r e so fd o m i nd e t a i l ,s t u d y i n gw h a tt h e d o m i s , a n dw h a tr o l ei ta c t si nb r o w s e r s 2 i m p l e m e n t i n ga ne m b e d d e dv e r s i o no fd o m ,w h o s en a n l ei sm i n i d o m ,i na n e m b e d d e db r o w s e r 3 ,r e d u c i n gt h em e m o r yc o n s u m p t i o no fm i n i d o mb yu s i n gm e m o r ys w a pa n d r e s o u r c ep o o lt e c h n o l o l g i e s k e y w o r d :e m b e d d e ds y s t e m ,b r o w s e r , d o m ,d o c u m e n to b j e c tm o d e l ,h t m l i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 虢4 牡嗽卅年r 月动日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,”允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名驻 导师签名:! 婆 日期:2 胡年譬月2 0 日 第一章绪论 1 1 d o m 的概念 第一章绪论 d o m 是d o c u m e n to b j e c tm o d e l 的缩写,即文档对象模型。所谓d o m ,是由 w 3 c 组织在1 9 9 8 年1 0 月1 日发布的一个标准。w 3 c 组织撰写这个标准的目的在 于建立一套平台和语言无关的标准接口,允许程序和脚本读取和操作“文档”的 内容、结构和样式。这里的文档,主要指的是x m l 和h t 札,也包括从这两种文 档中衍生出来的其他文档,如x h t m l 。 d o m 的本质在于定义了一套文档的逻辑结构,以及基于此逻辑结构之上对文档 访问和操作的一套方法。d o m 将文档本身、以及文档中所有的内容,都看作一个 个对象,并将这些对象按其在文档中的位置组织成一棵对象树。通过d o m 所提供 的接口,不仅可以访问文档中任意的节点和内容,还可以对这些节点和内容进行 修改,甚至允许你调整文档的结构。 需要注意的是,d o m 标准仅仅为文档制定了逻辑结构,而没有为其制定物理结 构。因此,d o m 并不要求任何一个d o m 的实现必须按照其规定的逻辑结构来实现。 相反的是,d o m 标准认为,实现者可以按其认定的任何理想方式来实现d o m ,只要 其最终实现的d o m 接口符合标准的要求就可以了。 d o m 的制定参考了微软的i n t e r n e te x p l o r e r 浏览器和网景公司的n e t s c a p e 在处理h t m l 文档方面的经验,以及其他一些公司的产品的经验脚。由于这些产品 都由各式各样的类似于d o m 的名字,为了以示区别,在d o m 标准出现以前的各种 0 m 都统一称为d o m0 ,而1 9 9 8 年1 0 月所发布的d o m 称为d o m1 。此后不久,又 发布了d o m2 标准,在d o m1 的基础上对x m l h t m l 文档及其相关内容的操作进行 了更进一步的规定。目前d o m3 标准也在制定之中,相信在不久的将来即将形成 规范。 由于d o m3 到目前为止尚未完全定稿,也没有形成标准,因此,本文所讨论 的重点将是d o m2 ,下文中所出现的d o m ,若无特殊说明,均指d o m2 规范。 电子科技大学硕士学位论文 1 2 需要使用d o m 的场合 总的说来,凡是和x m l h t m l 文档相关的应用,都可以使用d o m 。主要应用在 下面几个方面。 1 2 1 浏览器 d o m 概念最早出现于浏览器中。因此,d o m 在浏览器中被使用的最为广泛,绝 大多数浏览器都宣称支持d o m 。由于d o m 的出现,使开发者对于文档的结构和内 容有了空前的控制力。在d o m 的帮助下,开发者可以任意的对文档进行删除、添 加和替换等操作,这不仅极大的降低了开发者,包括浏览器开发者和j a v as c r i p t 开发者,操作文档的难度,同时也让交互式页面的出现成为了可能。 1 2 2 j a v a s c r l p t 所谓j a v as c r i p t ,是一种基于对象( o b j e c t ) 和事件驱动( e v e n td r i v e n ) 并具 有安全性能的脚本语言。使用它的目的是与h t m l 超文本标记语言、j a v a 脚本语 言( j a v a 小程序) 一起实现在一个w e b 页面中链接多个对象,与w e b 客户交互作 用,从而可以开发客户端的应用程序等”1 。可见,j a v as c r i p t 的目的就在于和 h t m l 进行交互工作。其实,不仅仅是j a v as c r i p t ,基于浏览器的各种s c r i p t 技术嘲f 如v bs c r i p t 等,都是建立在d o m 的基础之上,j a v as c r i p t 只是这 些s c r i p t 中比较成功的代表性语言。 在早期的d o m0 时期,由于各浏览器之间的0 m 接口并不相同,因此完成同一 个任务的s c r i p t 脚本,需要为各个浏览器开发不同的版本以保证在各个平台都 能正常运行。在d o m 标准出现以后,各主流浏览器厂商均先后对其进行了支持, 并实现了d o m 的j a v as c r i p t 绑定。这对网页开发者来说无疑是一个福音,因为 d o m 的平台无关性可以保证基于其上开发的程序的兼容性,不需要针对不同的平 台开发不同的脚本,减低了开发者在保证平台兼容性方面的负担。 1 2 3 网页编辑器 网页编辑器,如f r o n t p a g e 、d r e a m w e a v e r 等产品,无疑是d o m 运用的最佳场 2 第一章绪论 合。页面编辑的过程,实质上是不断的在文档中进行插入、删除、修改等工作, 这正是d o m 最擅长的工作。不仅仅是网页编辑器,还有很多其他附带编辑功能的 应用,如支持h t m l 的邮件收发工具等,都是d o m 运用的最佳场合。在d o m 的帮助 下,应用只需要去操作一棵节点树就可以完成功能,而不需要去了解h t m l 繁琐的 语法规则。d o m 规范的制定过程,也有相当数量的网页编辑器厂商参与其中嘲。 1 2 4 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 的缩写。扩展标记语言) ( m l 是一种简单 的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方 式建立。由于x m l 本身具有平台无关、数据结构化等特性,目前已被广泛的用作 跨平台数据交换的标准格式“1 。 可以这么说,d o m 为x m l 文档的操作提供了标准的接口和方法。因此,几乎所 有x m l 文档解析器都提供了将x m k 文件转换为d o m 的接口。所以,凡是有x m l 文 件需要处理的应用中,几乎都需要使用到d 渊。 1 3 为什么需要实现d o m 为什么需要实现d o m ? 由前文中的描述可知,d o m 是w 3 c 组织所制订的规范。 目前,几个主要的浏览器产品均宣称支持d o m ,甚至有厂商宣称支持尚未完全定 稿的d o m 3 5 1 。正是由于业界主要产品均已经实现对d o m 的支持,为这些产品开发 的、数量庞大的应用也是建立在对d o m 的应用之上。由此可见,一个浏览器产品 实现对d o m 的支持,其意义是相当重大的,主要体现在以下这几个方面: 1 3 1 提高产品的兼容性 正如前文所述,d o m 是w 3 c 所制定的x m l h t m l 文档操作的规范,是浏览器及 其相关工具的业界标准。绝大多数浏览器都支持d o m ,正因为如此,有相当数量 的应用都是建立在d o m 的基础之上。这些应用包括数量庞大的w e b 应用,如因特 网上数以千万计的各色网站,这些网站或多或少的都需要使用d o m 技术。如果一 个浏览器不支持d o m ,那么对于这些网站就必然难以进行正常的访问。因此,要 提高浏览器产品的兼容性,就必须实现对d o m 的支持,否则一个仅能正常访问少 3 电子科技大学硕士学位论文 数网站的浏览器,是无法获得用户的认同的。 1 3 2 提供网页交互能力 i n t e r n e t 的发展,一方面从早期的静态文本到静态图像,从静态图像到动态 图像,随后又加入了声音、影像、三维动画等等。另一方面,用户已不满足于只 是坐在那里被动地浏览,他们希望w e b 页面中能够提供更多的交互性,以便他们 也可以参与其中嘲。d o m 的出现,从某种程度上讲,是为了满足了w e b 页面的作者 和用户方的这种要求。d o m 是用户控制( 通过j a v a s c r i p t 或其它s c r i p t 语言) w e b 页面内容的唯一途径,正是由于它的出现,直接促进了忱8 开发的大发展, 它们为w e b 内容开发者提供了一种灵活简便的w e b 页面设计途径,也为用户带来 了全新的浏览体验。可以想象一个浏览器产品如果不能提供页面交互能力,这样 一个产品必将是索然无味的。 1 3 3 支持w e b 2 0 ,支持a j a x i n t e r n e t 的发展,已从早期的w e b l 0 ,发展到今日的w e b 2 0 。所谓w e b l 0 , 简单的说就是用户只是接收信息,即便网页作者能够提供一些交互功能,也只是 局限于网页和浏览者之间的一些简单交互,网页始终是由一小部分作者来提供的 ( 相对于浏览者而言) 。而w e b 2 0 的出现,则彻底改变了这一局面,它使每一个 网页浏览者都成为可能的信息提供者,使所有的人都参与到i n t e r n e t 的内容建设 之中。与w e b l 0 相比,w e b 2 0 的不同之处在于: 1 从知识生产的角度看,w e b l 0 的任务,是将以前没有放在网上的人类知 识,通过商业的力量,放到网上去;而w e b 2 0 的任务是,将这些知识,通过每个 用户的浏览求知的力量,协作工作,把知识有机的组织起来,在这个过程中继续 将知识深化,并产生新的思想火花【6 】。 2 从内容产生者角度看,w e b l 0 是商业公司为主体把内容往网上搬;而 w e b 2 0 则是以用户为主,以简便随意方式,通过b l o g p o d c a s t i n g 方式把新内容 往网上搬叫。 我们看到,用户在互联网上的作用越来越大,他们贡献内容,传播内容,并 且乐于参与其中。b l o g ,w i k i ,f l i k e r 等w e b 2 0 应用的火热程度足以证明一点。 显然,一款无法支持w e b 2 0 的浏览器是无法获得用户的认同的。那么,支持w e b 2 0 4 第一章绪论 究竟需要什么技术呢? 提到w e b 2 0 ,就不得不提到a j a x 。尽管w e b 2 0 并不仅仅建立在a j a x 技术之 上的,但是a j a x 却是其中相当关键和重要的一种。准确的说,a j a x 并非是一种 新技术,而是h t m l ,j a v a s c r i p t ,h t t p r e q u e s t 和d o m 的混合应用。应用通过 h t t p r e q u e s t 取回所需的数据,再通过j a v a s c r i p t 来操作d o m 完成对h t m l 数据 的修改。应用a j a x 可以极大的减少浏览器和服务器的通信量,加快浏览器对用户 操作的响应时间”。 可见,d o m 技术是a j a x 技术的关键组成部分之一。因此,需要支持w e b 2 0 就不得不支持a j a x ,支持a j a x 就必须支持d o m 。 1 4 嵌入式浏览器与d o m 1 4 1 嵌入式浏览器 嵌入式浏览器,可以简单的定义为运行于嵌入式系统上的浏览器软件。从功 能上讲,它必须支持h t t p 或w a p 等传输协议,以完成资源的获取:必须支持h t 帆、 x m l 或w m l 等标记语言的解析和显示,以完成基本的网页浏览功能;可以选择性 的支持c s s 、j a v a s c r i p t 、s s l 以及f l a s h 和各种m e d i a 等其它技术以满足更高层 次的功能。 从软件开发的角度来讲,嵌入式浏览器必须适应于嵌入式系统的各种特殊要 求。这些特殊要求包括: 1 各种硬件资源都比较受限,尤其是处理器和存储器资源。与普通的微型机 动辄百兆、千兆的内存相比,嵌入式系统中的存储器资源通常在几兆到几十兆之 间,非常有限。 2 外设能力不足。受体积、成本以及其它各种因素的限制,嵌入式系统上外 设的能力也受到影响,或者根本就没有某些外设。例如,在嵌入式系统上通常不 会有全尺寸的键盘,输入困难;一般不会有类似于鼠标的指点设备;屏幕尺寸较 小,尤其是移动终端一类设备,其屏幕解析度最大不超过2 4 0 ) ( 3 2 0 ,通常在1 2 0 x1 6 0 左右,并且对颜色的表现能力不足,有些屏幕仅支持6 5 0 0 0 色,某些低端 设备甚至只能支持到4 0 9 6 色;通信能力有限,绝大多数只具有窄带通信能力。 3 软平台支持能力差。嵌入式系统中一般不会装备l i n u x 或w i n d o w s 那样功 5 电子科技大学硕士学位论文 能完备的操作系统,而是以更符合环境和硬件要求的嵌入式实时操作系统为主, 例如n u c l e u s 、t h r e a d x 、v x w o r k s 等。这些操作系统中,除运行系统的必备功能 外,一般提供其它功能,这要求嵌入式浏览器不得不自行实现某些功能。 4 平台多样化。嵌入式系统总,每一个部件,无论是c p u 、r a m 、显示屏, 还是o s 、g u i ,都种类繁多嵌入式浏览器的设计必须考虑到这种特性,使之具 有相当的可移植性,以保证在平台之间快速移植。 由于嵌入式系统存在以上诸多限制,在设计和实现时,就必须考虑这些因素 所带来的影响,而不能完全照搬桌面浏览器的设计。因此,我认为嵌入式浏览器 必须将以下几点作为设计原则,这些原则包括: 1 各种算法必须高效简洁,必要时可以牺牲某些功能来达到这个目的。 2 高效率的内存管理,必须合理利用系统珍贵的r a m 资源。 3 布局算法必须适应于各种尺寸的屏幕,尤其需要重点设计适宜于小屏幕显 示的布局算法 4 良好的人机界面,尽量减少使用者操作键盘的次数 5 必须考虑窄带通信对用户体验的影响 6 高可移植性 7 代码尺寸小 1 4 2 嵌入式浏览器中的d o m d o m 在桌面浏览器中已经是必须实现的核心模块,然而在嵌入式浏览器中,支 持d o m 的却还不多。这一方面是因为用户对嵌入式浏览器期望不高,长期以来仅 仅满足于能够“看到”网页,不奢求太多的交互性;另一方面是由于d o m 的面向 对象特征,使得实现d o m 必然会消耗大量的r a m ,这就对硬件提出了更高的要求, 也使整个产品的成本上升。然而,随着w e b 2 0 的流行,这种情况正在逐步改变。 用户越来越不满足予只是“看”网页,他们希望随时随地都能参与其中,在b o g 上写日记,发布手机拍摄的照片等。这就对嵌入式浏览器提出了更高的要求,使 得浏览器的开发者不得不开始考虑如何在产品中实现d o m 。同时,硬件快速发展、 成本不断下降,也使得这种考虑有成为现实的可能。现在,即便是一个中低端的 手机,也常常配置5 一l o 兆甚至更多的r a m ,因此,实现d o m 有了硬件上的基本 保证。目前已经有相当数量的嵌入式浏览器支持了d o m ,本文也将就如何在一款 嵌入式浏览器上实现d o m 这一问题进行探讨。 6 第一章绪论 1 5 课题背景 该课题来源于北京微讯科银公司的嵌入式浏览器产品u w a p 的开发。u w a p 是该公司自主研发的一款嵌入式浏览器产品,它不仅支持h t m l w m l ,j a v a s c r i p t , w c s s ,s s l ,c o o k i e 以及各种常见的媒体格式,还具有代码体积小,资源消耗少 等特性。该产品已经成功移植到多款手机上,获得了较好的评价。 为提高该产品的竞争力,进步占据手机浏览器市场,u w a p 正在进行新版本 的开放,包括对内核多个重要模块的重构以及对d o m 的支持。在该项目中,我主 要负责对d o m 实现的设计以及l a y o u t 模块的设计和实现。 本文将分为五个章节: 第一章是绪论,探讨实现d 佣的必要性: 第二章对d o m 模型进行重点分析,研究d o m 的层次、结构和特点: 第三章对d o m 在嵌入式浏览器上的实现进行讨论,详细分析了一个嵌入式d o m 1 n i n i d o m 的实现和技术特色。 第四章中针对d o m 接口数量众多,应该如何通过测试来保证m i n i d o m 代码质 量进行了研究。 最后一章对全文进行了总结,并对m i n i d o m 将来的发展进行了展望。 7 电子科技大学硕士学位论文 2 1 d o m 的现状 第二章文档对象模型d o m 分析 由w 3 c 组织发行的d o m 规范分为三个级别,分别称为d o m1 ,d o m2 ,d o m3 。 除此之外,还有所谓的d o m0 ,下面将对上述各个级别做一些简单的介绍。 2 1 1 d o m0 w 3 c 组织的所发表的d o m 标准规范中,并没有d o m0 这一级别。这里所谓的 d o m0 是指在d o m 规范发布之前,各个厂商的产品中各种类似d o m 的对象模型的 总称。这些产品主要指n e t s c a p en a v i g a t o rv e r s i o n3 0 和m i c r o s o f ti n t e r n e t e x p l o r e rv e r s i o n3 0 。现在所谓的d o m 规范,正是在这两个浏览器产品对文档 对象的经验基础之上建立起来的”。 由于这些产品的0 m 之间并不互相兼容,并且在正式的d o m 规范发布之后,i e 和f i r e f o x ( n e t s c a p en a v i g a t o r 的后继产品) 及其他主流浏览器产品均先后宣 布支持标准d o m ,因此,这些厂商各自开发的0 m 现在已少有人使用。 2 1 2 d o m1 d o ml 是文档对象模型d o m 的第一个级别,这个级别包括两个部分,分别称为 d o l lc o r e 和d o mh t m l 。d o mc o r e 是整个文档对象模型的核心,所有其他部分都 是基于d o mc o r e 建立。d o mh t m l 即是在d o mc o r e 基础上建立起来的特定于h t m l 文档的一个应用嗍。简单来说,d o mc o r e 提供了文档操作的基本接口,通过它即可 完成对文档,包括h t m l 和x m l 的任何操作;而d o mh t m l 贝类似于它的一个派生 类,除了拥有c o r e 具有的基本功能外,还另外实现了很多更贴近h t m l 文档的专 用接口,使用它们可以更方便的操作h t m l 文档。 大多数的浏览器类产品均宣称支持d o ml 。 8 第二章文档对象模型d o m 分析 2 1 3 d o m2 在对d o m1 的各部分进行了少量修订,并增添了d o ms t y l e ,d o me v e n t ,d o m v i e w ,d o mt r a v e r s a l 以及d o mr a n g e 等五部分之后便形成了d o m2 。这些新增加 的部分分别在文档的样式、事件、视图、遍历和范围等方面作出了规定。可以这 么说,d o m1 的主要任务是实现了对文档本身的操作,而d 渊2 则对文档生命周 期中其他相关部分作出了更加细致的约定。 几种主要的浏览器都宣称完全支持d 筛2 ,包括i e 、f i r e f o x 、o p e r a 、s a f a r i 等。不过,这些浏览器再不同程度上都存在个别接口的实现和规范不致或不完 全一致的情况。 2 1 4 d o m3 d o m3 到目前为止尚在制定的过程中,目前已经有草案的部分包括d o ml s 、 d o mv a l 和d o mx p a t h 。这些已经形成的草案的内容分别是; d o ml s ( d o i ll o a da n ds a v e ) 定义了一个平台无关、语言无关的接口,这个 接口允许程序或脚本动态的装载一个x m l 文档的内容到d o m 中,以及将一个d o m 文档序列化( s e r i a l i z e ) 到) 【m l 文件中。 d o mv a l ( d o mv a l i d a t i o n ) 所提供的接口让程序可以动态的更新文档,并保 证文档能够保持有效,或变为有效“4 。 d o mx p a t h 则提供了一套使用x p a t h 访问d o m 树的接口“”。 鉴于这些规范目前尚未最终定稿,绝大多数浏览器尚未对其进行支持。也有 一些浏览器宣称对已经成文的部分内容进行了支持”。 2 2 d o m2 的分析 文档对象模型从第一级别到第三级别已制定的内容,总共涉及到了十个方面 的内容。由于涉及的内容较多,本文不会对其所有的内容进行分析。考虑到d o m 标准的制定情况,以及d o m 各级别的支持程度,本文的分析对象是d o m2 。对于 尚未成为标准的d o m 第三级别的l s 、v a l 和x p a t h 暂不进行讨论。另外,由于该 课题来源于一个嵌入式浏览器项目,其浏览对象为h t m l 文档,因此对于d o m 中特 9 电子科技大学硕士学位论文 定于x m l 的部分内容未予实现。它仅实现了d o m 中最为基础的c o r e 、h t m l 和e v e n t , 并计划在下一版本中实现其他可选部分。因此本文分析的主要方向也将集中在 d o mc o r e ,d o mh t m l 和d o me v e n t 三个部分上,对于可选部分的d o ms t y l e ,d o m v i e w ,d o mt r a v e r s a l 和d o mr a n g e 也将做一定的介绍。 2 2 1 基本概念 顾名思义,d o m 是将文档按对象方式进行组织的一种方式。它也是操作有效 h t m l 文档和格式良好的x m l 文档的应用编程接口( a p i ) “1 。d o m 定义了文档的逻 辑结构,以及在这种逻辑结构下操作文档的各种接口。d o m 的目标是建立一套跨 平台跨语言的标准接口,通过这些标准接口,来访问和操作文档。h t m l 或x m l 文 档中的任意个部分,包括文本、元素以及元素的属性,都可以通过d o m 进行访 问、修改、添加和删除。 2 2 1 1 , 逻辑结构 那么,d o m 将文档按什么样的逻辑方式进行组织的呢? 首先,d o m 将h t m l 或x m l 文档中的任何内容,按其逻辑关系,划分为一个个 对象。任何在文档中出现的内容,包括元素、元素的属性以及包含在元素中文本 信息等都被看作对象。d o m 将这些对象按其在文档中相互之间的内在逻辑关系( 这 些逻辑关系由h t m l 或x m l 文档定义) 组织成一个树型结构。以h t m l 文档为例, 请考虑下面这段简单的h t m l 代码: s h a d yg r o v e a e o i a n ( t d o v e rt h er i v e gc h a d i e d o d a n 这是一个拥有两行两列的简单表格,如果按照d o m 的方式来组织这个表格, 那么,它的表现形式如图2 一l 所示。 1 0 第二章文档对象模型d o m 分析 图2 - 1 表格的文档对象模型 在上图中我们可以很清楚的看到,这个h t m l 文档片断被组织成一棵树状的结 构,每一个h t m l 元素,都是树上的一个独立节点;文本内容则作为升节点出现在 树的最末端。这些h t m l 元素在这棵d o m 树上的表述在d o m 规范中被称为e l e m e n t , 而文本内容则被称为t e x t 。 需要注意的是,d o m 规范中反复强调这样一个概念,这种树状的结构仅仅只是 d o m 的逻辑结构,d o m 并没有规定任何一个d o m 实现必须要按照这样的结构来设计 真实的数据结构嘲。也就是说,一个声明遵循d o m 规范的d o m 实现完全可以组织 一套不同的物理结构,只要它的逻辑结构和d 伽一致即可。d o m 规范所关注的重 点是逻辑一致,任何一个d o m 实现来创建同一个文档的d o m 表述,都应该产生一 致的逻辑结构而不一定是一致的数据结构。 2 2 1 2 d o m 对象 文档对象模型( d o m ) 除规定了文档的逻辑结构之外,还定义了模型的对象、 以及这些对象的行为。d o m 树上任何内容,包括节点、节点的各种属性( a t t r i b u t e ) 以及节点的内容,均是以对象的形式存在的。d o m 对象不仅包含各种相关的属性, 还包含使用这些属性所必需的各种方法。 图2 2 给出了d o m 树的一个简单例子,其中包含了d o m 中两种基本的对象类 型。事实上除e l e m e n t 、t e x t 之外, 仅d o mc o r e 中定义的各种类型就有近二十 种。其中有类似于e l e m e n t 这样的文档树的组成成员,也包括一些辅助性质的对 象类型。其中有几种非常重要的、不可或缺的类型有五种,这些重要的对象类型 包括: - n o d e :整个d o m 的基类型,d o m 树上的所有节点都是由它派生而得 电子科技大学硕士学位论文 _ e l e m e n t :代表了h t m l 或x m l 文档的一个元素( e l e m e n t ) 一a t t r :它代表元素的个属性 t e x t :文本节点类型,用于表示文本内容 d o c u m e n t = 代表整个文档( h t m l 或x i l l ) ,它应该是整个文档树的根 在实现了这五种类型后,就可以组成一棵完整的d o m 树,并可以实现对d o m 树的大部分操作,因此,本章将主要围绕这五种类型进行介绍。 2 2 1 3 d o m 接口的定义 作为w 3 c 组织制定的规范,d o m 的目标之一是提供一套可以被大量的环境和应 用使用的标准编程接口。因此,d o m 需要被设计成为能被任何种编程语言所使 用的接口。所以,在对d 侧进行定义肘,不能使用特定于某一种或几种语言特殊 表达,而必须提供一种独立于具体语言的表达方式。为了提供一套精确的、语言 无关d o m 接口规范,w 3 c 组织选用了0 m gi d l ( o b j e c tm a n a g e m e n tg r o u pi n t e r f a c e d e f i n i t i o nl a n g u a g e ) 作为接口定义语言来描述d o m 的接口嘲。 2 ,2 2 d o mc o r e 正如其名,d 渊c o r e 是整个d o m 体系的核心。d o m 中其他任何部分的实现都 必须依赖于,c o r e 。d o mc o r e 中又包含多种节点类型。这些节点类型都是以接口 ( i n t e r f a c e ) 的形式出现,而不是类。这样做有两方面的原因,一方面是照顾到 类似于c 语言这样的过程语言,这类过程式语言都没有直接提供实现对象的机制; 另一方面是d o m 的设计思路在于强调接口的一致性,而不是实现的致性。如果 将每个节点类型都定义成类或对象,那么实际上就限制了具体的实现( 尽管多数 实现都是采用了对象方式) 。在后文中,为了方便描述,我们仍将采用类、派生、 继承等术语来描述这些i n t e r f a c e 之间的关系,尽管这些术语在某些情况下不够 精确。 d o mc o r e 定义了多种接口,这些接口包括: 一d o m e x c e p t i o n e x c e p t i o n c o d e d 伽i m p l e m e n t a t i o n d o c u m e n t f r a g m e n t d o c u m e n t 1 2 第二章文档对象模型d o m 分析 n o d e n o d e l i s t n a m e d n o d e m a p c h a r a c t e r d a t a a t t r e l e m e n t t e x t c o m m e n t c d a t a s e c t i o n d o c u m e n t t y p e n o t a t i o n _ e n t i t y e n t i t y r e f e r e n c e p r o c e s s i n g i n s t r u c t i o n 这十九种接口中,一部分将作为d o m 的节点出现在d o m 树中,而另外一部分 仅提供一些辅助功能。其中最后六种接口仅用于x m l 文档中,将不作深入探讨, 仅对其余十三种作介绍。 2 2 2 i 结构模型 前文中提到,d o m 的逻辑结构是一种树状结构。这种树状结构的节点都是由 n o d e 的派生类型组成的。其中,某些类型的节点可以有子节点( c h i l dn o d e ) , 而另外一些则不能有子节点,作为叶节点出现。 d o c u m e n t t y p e ,p r o c e s s i n g i n s t r u c t i o n ,c o m m e n t ,t e x t ,c d a t a s e c t i o n , n o t a t i o n 都是叶子节点,它们都不能有孩子节点。其他作为d o m 树节点的类型都 可以有孩子。但是,哪些类型的节点可以作为它的孩子节点、可以拥有多少个孩 子,都是有限制的,这些限制在后文中提到。 2 2 2 2 内存管理 规范中的类型定义都采用了i n t e r f a c e 而不是c l a s s ,这就意味着一个d o m 实现仅仅需要将其接口暴露给使用者而不是实现本身。这就给予了实现很大的灵 活性可以完全根据需要自定义认为合理的任何类、成员、方法来实现这些 i n t e r f a c e ,甚至可以不按照d o m 所定义的逻辑上的类层次来实现。同时,它也意 1 3 电子科技大学硕士学位论文 味着通常意义上的构造器( j a v a 或c + + ) 不能被用来创建对象,因为使用构造器 也就意味着绑定了具体的类,就不成其为i n t e r f a c e 了;另外,有些语言中也没 有构造器这一概念。不能使用构造器,这就给创建一个新的对象造成了一定的困 难。d o m 使用工厂方法( f a c t o r ym e t h o d ) 来解决这一问题。如图2 2 所示: 一 x i : ,lhi = = :2:,: : 、: i :! 、:; :,: :,: : : l x x m m 1 il i 加删i ii l + a e 趾e x oi :z,:;: :1 : : : ! :,j :;: j d o c i m i 图2 2 工j 方法 工厂方法通过定义一个用于创建对象的接口,让子类决定实例化哪个类“”。 d o m 中,通过在d o c u m e n t 中定义一系列名为c r e a t e x0 的方法来创建x _ d o m 中定义的节点类型。这一方法将在d o c u m e n t 的实现类d o c i m p l 中被实现,去创建 一个x i m p l 对象,而x i m p l 则是接口x 的实现类。显然,在某一个具体的实现中, 不论是构造器或者别的什么构造方法都是可以被安全的使用的。 除构建问题外,d o m 还必须面对对象的释放问题;对于某些语言来说,语言本 身自带内存管理机制,用户只需要创建对象,不需要担心对象的释放问题,系统 会自行完成释放的任务,比如j a v a 。而另外一些语言,则需要用户手工的明确指 定哪些对象被释放,否则该对象就会一直占据内存,比如c + + 。为了在各种类型 的语言中保持一致的a p i ,d o m 没有定义对象释放相关的a p i ,因此,具体的d o m 实现需要自行去管理不再被使用的对象的释放。 2 2 2 3 n o d e 接口n o d e 是整个文档对象模型中最基本的数据类型。它代表了d o m 树中一个 单个节点。d o m 树上所有的节点对象都是继承n o d e 而得,具有n o d e 同样的属性。 由i d l 定义的n o d e 接口的各种属性如下: i n t e r f a c en o d e r e a d o n l ya t t r i b u t ed o m s t r i n g n o d e n a m e ; a t t r i b u t ed o m s t r i n gn o d e v a l u e ; 1 4 第二章文档对象模型d o m 分析 r e a d o n l ya t t r i b u t eu n s i g n e ds h o r tn o d e t y p e ; r e a d o n l ya t t r i b u t en o d ep a r e n t n o d e ; r e a d o n l ya t t r i

温馨提示

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

评论

0/150

提交评论