已阅读5页,还剩66页未读, 继续免费阅读
(计算机应用技术专业论文)基于xml模式的xml文档自动生成工具的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学硕士学位论文 摘要 x m l 已成为i n t e r n e t i n t r a n e t 上信息表示、存储和交换的标准格式。x m l 实例文档用来记录具体的应用信息,其有效性通常是用w 3 cx m ls c h e m a 来定 义。由于生成的x m l 实例文档需要符合相应x m l 模式的各种具体要求,所以 生成正确的实例文档并不容易,需要有工具的支持。本文提出了一种基于f o r m 表单的方法,该方法能根据x s d 模式文档自动生成f o r m 表单,待用户在f o r m 表单中输入数据后,自动生成有效的x m l 实例文档。 本文研究了w 3 cx m ls c h e m a 组件定义域及x m l 文档自动生成工具,主 要包括w 3 cx m ls c h e m a 组件定义域的研究,x s d 组件映射规则,从x s d 模 式生成f o r m 表单的算法以及从实例表单生成x m l 实例文档的算法等。 本文的主要工作如下: 分析比较了当前存在的各种x m l 实例文档生成方式的优缺点; 详细分析w 3 cx m ls c h e m a ,确定了本文所研究的w 3 cx m ls c h e m a 的“定 义域”,并确立了x m ls c h e m a 组件到w i n d o w s 控件的映射规则。 研究了基于i b mi n f o s e tm o d e l 类库,提出了从x s d 模式文档生成f o r m 表 单的算法; 研究了在用户输入数据后,如何根据相应模式中的语法和语义约束,从实 例表单生成有效的x m l 实例文档的算法: 基于上述映射规则和算法,设计并实现了一种基于e c l i p s e 集成开发环境的 可视化交互工具f o r m x 。 关键词:x m l 模式,x m l 实例文档,映射与转换,i n f o s e tm o d e l ,f o r m 表单 a b s t r a c t 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 ) h a sb e c o m et h em o s ti m p o r t a n ts t a n d a r d f o rr e p r e s e n t i n g 、s t o r i n ga n de x c h a n g i n gd a t ao ni n t e m e t i n t r a n e t x m li n s t a n c e d o c u m e n ti su s e dt or e c o r dt h e s p e c i f i ci n f o r m a t i o nf o ra p p l i c a t i o n ;i t sv a l i d i t yi s u s u a l l yv a l i d a t e db yw 3cx m ls c h e m ad e f i n i t i o n ( x s d ) s i n c et h eg e n e r a t e dx m l i n s t a n c ed o c u m e n t sn e e dt ob ec o n s i s t e n tw i t ht h es p e c i f i cr e q u i r e m e n t so ft h ex m l s c h e m a ,s oi ti sn o te a s yt og e n e r a t et h ev a l i di n s t a n c ed o c u m e n t i ti sn e e dt ob e s u p p o r t e db yt o o l s f o rt h i sp h e n o m e n o na n dt h en e e d ,af o r m - b a s e dm e t h o di s p r o p o s e di nt h i st h e s i s a c c o r d i n gt ot h i sm e t h o d ,u s e r sc a ni n p u td a t ai n t ot h ef o r m w h i c hi sa u t o m a t i c a l l yg e n e r a t e da c c o r d i n gt ox s dd o c u m e n t ,a n dt h e ng e tv a l i d x m li n s t a n c ed o c u m e n t s t h i st h e s i s i n v e s t i g a t e s s o m ei s s u e sr e l a t e dt ot h ew 3 cx m ls c h e m a c o m p o n e n t s “d o m a i n ”a n dt o o l so fx m la u t o m a t i c a l l yg e n e r a t e d ,w h i c hi n c l u d e t h e d o m a i n r e s e a r c h ,t h er u l e so fx s dc o m p o n e n t sm a p p i n g ,t h ea l g o r i t h mo f t r a n s f o r m a t i o nf r o mx s dd o c u m e n tt of o r ma n dt h ea l g o r i t h mo ft r a n s f o r m a t i o nf r o m f o r mt ox m li n s t a n c ed o c u m e n tt h em a i nc o n t e n to ft h i sw o r kc a nb es u m m a r i z e d a sf o l l o w s : a n a l y z i n ga n dc o m p a r i n gt h ea d v a n t a g ea n dd i s a d v a n t a g eo ft h e e x i s t i n g m e t h o d so fx m ld o c u m e n tg e n e r a t i o n ; e s t a b l i s h i n gw 3 cx m ls c h e m ac o m p o n e n t d o m a i n f o rt h i st h e s i sa n dt h e m a p p i n gr u l e sf r o mx m ls c h e m ac o m p o n e n t st ot h ew i n d o w sc o m p o n e n t s r e s e a r c h i n gi b m i n f o s e tm o d e lc l a s sl i b r a r ya n dp r o p o s i n gt h ea l g o r i t h mf r o m t h ee x i s t i n gx s df i l et of o r m r e s e a r c h i n gx m li n s t a n c ed o c u m e n tg e n e r a t e da l g o r i t h mf r o mt h ef o r mw i t h c o n t e n ta c c o r d i n gt ot h es y n t a xa n ds e m a n t i cc o n s t r a i n t so ft h es c h e m aa f t e ru s e r i n p u t i n gd a t a b a s e do nt h em a p p i n gr u l ea n da l g o r i t h m s ,趾i n t e r a c t i v ea n dv i s u a lt 0 0 1 f o r m x i l 武汉理工大学硕士学位论文 w h i c hi sb a s e do nt h ee c l i p s ei n t e g r a t e dd e v e l o p m e n te n v i r o n m e n ti sd e s i g n e da n d i m p l e m e n t e d k e y w o r d s :x m ls c h e m a , x m li n s t a n c ed o c u m e n t ,m a p p i n ga n dt r a n s f o r m i n g , i n f o s e tm o d e l ,f o r ml i s t i i i 独创性声明 本人声明,所呈交的论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得武汉理工大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究 所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 签名:垂盘饵一一日期:一蝉j l 迎 学位论文使用授权书 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即:学校 有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被 查阅和借阅。本人授权武汉理工大学可以将本学位论文的全部内容编入有关 数据库进行检索,可以采用影印、缩印或其他复制手段保存或汇编本学位论 文。同时授权经武汉理工大学认可的国家有关机构或论文数据库使用或收录 本学位论文,并向社会公众提供信息服务。 ( 保密的论文在解密后应遵守此规定) 一黼慢着蛔搠:沛嘲邮、 i 武汉理工大学硕士学位论文 1 1 研究背景 第1 章引言 x m l i l 】自发布以来,作为一项突破性技术,正在迅速成为信息表示、存储 和交换的标准格式,在w 3 c 正式推出它的短短几年里,以惊人的速度发展成为 计算机行业中最热门的技术之一。x m l 是一种自描述的可扩展标记语言,具有 简洁、灵活和结构化的特点,它不仅能描述数据本身,而且能够描述其结构, x m l 技术的这一特性使其正迅速成为信息表示和信息交换的重要格式。在语义 网【2 1 、电子商务【3 1 、内容管理1 4 1 、i n t e m e t i n t r a n e t 等最重要的数据表示和交换领 域有着十分广泛的应用。这些领域的大多应用都集中在x m l 实例文档上,尤其 是有效的x m l 实例文档上。目前,基于w 3 cx m ls c h e m a t 5 】【6 】【7 1 的文档模式( x s d ) 是验证x m l 文档有效性的主要形式。很多领域、企业都迫切需要一种快捷而有 效的方式根据x s d 模式文档得到有效的x m l 实例文档。 目前,已有不少方式可以根据x s d 模式文档得到有效的x m l 实例文档, 然而这些方式均有自己的局限性和缺点。 文本编辑器是一种编辑x m l 文档的常见方式。它提供了一个编辑x m l 文 档的平台,然而,用户需要根据x s d 模式规定的结构来一行一行的书写x m l 文档。x m l 文档本身就是种语法比较复杂的标记语言,在x m l 文本编辑器 上进行书写效率非常低又容易出错,并且这样的文本编辑器只适用于掌握x m l 语法的专业人员。 一些专业化软件如x m l s p y t 引,它能根据x s d 模式文档生成空的x m l 实例文 档,用户要想得到带有数据的x m l 实例文档,需在表格中输入数据。但这些软 件的数据输入界面不友好、不直观;并且它是一种商业化的软件,价格昂贵; 同时这一工具很庞大,无法方便地嵌入到应用系统中去,对于特定应用系统的 用户来说,使用起来不够方便。 在实际的应用系统中,不少开发人员针对特定的应用系统开发“专用”的 武汉理工大学硕士学位论文 数据载入工具,根据特定的x m l 模式文档人工设计数据输入表单,这种数据输 入表单是根据特定的x m l 模式文档由人工专门定制设计的,不具有通用性,当 x m l 模式文档改变时,开发人员必须重新设计数据输入表单。 本课题研究的目的在于开发出一种界面友好的工具来解决上述各种方式中 的不足,提高x m l 应用的效率。用户不需掌握编码及x m l 的任何语法,只需 在f o r m 表单中输入数据,提交后就可以得到一份符合x s d 的x m l 实例文档。 本课题所研究的工具能根据定义域内的x s d 自动地生成f o r m 表单,用户 将数据输入到f o r m 表单并提交后,系统将自动生成符合x s d 的x m l 实例文 档。该工具的特点是:采用用户熟悉的w i n d o w s 窗体,界面友好、通用,它简 化了根据x s d 模式文档书写x m l 实例文档的复杂方式,该工具对于应用x m l 的非专业用户十分有用,他们不需了解x m l 的语法就能方便的得到一份有效的 x m l 实例文档;并且这一工具不像商业化软件那样庞大、昂贵,很容易嵌入到 其它应用系统中,具有广泛的通用性。 1 2 国内外相关研究 x m l 的重要性吸引了学术界、工业界和各行各业用户的广泛关注。在学术 界,来自w w w 、数据库和文档处理等各个领域的学者,都不约而同的研究x m l , 使之成为当前最活跃的研究领域。本课题重点研究x m l 实例文档自动生成工具。 目前,很多企业、厂商都致力于x m l 相关工具的研究与开发。如:a l t o v a 公司开发的x m l s p y ,它是一种w i n d o w s 环境下特性丰富的图形化x m l 编辑器。 w a t t l es o f t w a r e 公司开发的x m l w r i t e r 引,可以在w i n d o w s 的环境下支持 x m l 、x s l 、d t d 、c s s 、h t m l 及文本格式的文件。 如今,有些w e b 网站提供了用户在线测试x m l 文档的功能,以确保文档 是良构的或是合法的。支持对良构性检查的网站是x m l t o m 的r u w f t l 0 l 你是 良构的吗( a r ey o uw e l l f o r m e d ) ? r u w f 能够接受来自x m l 文档的u r l ,或者 允许用户将x m l 文档粘贴到文本框中。爱丁堡大学的r i c h a r dt o b i n 创建了 r x p t l l 】,提供命令行形式的在线x m l 验证处理程序。它既可验证文档的良构性 又可验证文档的合法性。布朗大学的学者技术组在网上提供了一个在线验证表 单【1 2 】。该表单允许用户检查和验证本地文件、u r l 或粘贴的文档,它既可验证 2 武汉理- t 大学硕士学位论文 文档的良构性又可验证文档的合法性。 也有些厂商开发了x m l 与数据库的转换工具软件。开发x m l s p y 的a l t o v a 公司推出了m a p f o r c e 1 3 】,它是为项目集成而开发的第一个x m l d a t a b a s e f l a t f i l e e d i 映射工具,可以将任何x m l 、数据库、扁平文件和e d i 映射为x m l 、 数据库或扁平文件。用它可以轻易地将x m l 文档映射成其他格式的x m l 文档 或者在x m l 和数据库间相互映射,实现了转换的工具化。另外i b ma l m a d e n r e s e a r c hc e m e r 也设计了自己的转换工具c l i o 【1 4 j ,它是一个半自动化的模式映 射工具,可以在关系型数据和x m l 模式间相互映射,便于数据集成。 很多工具的研究也涉及到了数据输入表单或基于x s d 的x m l 实例文档的 生成,但都存在一定的局限性。如:s c h e m a f o r m s 能够根据x s d 生成w 曲表 单,并能在数据输入时根据x s d 对输入数据进行有效性验证,但它的输出并不 是x m l 实例文档,而是被x s l t 转化后的h t m l 网页。a l t o v a 公司开发的x m l s p y 能根据x s d 生成x m l 实例文档,但也存在着一定的局限性,它首先生成的是 空的x m l 实例文档,在表格中输入数据后才能得到带有数据的舭实例文档; 并且它是一种商业化的软件,价格昂贵;同时它很庞大,无法方便地嵌入到应 用系统中去,对于特定应用系统的用户来说,使用起来不够方便。 以上这些都是x m l 相关工具的研究,但对于x m l 实例文档自动生成工具一 根据x m l 模式文档自动生成一个f o r m 表单,在f o r m 表单中输入数据提交后 自动生成一份符合x m l 模式的x m l 实例文档的工具的研究则更少。 1 3 研究目标及主要工作 1 3 1 本文的研究目标 在大量研究的基础上开发一个实用系统,该系统能根据定义域内的x s d 模 式文档自动生成一个f o r m 表单,在f o r m 表单中输入数据并提交后,系统能自 动生成一份x m l 实例文档,并且该实例文档符合相应的x s d 模式文档。该系 统能方便用户得到x m l 实例文档,只需在f o r m 表单中输入数据,而不需了解 编码及x m l 的语法规范,对普通用户也非常适用。 1 3 2 本文的主要工作 武汉理工大学硕士学位论文 图1 1 描述了本课题的主要工作。图中m 0 层为实例层,m 1 层为模型层, m 2 层为元模型层。 m o 层 m 1 层 m 2 层 图1 1 系统总体框架 ( 1 ) 在m 2 层中,分析研究w 3 cx m ls c h e m a ,确定了本文所研究的w 3 c x m ls c h e m a 的“定义域”。为后面的研究确定了研究范围。 ( 2 ) 在m 1 层中,确立了x m ls c h e m a 组件到w i n d o w s 窗体的映射规则, 并实现了x s d 模式文档树转换到f o r m 表单的算法研究。其算法需保证了x s d 和f o r m 表单之间是一对一映射关系。 ( 3 ) 在m 0 层中,实现了实例表单转换到x m l 实例文档的算法研究,保 证了生成的x m l 实例文档是“有效的”,同时保证了实例表单和儿实例文档 间是一对一映射关系。 ( 4 ) 基于e c l i p s e 平台和x m l s c h e m ai n f o s e tm o d e l 实用系统的实现。实现 x s d 模式文档到x s d 实例文档的自动转换。 1 4 论文组织 4 武汉理工大学硕士学位论文 本文结构如下: 第1 章介绍本文的课题背景,以及论文的主要研究目标和主要工作。 第2 章介绍了x m l 及w 3 cx m ls c h e m a 基础知识,然后介绍了x m l s c h e m ai n f o s e tm o d e l 及e c l i p s e 等相关技术及平台。 第3 章分析研究w 3 cx m ls c h e m a ,确立了本文研究的w 3 cx m ls c h e m a 组件“定义域”。 第4 章确定了x m ls c h e m a 组件到w i n d o w s 窗体的映射规则,并实现了x s d 模式文档树转换到f o r m 表单及实例表单转换到x m l 实例文档的两个关键算法 的研究。 第5 章在上述映射规则及转换算法的基础上,在e c l i p s e 集成开发平台及 x m ls c h e m ai n f o s e tm o d e l 等相关技术下实现了一个界面友好的x m l 文档自动 生成工具叫o n t l x 。 第6 章是本文的工作总结与下一步的工作计划。 5 文中的专业术语及缩写 w x s :w 3 cx m ls c h e m a x s d :x m ls c h e m ad e f i n i t i o n 或x m l 文档模式 i n f o s e tm o d e :x m ls c h e m ai n f o s e tm o d e l d o m :d o c u m e n to b j e c tm o d e l e m f :e c l i p s em o d e l i n gf r a m e w o r k 武汉理工大学硕士学位论文 第2 章x m l 及相关技术 本章首先介绍了x m l 相关知识,对x m l 的解析技术d o m 、s a x 、 i n f o s e tm o d e l 进行了分析与比较,然后介绍了本文将用到的j a v as w i n g 技术和 e c l i p s e 建模框架。 2 1 基本概念 在介绍之前,先介绍文中用到的模型驱动架构( m o d e l i n gd r i v e n a r c h i t e c t u r e ) 1 5 儿1 卅思想,及文中用到的一些基本概念,以便理解和上下文的统一。 2 1 1m d a 元模型框架 m d a 定义了一个元模型层次结构框架,如图2 1 所示:从具体到抽象依次 为m 0 ,m 1 ,m 2 层,根据需要还可以进行更高级别的抽象m 3 层。 图2 1m d a 元模型框架 m o 层包含了具体的对象和数据,它们又是m 1 层元素的实例。m o 层是用户 应用程序开发者的工作平台。x m l 域在m 0 层的表现形式是一个实例文档,即 以扩展名为x m l 的x m l 文档。 m 1 层包含了各种模型,描述m 0 层的实例,它们的结构是m 2 层的实例, 6 武汉理t 大学硕士学位论文 以m 2 层作为建模语言。m 1 模型常常被称为模式,如数据库模式、x m l 模式 等。 m 2 层是元模型层,包含了用于定义和描述m i 层的元素。有一些m 2 层实 例是已经被标准化的元模型,如e r 模型、u m l 模型,关系模型、x m l 模式语言。 m 3 层是元元模型层,包含了用于定义和描述m 2 层的元素。 2 1 2 基本概念 由于x m l 可同时用于表示文档和文档的模式,再加上其应用的广泛性,使 得一些概念在使用时容易造成混淆。为此先定义本文涉及的一些基木概念。其 中x m l 在m d a 中的体现如图2 2 所示: x m l 文档( x m ld o c u m e n t ) :简称文档,泛指符合x m l1 o 的x m l 文档。 x m l 实例文档( x m li n s t a n c ed o c u m e n t ) :简称实例文档,用于记录具体应 用信息的文档。如果实例文档符合某文档模式,则称其对该模式是有效的( v a l i d ) 。 位于图2 1 中的m 0 层。 x m l 文档模式( x m ld o c u m e n ts c h e m a ) :又称x m l 模式( x m ls c h e m a ) ,用 于描述文档的结构( s t r u c t u r e ) 和约束( c o n s t r a i n t ) ,以便验证实例文档的有效性。常 用的模式描述语言有d t d 和w 3 cx m ls c h e m a 。如果基于w 3 cx m ls c h e m a , 则文档模式又称x m ls c h e m ad e f i n i t i o n ( x s d ) 。位于图2 1 中的m 1 层。 模式文档( s c h e m ad o c u m e n t ) :用于记录模式的文档,是模式的载体。在w 3 c x m ls c h e m a 中,一个模式文档就是一个( 扩展名为x s d ) 文件。一个x m l 模式可 能只用一个模式文档来描述,也可以用多个模式文档来描述,此时,x m l 模式 = ( s 1 x s d ,s 2 x s d , - - ) 。 w 3 cx m ls c h e m a :w 3 c 的模式定义语言,提供了定义模式的词汇表;是 “s c h e m af o rs c h e m a s ”,它提供了一个元模型,用于验证( x s d ) 的有效性;简记 为w x s 。位于图2 1 中的m 2 层。 7 武汉理丁大学硕士学位论文 m 0 层 m 1 层 m 2 层 图2 2x m l 在m d a 中的体现 本文研究的x m l 文档模式是基于w 3 cx m ls c h e m a ( w x s ) 的,在文中称为 x s d ;w 3 cx m ls c h e m a 在文中简称为x m ls c h e m a ;模式文档在文中称为x s d 模式文档。 2 2x m l 概述 2 2 1x 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 ) 1 0 标准于19 9 8 年2 月 由w 3 c ( w o r l dw i d ew e bc o n s o r t i u m ) 正式颁布。它是s g m lf 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 ,标准通用标记语言) 的一个受限版本,主要是为 w e b 文档设计的。 x m l 是自描述的、半结构化的和可扩展的标记语言。作为一种标记语言, 它将数据和对数据的描述( 元数据) 结合在一起,因而具有比关系模型更灵活、更 强的描述能力不仅能表示结构化数据,还能表示半结构化数据。x m l 基于 文本,与特定支撑环境无关,具有广泛的通用性【17 1 。x m l 灵活的可扩展机制, 使得各行各业都可定义自己的l 词汇,并形成标准。 2 2 2x m l 的特点 x m l 是一种自描述的可扩展标记语言,具有简洁、灵活和结构化的特点, 武汉理工大学硕士学位论文 它不仅能描述数据本身,而且能够描述其结构。它具有以下特点【i 】: ( 1 ) 易于扩展。x m l 是摒弃了s g m l 中一些复杂性并考虑到适合w e b 特性 的一个子集,可以用来定义其它语言,同时x m l 的标记又是用户定义的,所以 从理论上,其类型的数量可以是无限的: ( 2 ) 结构性强。x m l 的文件结构可以嵌套到任意复杂程度,能表示面向对象 的等级层次: ( 3 ) 交互性好。用户与应用程序进行交互时,利用x m l 可以非常方便地在本 地进行排序、过滤及其它数据操作: ( 4 ) 丰富的语义。可以自行设计一些有意义的标记,便于异构系统间的数据 交换和信息检索: ( 5 ) 基于内容的数据标识。可以被不同应用程序用于不同的目的; ( 6 ) 可格式化。可利用x s l ( e x t e n s i b l es t y l el a n g u a g e ,可扩展样式语言) 指定 如何显示数据。数据和显示是分离的,可以为同一数据指定不同的样式表( 即不 同输出) ; ( 7 ) 易于处理。x m l 文档是层次结构,具有严格的格式定义,便于机器处理; ( 8 ) 与平台无关。x m l 文档无需更改即可被移植到不同的软硬件平台上。 2 2 3x m l 的主要应用 目前,在i n t e m e t 上或企业内部,x m l 正在迅速成为信息表示、交换和存 储的通用形式,被广泛地应用于各种领域。 ( 1 ) 语义网( s e m a n t i cw e b ) - 这是w 3 c 提出x m l 的最初动机。目前的w e b 用h t m l 来记录网站,导致信息检索难以查全和查准。语义网是下一代w e b 的 雏形,x m l 将作为其中信息表示和存储的标准格式。 ( 2 ) 电子商务( e l e c t r o n i cc o m m e r c e ) :在b 2 b 或b 2 c 电子商务中,x m l 作为 “消息流”的标准交换格式。企业数据发布,也大量采用x m l 作为通用格式。 ( 3 ) 内容管理系统( c o n t e n tm a n a g e m e n ts y s t e m ) :这样的系统中,结构化和半 结构化数据并存,x m l 可作为一种“数据库逻辑模型”,用于表示和持久存储多 种信息。 ( 4 ) w 曲服务( w e bs e r v i c e ) t 1 8 j :这是i n t e m e t 上的种革命性应用。w e b 服务 基于几个标准:s o a p ( 简单对象访问协议) 、u d d i ( 通用发现、描述和集成) 、 9 武汉理工大学硕士学位论文 w s d l ( w e b 服务描述语言1 ,这些技术都与x m l 密切相关,x m l 是w e b 服务 的基石。 2 3 解析舭 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 ) 1 1 9 1 ,是w 3 c 已经标准化 了的处理x m l 文档的a p i 。利用d o m ,程序开发人员可以动态的创建文档, 遍历文档结构,添加、修改、删除文档内容,改变文档的显示方式等。通过d o m 接口,应用程序可以在任何时候访问x m l 文档中的任何一部分数据,因此,可 以将这种访问看作是对x m l “随机访问”。 d o m 定义了一个对象层,这个对象可以充分地将x m l 文档描述为一系列 递归列表。d o m 最重要地特性就是必须将整个文档解析并以对象树结构存储在 内存中。这对某些应用程序的影响是很大的,因为这些应用程序必须在大型的 文档或完整的文档处理结束之后才能运行。另外,许多d o m 工具都需要很大的 内存,远远超过了文档的原始尺寸。但d o m 对于那些需要对一篇文档的不同部 分重复、随机访问的应用程序来说非常有效。 2 3 2s a x s a x 又称x m l 简单应用程序接口( s i m p l e a p if o r x m l ) 。它与d o m 不同, s a x 提供的访问模式是一种顺序模式,这是一种快速读写数据的方式。当使用 s a x 解析器对x m l 文档进行解析时,会触发系列时间,并激活相应的事件处 理函数,应用程序通过执行这些事件处理函数实现对文档的访问,因而s a x 接 口也被称为事件驱动接口。 由于事件触发本身是时序性的,因此s a x 解析器提供的是一种顺序访问机 制。对于已经解析的文档,不能再倒回去重复处理。同d o m 解析器相比,s a x 解析器对x m l 文档的处理缺乏一定的灵活性。然而,由于s a x 解析器实现简 单、快速且占用内存较少,这使得它适合用于服务器应用程序和只读取数据或 对其进行少量修改的应用程序。 1 0 武汉理工大学硕士学位论文 2 3 3x m es c h e m ai n f o s e tm o d e l x m ls c h e m ai n f o s e tm o d e l 2 0 1 2 1 1 ( 以下简称i n f o s e tm o d e l ) 是一个库,可以与 任何检查、创建或修改x m l 模式( x s d ) 的代码一起使用。该库提供一套a p i , 用于处理w 3 cx m ls c h e m a 规范描述的x m ls c h e m a 的组件。该库包含a p i 来 串行化和反串行化x s d 模式文档,以及对x s d 模式文档进行完整性检查。 在i n f o s e tm o d e l 类库中,除了一些辅助类,其余类几乎与w 3 cx m l s c h e m a ( w x s ) 坌n 件是一一对应的【2 引。它包括两部分内容:一部分是结构类,对 应于x m ls c h e m ap a r t l :s t r u c t u r e s ;另一部分是数据类型及相关约束类,对应于 x m ls c h e m ap a r t2 :d a t a t y p e s 。 综合比较d o m 、s a x 及x m ls c h e m ai n f o s e tm o d e l ,d o m 和s a x 主要是 用来解析x m l 实例文档的,而x m ls c h e m ai n f o s e tm o d e l 则是解析x s d 模式文 档的最好选择。所以本文选用x m ls c h e m ai n f o s e tm o d e l 来解析x s d 模式文档。 2 4j a v as w i n g 2 4 1j a v as w i n g 简介 j a v as w i n g 2 3 儿2 4 j 是目前j a v a 不可或缺的窗口工具组,在s w i n g 尚未推出之 前,写j a v a 窗口必须使用a w t ( a b s t r a c tw i n d o wt o o l k i t ) 2 4 j 包,因为s w i n g 的架 构是建立在a w t 架构之上的,所以在对s w i n g 架构进行描述时,只要参考a w t 的架构,s w i n g 自身也被分层置于a w t 包的原始部分之上。“s w i n g ”这个词的意 思就是新组件的指代名称,它一直持续使用到今天。 s w i n g 和a w t 的区别如下:第一,a w t 依赖对等架构,它用j a v a 代码包装 本地窗口部件,而s w i n g 却根本不使用本地代码和本地窗口部件。第二,a w t 把绘制屏幕交给本地窗口部件,而s w i n g 自己的组件自己绘制自己。第三,因 为s w i n g 不依赖本地窗1 2 1 部件,它可以抛弃a w t 的最小公分母的方法并在每个 平台下实现每个窗口部件,从而创建一个比a w t 更强大的开发工具包。 s w i n g 在缺省情况下采用本地平台的显示外观,然而,它并不仅仅限于此, 而是还可以采用插件式的显示外观,因此s w i n g 应用程序可以看起来像w i n d o w s 应用程序的显示外观。s w i n g 组件超越了简单的窗口部件,它体现了正不断出现 武汉理工大学硕士学位论文 的设计模式以及一些最佳实践。利用s w i n g ,你不仅仅得到g u i 窗口部件的句 柄和它所包含的数据,而是定义了一个模型去保存数据,定义一个视图去显示 数据,以及定义一个控制器去响应用户输入。s w i n g 组件的构建基本上是基于 m v c ( m o d e l v i e w - c o n t r o l l e r ) 模式的。s w i n g 的结构分成三类:1 存储组件内部将 被用来操作的数据。如t a b l e m o d e l ,等等:2 存储控制组件操作模式的数据。如j l i s t 等:3 存储组件本身性质的数据模式。如j s l i d e r 等。 2 4 2j a v as w i n g 组件 j a v as w i n g 是s u nm i c r o s y s t e m s 建立的g u i 上具包,允许使用j a v a 语言进 行企业级开发,并且可以扩充、修改这些组件来控制其外观、行为。s w i n g 组件 采用了模型一视图一控制器的设计模式,其内部则使用了被称为“模型代理”的 u i 代理机制口5 1 ,如图2 3 所示。利用u i 代理,开发人员可以改变组件的外观样 式,甚至整个应用系统界面样式。 2 4 3s w i n g 事件处理 图2 - 3u i 代理示意图 所有的事件都继承自j a v a u t i l e v e n t o b j e c t ,e v e n t o b j e c t 对象的方法 g e t s o u r c e o j 区回了发送事件的源组件,从而把事件的处理和事件源分割开。对于 鼠标事件,其事件对象是m o u s e e v e n t 类,而键盘事件的事件对象是k e y e v e n t 类。 当用户操作g u i 图形界面发生了鼠标或键盘事件,所操作的s w i n g 组件就 会发送相应的事件,如果程序要处理这些事件,只要把相应的事件监听器添加 1 2 武汉理工大学硕士学位论文 到s w i n g 组件。j a v a u t i l e v e m l i s t e n e r 接口是所有的事件监听器的基类,对应于 鼠标事件的监听器是m o u s e l i s t e n e r , m o u s e m o t i o n l i s t e n e r 和处理鼠标滚动时间 的m o u s e w h e e l l i s t e n e r , m o u s e l i s t e n e r 负责处理鼠标的按下、释放、进入组件区 域和离开组件区域所发生的事件,而m o u s e m o t i o n l i s t e n e r 主要处理鼠标的拖放 事件。对应于键盘事件的监听器是k e y l i s t e n e r ,主要处理用户使用键盘与应用 程序的交互,包括键的按下、释放等事件处理。k e y e v e n t 类定义了每个键盘键 所对应的虚拟键值,通过对每个k e y e v e n t 的键值的检测,应用程序可以完成用 户的交互要求。 s w i n g 组件包中的j c o m p o n e n t 类是图形界面组件的基类,它定义了对鼠标、 键盘等事件的加载监听器的方法,只要调用组件的a d d x x x l i s t e n e r o 方法,就可 以把相应的事件监听器加载给要对事件做出响应的s w i n g 组件,如加载鼠标事 件调用方法a d d m o u s e l i s t e n e r 0 。s w i n g 组件对键盘事件监听的处理,可以采用 a c t i o n m a p 和i n p u t m a p 两者结合的方式,通过一个中间的标识值,把操作a c t i o n 同代表键值的k e y s t r o k e 结合起来,完成事件的调用处理。s w i n g 组件的a c t i o n 采用了命令模式,其动作方法a c t i o n p e r f o r m e d 0 执行用户想要完成的操作, a c t i o n m a p 则是一个a c t i o n 类对象的集合。 除了键盘、鼠标事件,在s w i n g 组件中还包含了其它的多种事件类型,并 且开发人员还可以根据j a v a b e a n s 规范自定义事件。利用s w i n g 组件的事件处理 机制,应用程序可以完成与用户的交互性操作。 2 4 4s w i n g 包中的界面组件 在s w i n g 包中,除了j f r a r n e ,j d i a l o g ,j a p p l e t 和j w i n d o w 等框架组件是重型 组件外,其它的都是轻型组件,使用g r a p h i c s 对象来绘制自身。图2 4 展示了 s w i n g 包定义的界面设计中所需要的大多数界面组件【2 5 1 。开发人员除了直接使用 它们外,还可以继承这些组件,派生出功能、样式不同的界面组件。 武汉理工大学硕士学位论文 图2 4s w i n g 组件包 j f r a m e 是重型组件,提供了应用程序的主框架。j m e n u b a r 实现了程序的菜 单条,j m e n u l t e m 实现了菜单项的设置,可以设置其a c t i o n 来响应用户的操作。 j p a n e l 是应用程序的面板,可以在里面添加其它界面元素,并根据布局管理器的 布局策略来安排其界面元素,不仅如此,还可以扩展j p a n e l ,并覆盖 p a i n g c o m p o n e m 0 实现不同的界面绘制。在开发多文档应用程序时,可以使用 j d e s k t o p p a n e 组件作为主框架的内容嵌板,每一个文档窗口是j i n t e m a l f r a m e 对 象,使用j d e s k t o p p a n e 的a d d ( ) 方法可以把j l m e m a l f r a m e 对象添加到 j d e s k t o p p a n e 。s w i n g 包提供了j t e x t c o m p o n e n t ,是所有的文本组件的抽象基类, 其子类j e d i t p a n e 不仅可以处理普通文档,还可以显示h t m l 网页。利用s w i n g 1 4 武汉理工大学硕士学位论文 组件包里面的界面组件,开发人员可以扩展出满足用户需求的界面设计。 2 5e c l i p s e 建模框架 e m f t 2 6 】f 2 7 ( e c l i p s em o d e l i n gf r a m e w o r k ) 是e c l i p s e 软件工程环境下对m o f 、 x m i l 2 8 】和o c l 等规范的实现,e c l i p s e 软件工程环境下的许多工具以e m f 为基础, 其中o r g e c l i p s e u m l 2 t 2 9 】是u m l 2 0 在e m f 框架下的实现。e c o r e 是e m f 中对m o f 核心的实现。 e m f 是一个开放源代码的框架,它的目标是实现模型驱动架构的开发【3 0 1 。 它包含了将我们的开发精力集中在模型上而不是实现细节上所必需的元素。其 主要关注的领域是:生成模型时支持定制、通知、参照完整性以及其他基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 监控电源采购合同范本
- 网络销售服务合同范本
- 牛肉采购协议合同范本
- 租房开荒保洁合同范本
- 美食广场招商合同范本
- 订购医疗设备合同范本
- 第26课《诗词五首:渔家傲》教学设计 2025-2026学年统编版语文八年级上册
- 离婚委托代理合同范本
- 三、度量位置组合画面教学设计-2025-2026学年小学信息技术粤教版五年级下册-粤教版
- 租房合同范本租赁合同
- 2025山东济南医学发展集团有限公司国有企业招聘22人笔试考试参考试题附答案解析
- 物业管理费用结构分析报告
- 2025天津港保税区安全生产技术专家招聘26人笔试考试参考题库附答案解析
- 2025卧室装修合同范本下载模板
- 旅馆从业人员在线考试及答案解析
- 冬季钢结构焊接施工技术与费用分析
- 高校思政说课课件
- 银行反洗钱2025年合规测试试卷(含答案)
- 雨课堂在线学堂《小白学人工智能》单元考核测试答案
- 厨房成本核算课件
- 订购挖机配件合同范本
评论
0/150
提交评论