已阅读5页,还剩75页未读, 继续免费阅读
(计算机应用技术专业论文)基于xmlxslt的动态网页自动生成系统研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于x m l x s l t 的动态嘲页自动生成系统研究与实现摘要 摘要 本文从b s 模式多层数据库应用系统开发面临的问题出发,仔细研究了现有代码 自动生成技术,并在深入研究x m l 与x s l t 技术的基础上,设计并实现了基于x m l ) ( s l t 的动态网页自动生成系统。 根据数据库应用程序开发中的n 层架构,可设计架构中的实体类、操作类及多 个数据库操作页面等源代码模型,并按照数据库及其表结构信息来生成x m l 文档, 再根据源代码模型的要求和x m l 文档原型制定x s l 转换文件,最后通过编写特定的 程序控制转换操作,即可以自动生成所需要的源代码文件。 本文运用上述原理,设计并介绍了系统模型。然后详细介绍了系统的三个核心组 成部分:中间层代理程序组件、代码模型和x s l 转换文件,并在最后给出了系统的 应用实例。 关键字:x m l ,x s l t ,代码自动生成,动态网页 作者:成光 指导老师:徐汀荣 a b s t r a c t s t m i n gf r o mt h ep r o b l e m so nt h ed e v e l o p m e n to fb sm o d em u l t i l a y e rd a t a b a s e a p p l i c a t i o ns y s t e m ,t h i sp a p e rc 盈r e f u l l ya n a l y s e st h ee x i s t i n gs o f t w a r ea u t o m a t i o n t e c h n i q u e ,a n db a s e do nt h ex m la n dx s l tt e c h n i q u e a na u t og e n e r a t o ro nd y n a m i cw e b p a g ew a sp r o p o s e d p r o g r a m m e rw h oa c c o r dt ot h es t r u c t u r ec o m p o s e do fn - l a y e r s ,w h i c ha p p l i e st o d b m s ,c a nd e s i g nc o d em o d e li n c l u d i n ge n t i t yc l a s s ,o p e r a t i n gc l a s sa n ds e v e r a lw e b p a g e s t h e nt h ex m l d o c u m e n ti l lt e r m ss t r u c t u r eo f t h ed a t a b a s ec a l lb eb u i l d t h e nt h e x s lc o n v e r s i o nd o c u m e n tb a s e du p o nt h ec o d em o d e la n dx m ld o c u m e n tc a nb e d e s i g n e d t h r o u g he d i t i n gt h ep a r t i c u l a rp r o g r a m , ad e s i r e ds o u r c ec o d ec 雏b ec r e a t e d t h i ss y s t e mm a k e su s co f a b o v em e n t i o n e dp r i n c i p l e ,c a r r y i n go u tt h ea u t og e n e r a t o r t h e nt h i sp a p e ri n t r o d u c e dt h r e eh a r dc o r e so f t h i ss y s t e mi nd e t a i l :t h em e d i a ll a y e rf o rt h e p r o g r a mm o d u l e ,t h ec o d em o & la n dx s ld o c u m e n t a n di nt h ee n d ,t h ep a p e rh a sg i v e n t h ee x a m p l eo f t h i ss y s t e m k e yw o r d :x m l ,x s l t , a u t og e n e r a t o r , d y n 丑i i l i cw e bp a g e w r i t t e nb yc h e n g g u a n g s u p e r v i s e db yx ut i n g r o n g y 9 5 7 0 0 7 苏州大学学位论文独创性声明及使用授权声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进 行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含 其他个人或集体已经发表或撰写过的研究成果,也不含为获得苏州大学 或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡 献的个人和集体,均已在文中以明确方式标明。本人承担本声明的法律 责任。 研究生签名: 遗蕴日 学位论文使用授权声明 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文 合作部、中国社科院文献信息情报中心有权保留本人所送交学位论文的 复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本 人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分 内容。论文的公布( 包括刊登) 授权苏州大学学位办办理。 研究生签名:主奠丛日 导师签名: 乏拿搬荔 日 期:呈! ! 垒兰! i ! z 留 期:壶! :兰望 基于x m l x s l t 的动态嗣页自动生成系统研究与实现第一章前言 第一章前言 1 1b s 模式多层数据库应用系统开发面临的问题 近年来,随着w e b 技术的蓬勃发展,人们已不满足只在w e b 浏览器上获取静态 的信息,人们需要通过它发表意见,查询数据,甚至进行网上购物,这就追切需要实 现w e b 与数据库的互联。w e b 技术发展到今天,人们已经可以把数据库技术引入到 w e b 系统中。数据库技术发展比较成熟,特别适于对大量的数据进行管理,w e b 技术 具有较佳的信息发布途径,这两种技术天然的互补性决定互相融合是其发展的必然趋 势。将w e b 与数据库结合起来,不仅把w e b 与数据库的优点集中起来,而且充分利 用了大量已有的数据库信息资源,可以使用户在w e b 浏览器上方便地检索和浏览数 据库的内容,这对许多部门具有极大的吸引力。所以,将w e b 技术与数据库技术相 结合,开发动态的w e b 数据库应用,已成为当今w e b 技术的热点。 而现在更多的是采取三层或多层w e b 结构的浏览器服务器模式的数据库体系, 如下图1 1 所示。前端采用基于瘦客户机的浏览器技术,通过服务器及中间件访问数 据库。中间件驻留在w e b 服务器和数据库服务器之间通信并提供应用程序服务。数 据库服务器管理数据库中的数据,客户发出h t t p 请求,w e b 服务器以页面向用户返 回查询结果。 图1 1多层w e b 结构的数据库体系示意图 第一章前言 基于x m l t x s l t 的动态网页自动生成系统研究与实现 由于基于w e b 的数据库应用技术的成熟,它的市场需求越来越大,软件开发公 司也希望通过提高项目的开发速度以增加市场占有率,传统的开发技术显然不能很好 的满足需求,而且在开发过程中出现了越来越多的问题,主要问题如下: 开发费用和进度失控 费用超支、进度拖延的情况屡屡发生,有时为了赶进度或压成本不得不采取一些 权宜之计,这样又往往严重损害了软件产品的质量。 软件的可靠性差 尽管耗费了大量的入力物力,而系统的正确性却越来越难以保证,出错率大大增 加,由于软件错误而造成的损失十分惊人。 生产出来的软件难以维护 很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了 已有的错误又引入新的错误。 所以对于提高基于w e b 的数据库应用开发速度和精确性的研究很有必要。为了 解决b s 模式多层数据库应用系统的需求的日益增长和b s 模式多层数据库应用系统 落后的开发方式之间的矛盾,实现它的自动生成是本课题的主要任务,也一直是代码 自动生成技术的目标之一 1 2 代码自动生成技术 1 2 i 代码自动生成技术简介 代码自动生成技术有着很广泛的应用,从w e b 页面生成、站点生成到企业级应 用都有其身影。从实际项目开发角度来说,使用代码自动生成技术是为了节省软件开 发成本 ( 1 ) 代码生成器模型 代码生成器的主要作用是读取工程的元数据,按照指定的设计模式,混合产生出 规范的源代码。 一个典型的代码生成器的模型图如下图1 2 所示: 2 基于x m l x s l t 的动态两页自动生成系统研究与实现 第一章前言 图1 2 代码生成器模型圈 在这张模型图中,为实现自动生成程序代码,必需的三个要素是: 设计模式 生产出代码的模板文件。 领域元数据 在代码中需建模的拓扑结构,通常随开发者提供的特定数据增长。 领域规则 指定领域元数据与行为的规则,这部份通常封装在生成器的本身中。 代码生成器在开发工程中可以看作是工程团队的一名附加成员。它包含了许多开 发者以往的开发经验。可以在几分钟之内生产出极其健壮的代码,而且生成的代码中 只有很少的s u c , t 。 ( 2 ) 代码生成应用领域 从代码生成器的应用领域分析,代码生成器主要应用在下面三个方面: 编译与优化领域 编译与优化领域的代码生成主要是研究如何根据高级语言生成机器语言或字节 码,以及代码生成的可移植问题。目前,在这方面代码自动化的方法各种各样,但总 的来说可以归结为三种,分别是:解释性代码生成法;样板匹配代码生成法表 驱动代码生成法。 第一章前言 基于x m l x s l t 的动态网页自动生成系统研究与实现 通用代码生成领域 这类工具生成的代码通常是高级语言,如c + + ,j a v a , v b 等。但由于它们的应用 领域特别广泛,所以导致代码的生成率并不高,通常为系统的框架代码。比较著名的 是b u i l d e r ,它具有生成框架代码的功能,比如生成基于e b i 0 与e j b 2 0 规范的组 件框架,由编程人员填入相应的实现代码。 通用领域的代码自动生成应用非常广泛: 生成删,页面 这是代码生成器最常用的领域,甚至生成完整的w e b 站点。 封装数据库操作 数据库的操作烦琐而且重复的工作量巨大,比较容易出错。这方面的生成器的应 用主要包括建立业务对象,以及数据库事物处理。 s q l 语句的实现 一些c a s e 工具根据数据库的实体模型来生成创建数据库就需要使用自动生成 技术。此外一些内嵌的代码生成工具中,常常需要将s q l 语句翻译成特定的宿主语 言。等等这些,都可以用代码自动生成技术来完成 2 1 。 除了上述的三种情况以外,还有很多,如封装e b 部署描述文件、x m l 数据绑 定等。 专用代码生成领域 专用代码自动生成工具通常面向专用领域,生成小型的系统或程序,因此可以达 到更高的代码生成率。例如有限元程序自动生成系统,它的主要思想是采用元件化的 程序设计方法和人工智能技术,根据有限元方法的统一的数学原理及其内在规律,类 似于数学公式推理方法,由计算机自动产生有限元程序。 ( 3 ) 代码生成器的优缺点: 应用系统采用代码自动生成器来生成应用系统的部份代码,代码生成器作为一个 辅助工具,它具有的优势有: 程序异常健壮 可定制 如果你有生成器本身的源代码,你可以很容易的定制你所需要的代码。 4 、 t 基于x i 帆x s l t 的动态网页自动生成系统研究与实现第一章前言 稳定且几乎没有b u g 改变程序员的工作方式 代码越来越廉价与简单,因为只需要做的是提供需求。如果后来需求改变,只需 要修改生成器来生成新的版本源代码。 当然代码自动生成器也有本身的缺点,主要表现为以下几个方面: 只适应特定的环境 不能1 0 0 生成,需要手工完成 对于数据库代码,数据库必须设计正确并且规范 1 2 2 代码自动生成技术的主要生成机理 目前,出现的代码生成器越来越多,它们的主要差异在生成机制和各种各样的生 成技术,下面是它们主要的两种生成方式: ( 1 ) 基于模板解析的代码生成技术 为自动生动代码,首先需要确定源代码中那些重复的代码部份,这些代码部份可 以以模板的形式保存,从而通过代码自动生成源代码。如果没有代码生成工具,开发 人员就需要手工开发这些重复的代码。代码自动生成的过程就是软件复用过程。它的 代码生成器模型如下图1 3 所示; 图1 3 基于模板解析的代码生成器模型图 在这个模型图中最重要的就是输入文件及模板文件。其中输入文件一般采用 5 第一章前言基于x m l x s l t 的动态 呵页自动生成系统研究与实现 x m l 文件向代码自动生成器中输入信息,它主要标记了待替换的参数和模板文件中 的词汇表。它的主要作用如下: 用户输入信息归档 代替模板中的动态部份,从而生成源代码 修改源代码 采用) a l 文件作为代码自动生成器的输入文件,对应的输入文件的解析引擎就 可以选择s a x 或者d o m 等,它们都是优秀的x m l 文件解析器。 模板的解析是代码生成中另外一个重要的组成部份。模板的解析需要定义模板描 述语言来描述模板文件,需要模板标签库的支持。其中模板描述语言可以理解成一种 解释型语言,由模板引擎解释执行,执行的结果输出是程序源代码文本文档。模板引 擎是与输入文件的解析引擎配合使用的,它的作用是读取指定的模板文件以输入文件 为输入参数,处理模板中的标记及变量,从而产生目标代码输出【3 1 。 目前这种模板解析代码生成技术在国外的一些大型公司已经进入了实用阶段,特 别是基于e j b 组件的代码生成工具,例如:i b m 公司的e mm a k e i 通过解析) 0 讧l 配置文件进行代码生成,用作辅助开发工具;b o r l a n d 公司的j b u l i d e r 也是目前比较 流行的e j b 开发工具,提供可视化的操作开发界面,通过向导的方式自动生成e j b 框架代码。但是这种技术在使用上缺少商务框架模型支撑,虽然可以实现代码的部份 自动生成,但是都是框架代码,没有具体的业务逻辑实现。 ( 2 ) 基于模型驱动的代码生成技术 针对越来越多的代码自动生成工具的出现,虽然给传统的开发技术带来了不少的 冲击,但是也暴露了可扩展性、可维护性、可移植性等一系列问题。原因就是使用自 定义描述元数据和生成程序的模板,解决这个问题不仅需要技术手段,也需要各研究 机构共同遵守行为规范。因此,软件业的o m g ( 对象管理组) 提出了m d a ( 模型 驱动构架) ,希望在一个更高的抽象层次上解决问题。 它的基本原理为:一个m d a 的应用,是建立以平台无关的 p i m ( p l a f f o r m - i n d e p e n d e n tm o d e l ) 开始,然后使用相应的m d a - f 具,结合具体技术, 将p i m 映射成为特定平台上的p s m ( p l a t f o r m s p e c i f i cm o d e l ) ,最后通过这个应用的 6 基于x m l s l t 的动态舟页自动生成系统研究与实现第一章前言 特定p s m ,使用代码自动生成器,自动生成大部分的特定平台上的应用程序代码。 m d a 的提出改变了软件设计、实现和维持的方法,它提供了一种比中间件层次更高 的、更抽象的解决方案,使将来的互操作和移植变得更加容易和快速,并且把从模型 到代码的自动生成提高到更高的层次。 模型驱动的代码生成技术一般采用基于x m l 与x s l t 技术的配合使用来实现代 码生成,它的模型如下图1 4 所示; 图1 4 基于模型驱动的代码生成器模型图 该图表示,获取一个特定领域具体业务模型需求,使用u m l 编辑器编辑特定领 域的业务逻辑和数据结构,生成用u m l 语言描述的具体业务模型,再结合特定平台 的附加信息和技术的要求,通过x m i 转换规则生成所需要的x m l 文件。而同时, 对于具体业务模型中的一些固有的程序代码框架,可以使用x s l t 编辑器生成x s l t 程序模板。最后再通过x s l t 处理器,将描述具体业务模型的x m l 与x s l t 程序模 板结合,就可以把这个具体业务模型映射成为特定平台上的应用程序代码,从而实现 快速地开发系统。一旦系统的需求或者技术有所改变,只需要在元数据模型上进行修 改,再次使用代码生成器就可以生成不同的应用程序。这样就节约了重复的代码工作, 7 第一章前言基于x m l x s l t 的动态同页自动生成系统研究与实现 使得开发人员把精力集中到元模型的描述和代码生成器的使用上面【4 】。 虽然基于模型驱动对代码生成技术提供了强有力的支持,使代码生成具有数学般 的精确,将改变开发过程与开发工具,但该技术的研究还处在初级阶段,很多标准还 处在研究制定之中,所以还不完善,距应用还有很长一段路需要走。 1 3 本设计简介 本文在参考前文所介绍关于基于模板解析的代码生成技术的基础上着力研究一 种通用且灵活的代码生成方法,最终提出了基于x m l x s l t 技术的动态网页自动生 、 成系统。 1 3 1 基本原理 7 该代码生成的处理原理为:采用x m l 文件作为输入文件并通过语法分析转换为 输入文件的语法分析树,语法分析树再通过代码生成器的分析,转换成生成代码的语 法分析树,这样代码书写器就可以通过生成代码的语法分析树获取输入文件的信息, 生成所需要的代码嘲。图1 5 是代码自动生成的处理原理。 x m l文挡 、 、 ( x s l 碰璐) 图1 5 基于x m l x s l t 的代码生成器的原理图 8 基于x m i x s l t 的动态网页自动生成系统研究与实现第一章前言 在这个处理过程中,采用x m l x s l t 技术能够更好地实现从模型到代码的转 换并且促使代码生成器技术的发展。 语法分析 在这里输入文件是描述数据库库表信息的x m l 文件。x m l 文件的语法分析可 以直接采用x s l t 处理器中的语法分析器。 语法分析树 x s l t 处理器刨建自己的语法分析树结构,并且利用x p a t h 语言提供脚本程序访 问的接口。 语法分析树的转换 x s l t 处理器通过x p a t h 语言提供获取语法分析树节点上值的接口,它直接执行 语法分析树的转换过程,而不需要开发者进行设计,开发者唯一要做的事情就是懂得 使用x p a t h 的语言。 代码书写器 将生成的代码以各种文件形式输出。这里x s l t 处理器也很好地实现了这个功 能。 采用x s l t 技术的代码生成器,对于代码生成器自身的系统结构就不需要过多关 注,可以把精力集中到书写代码生成的逻辑上,实现更完善的代码生成功能。 1 3 2 功能特点 本文的基于x m i j x s l t 技术基础上的动态网页自动生成系统采用了人性化的设 计,并且考虑了现在数据库系统本身的复杂性,使得以前的单层结构无法满足其需求, 而更多的开始使用多层结构的基础上,对系统的设计提出了更高的要求,所以在以下 几个问题上进行了充分的考虑与完善: 支持三层结构 本系统是一个能自动生成三层结构程序源代码的软件。这将大大减少开发人员 编写代码的数量,同时减少出错的可能性,从而大大提高开发效率和质量。 9 第一章前言苯于x m l x s l t 的动卷网贞自动生成系统研究与实现 便于升级 使用c o m 技术使代码生成器界面层和系统核心组件分开,更改业务逻辑比较方 便,升级也比较方便。 模板可自定义 用户可根据自己需求自行定义代码模板 方便性 采用x s l t 技术的代码自动生成器,可以方便的将描述表结构信息的x m l 文档 进行转换,抽取出相关字段信息并生成目标代码。 总结以上所述,本章介绍的代码生成系统是一个能自动生成三层结构程序源代码 的软件。它将会根据给定的数据库结构,帮助自动生成架构中的实体类,操作类及多 个数据库操作页面等源代码,这将能够减少很多代码量,同时避免由于开发人员的失 误而造成的b u g 。 但有一点必须强调,该系统当然不能魔幻般对项目成功具有保证作用,生成工作 结束之后还需要质量保证人员对代码生成器所完成的部分进行完善,和没有能够完成 的部分进行补充。但它可以使你的项目在前期可以完成大部分的工作。 1 3 3 主要开发环境及关键技术 ( i ) 开发环境 w i n d o w s2 0 0 0 v i s u a ls t u d i o n e t u l t r a e d i t1 0 ( 文本编辑器) ( 2 ) 关键技术 吼+ c o m + a s p n e t + ) 丑订l + x s l 数据库:s q ls e r v e r i o 、 基于x m l x s l t 的动态嘲页自动生成系统研究与实现第一章前言 1 4 本文的组织结构 本文共分成六章: 第一章为前言,介绍了b s 模式多层数据库应用系统开发所面临的问题及已有的 针对它的解决方案,即代码自动生成技术。在此基础上设计出基于x m l x s l t 的动 态网页自动生成系统,并介绍了该系统的原理及特点。 第二章为技术背景,介绍了与该设计相关的x m l 、x s l t 与c o m 技术。 第三章为相关技术在代码生成中的应用,介绍了采用x m l 定义数据库表结构的 方法,并介绍了x s l t 定义的代码模板自动转换x m l 文档的原理。 第四章为系统模型,介绍了基于x m i i x s l t 技术的动态网页自动生成系统的模 型,并详细介绍了它的生成过程、模型特点及实现该模型需要解决的几个关键问题。 第五章为核心部件的设计与实现,详细设计和实现模型中的中间层代理程序组 件、代码模型与x s l 转换文件。 第六章为系统的应用,通过具体实例介绍了系统的应用。 第七章为结束语,从总体上总结了本文所做的主要工作并对代码自动生成技术未 来的发展作出展望。 第二章技术背景基于x m i j x s l t 的动态弼页自动生成系统研究与实现 2 1x m l 技术 2 1 1x m l 简介 第二章技术背景 近年来,随着w e b 的应用越来越广泛与深入,人们开始觉得h t m l 不够用了, h t m l 过于简单的语法严重阻碍了用它来表示复杂的形式,难以满足复杂的不断增长 的应用需求。标准通用标示语言s g m l 是一种元标示语言,能用来设计自己的标识 语言,它功能强大,能很容易的描述数据,但是其过于复杂,不便使用。正在这种形 势下,w e b 标准化组织w 3 c 建议使用一种精简的s g m i , 版本x m i 。与h t m l 一 样,x m l 也脱身于s g m l 语言,它将s g m l 语言简化,保留了s g m l 语言8 0 的 功能,使复杂程度降低了2 0 ,虽然与h t m l 语言同属s g m l 语言的一种子集,但 x m l 具有伸缩性与灵活性,而这正是h t m l 语言所欠缺的。 与h t m l 语言相比,x m l 语言有了很大的飞跃,它可以让信息提供者根据需要 自行定义该标识及属性名,可以包含描述法,使应用程序对文件进行结构嵌套可以复 杂到任何程度x m l 与s g m l 同是一种元语言,而h t m l 则不是【6 l 。 2 i 2x m l 的特点 x m l 之所以能够在最近被广泛欢迎和应用,主要由x m l 自身的独特优点所决 定的 可扩展性 x m l 允许不同的组织和个人都能够建立适合自己需要的标记集,并且这个x m l 标记还可以迅速的投入使用。从而克服了h t m l 不具有扩展性的缺点。 内容与形式的分离 在x m l 中,显示样式从数据文档分离出来,放在样式表单中,如果需要改动数 据的表现方式,无需改动数据文档本身,只改动样式表单即可。在x m l 中数据搜索 1 2 基于x m l x s l t 的动态网页自动生成系统研究与实现第二章技术背景 可以简单高效的进行,不必遍历整个x m l 文档,只需找相关标记下的内容即可。 内容独立性 x m l 可脱离具体应用以一种统一的数据模型来描述保存在异构环境中的各种数 据,屏蔽数据源中应用环境和数据结构的异构性。 平台独立性 x m l 文档是纯文本,完全独立于各种开发平台。 易于处理 x m l 对格式的定义非常严格,并具有层次结构,处理起来更加容易。它是与厂 商无关的标准,可以任选一种解析器来处理。x m l 在采用简单,柔性的标准化格式 表达和在应用程序闻交换数据方面迈出了一大步。 2 1 3 舢的应用 目前,x m l 是计算机行业中最热门的技术,它的应用领域也非常广泛: 描述数据信息 可以利用任何文本处理工具创建的x m l 文档,而且x m l 并不限于描述文本数 据,可以是图像、矢量图形、动画和扩展到任何其它数据类型。 为数据交换奠定了基础 x m l 的元数据基础结构为数据交换技术的繁荣奠定了基础。用户可以建立一种 在整个企业内部甚至企业之间都保存一致的元数据层,因此应用程序可以理解数据, 而无需了解数据的来源,只需要读取自我解释的x m l 文档即可。它还简化了i n t e m e t 上查找信息的过程,人们不再需要使用搜索引擎进行查询来得到一组随机列表。 作为w e b 的通用媒介 x m l 的潜在用处很多,没有x m l ,信息只能使用简单而短小的文件进行传输, 而有了x m l ,信息就可以被精确描述,所以像浏览器这样的应用程序可以更智能化 地处理信息。智能化的优点把札推到w 曲上通用媒介的地位。 甚至全世界的国际象棋爱好者也领略到x m l 的强大。c a 压l 是国际象棋数据 的标记语言,允许对象棋进行复杂的处理。它不仅可以显示象棋数据,还可以进行象 第二章技术背景 基于x m i d x s l t 的动态网页自动生成系统研究与实现 棋计算机比赛,标记联赛与选手信息。由于x m l 的本质非常简单,可以把c a x m l 转换为描述象棋数据的其它格式忉。 尽管x m l 快速的进入了各个领域,但它却不可能替代原来的技术。因为计算机 可以轻松读取x m l 数据,在不同的格式之间传输,所以它可以用作集成原有系统和 其他应用程序及网络的中间媒介 2 2x s l t 技术 2 2 1x s l t 简介 x s l 是扩展风格表单语言( e x t e n s i b l es t y l c s h e c tl a n g u a g e )3 种语言组成。这三 种语言负责把x m l 文档转换为其他格式。x m lf o o c s l 格式化对象:x s lf o r m a t t i n g o b j e c t s ) 说明可视的文档格式化,而x p a t h 则访问x m l 文档的特定部分。但是 x s l t ( x s lt r a n s f o r m a t i o n s ) 才是把某一x m l 文档转换为其他格式的实际语言。本系 统采用的即为x s l t 语言,但是为了本论文的统一与易懂性,所以在本论文中的所有 r 舯 x s l 文件即为x s l t 文件一。 x s l t 是x m l 技术家族中一项重要的技术,是一种定义样式表,对x m l 文档进 行转换的语言。x s l t 可以将x m l 文档转换成其它结构( 包括x m l 结构) 的文档, 比如h t m l 文档、纯文本文档等等,在转换过程中,一般会对数据进行过滤、排序、 计算等操作。 x s l t 文档本身是一个格式符合的x m l 文档,它被链接到需要转换的x m l 文档, 通过x s l t 处理器进行处理,实现对x m l 文档进行转换。使用x s l t 处理器的便捷 方法是用i e 5 直接显示链接了x s l t 文档的x m l 文档,则i e 5 内詈的x s l t 处理器 会对x s l t 文档进行处理,转换x m l 文档,并将转换结果显示出来。 x s t ,t 将要处理的x m l 文档视为一个节点树,称为源树。将转换结果也视为一 个节点树,称为结果树,如下图2 1 所示。结果树与源树是分离的,结果树的结构可 以与源树完全不同。创建结果树时,来自源树的元素可以被过滤和重排序,并可以添 加任意结构。对节点树的基本约束与a n l 一致,可参见x p a 也有关文档一 1 4 基于x m l x s l t 的动态两页自动生成系统研究与实现 第二章技术背景 图2 1 节点树转换示意图 x s l t 文档可以包括由x s l t 定义的元素和不由x s l t 定义的元素。x s l t 定义 的元素属于一个特殊的x m l 命名空间( n a m e s p a c e ) ,称为x s l t n a m e s p a c e 。在本文中, 使用命名空间前缀“x s l ”来引用x s l t n a m e s p a c e 中的元素。不由x s l t 定义的元素, 或者说不在x s l t 命名空间中的元素称为原义元素( l i t e r a le l e m e n t ) 。因为x s l t 元素 指示x s l t 处理器如何操作,因此有时也称x s l t 元素为指令。 在x s l t 中,转换被称为样式表( s t y l e s h o e t ) ,样式表定义了一套将源树转换为结 果树的规则,称为模板规则( t e m p l a t er u l e s ) 。样式表通过x s l t 文档中的x s hs t y l e s h c e t 元素定义,其内容一般为多个模板规则。 一个模板规则分两个部分:模式( p a t t e m s ) $ 来匹配源树中的元素,使用x p a t h 语 法定义;模板( t e m p l a t e s ) 用来指示如何创建结果树的一部分。模板规则由x s l :t e m p l a t e 元素定义,其m a t c h 属性就是一个模式,用来匹配源树中的元素;其内容就是模板。 2 2 2x s l t 处理模式 x s l t 按以下规则对源树进行处理,以最终得到结果树。源树中的每一个节点 都有可能经处理用来创建结果树片段,此过程是通过模板规则实现的。对源节点列 表中的节点按顺序进行处理,产生的结果树片段附加到已产生的结果树中。在创建结 果树时,从包含源树根节点的节点列表开始处理。节点的处理需要找到所有匹配本 节点的模板,然后按一定规则从中选择一个最佳的模板,被选中的模板将本节点作为 第二章技术背景基于x m l x s l t 的动态两页自动生成系统研究与实现 当前节点、源节点列表作为当前节点列表进行处理。模板一般通过一个指令来选择 一个新的源节点列表继续处理。由于此动作由一个指令完成,因此选择新的源节点列 表以及继续处理是不可分的一个步骤。匹配、处理和选择是不断地递归执行,壹到 没有选择任何新的源节点。 模板中选择新的源节点列表来继续处理的指令通过“x s ha p p l y - t e m p l a t e s ”元素 定义,并可以通过其s e l e c t 属性选择源节点列表。 按照这个规则,x s l t 从源树的根节点开始,选择合适的模板来处理根节点。此 时根节点被视为为当前节点( c u r r e n t n o d e ) 。如果此模板中选择了一个源节点列表并继 续应用模板,则对此源节点列表中的每个节点顺序处理,重新选择合适的模板来处理 此节点,此节点被视为为当前节点,此源节点列表被称为当前节点列表( c u r r e n tn o d e l i m 。如此递归处理下去,直到没有任何新的源节点被选择。 在x s l t 规范中,定义了一套内置模板规则( b u i l t i nt e m p l a t er u l e s ) ,内置模板 规则遍历源树,输出每个节点的值。这样,即使在x s l t 文档中没有定义任何模板规 则,也会有结果输出。在选择模板规则时,x s l t 文档中用户定义的模板规则优先选 用【1 0 】 2 2 3 创建结果树 模板为特定的源元素创建部分结果树。就模板本身而言,它具有相当的能力:可 以任意创建任何复杂的结构;可以从源树任何位置获得字符串值;可以重复创建结构。 模板创建结果树的方法有两种:一是通过来自x s l t 命名空间的元素用来指示如何创 建结果树片段;二是可以通过包含原义元素直接指定结果树结构。 利用相应的x s l t 元素可以创建元素、属性、文本、处理指令、注释等各种节点; 在需要的时候,可以通过x s hc o p y 元素快速拷贝当前节点到结果树;利用x s l :v a l u e - o f 元素可以对源树节点进行任意计算,将结果输出到结果树。在模板中使用的原义元素 将被直接输出到结果树中。比如,如果我们需要将x m l 文档转换为h t m l 文档,则 可以在模板中直接使用h t m l 元素,创建h t m l 节点,十分方便。 1 6 基于x m l x s l t 的动态网页自动生成系统研究与实现第二章技术背景 2 3 c o m 技术 2 3 1c o m 简介 组件对象模型c o m ( c o m p o n e n to b j e c tm o d e l ) 是m i c r o s o f t 创建的一种二进制标 准和网络标准,它允许任意两个组件互相通信,而不管它们是在什么计算机上运行, 不管该计算机上运行的是什么操作系统,也不管该组件是用什么语言编写。 应用c o m 思想丌发软件,就是把应用系统切割成一些组件,这些组件可以单独 开发,单独编译,甚至可以单独调试与测试。当所有的组件开发完成之后,把它们组 合在一起就得到了一个完整的应用系统。当系统的硬软件发生变化,或用户的需求有 所改变时,并不需要对所有的组件进行修改,只要对需要修改的组件进行修改,然后 把它们组合在一起之后就完成了对整个系统的升级。 c o m 组件是遵循c o m 规范编写的、以w m 3 2 动态链接库( d l l ) 或可执行文件 ( e x e ) 形式发布的可执行二进制代码,能够满足对组件架构的所有需求。遵循c o m 的规范标准,组件与应用、组件与组件之间可以互操作,极其方便地建立可伸缩的应 | l 用系统。c o m 是一种技术标准,其商业品牌则称为a c t i v e x 一。 2 3 2c o m 的特点 最近组件技术在软件开发中得到广泛的应用,而且在使用中显示出了强大的功 能。这正是因为它具有独特的优点。 组件是与开发工具语言无关 开发人员可以根据特定情况选择特定语言工具实现组件的开发。对于i n t e m e t 应 用而言,完成事务逻辑处理计算任务的组件以m sv i s u a lb a s i c 进行开发是首选方案。 其结果是开发迅速,调试方便,编译之后的组件以二进制的形式发布,可跨w i n d o w s 平台使用,而且源程序代码不会外泄,有效的保证了组件开发者的版权。 通过接口有效保证了组件的复用性 一个组件具有若干个接口,每个接口代表组件的某个属性或方法。其他组件或应 用程序可以设置或调用这些属性和方法来进行特定的逻辑处理。组件和应用程序的连 第二章技术背景基于x m u ) ( s l t 的动态网页自动生成系统研究与实现 接是通过其接口实现的。负责集成的开发人员无需了解组件功能是如何实现的,只需 简单地创建组件对象并与其接口建立连接。在保证接口一致性的前提之下,可以调换 组件、更新版本,也可以把组件安插在不同的应用系统中。 组件运行效率高、便于使用和管理 因为组件是二进制代码,运行效率比a s p 脚本高很多。核心的商务逻辑计算任 务必须由组件来担纲,a s p 脚本只起组装的角色。而且组件在网络上的位置可被透明 分配,组件和使用它的程序能在同一进程中、不同进程中或不同机器上运行组件之 间是相互独立的,m t s 使对组件的管理更加简便。组件对象通过一个内部引用计数 器来管理它自己的生存期,这个计数器存放任何时候连接到该对象的客户数。当引用 计数变为0 时,对象可以把自己从内存中释放掉”一。 1 8 基于x m l x s l t 的动态孵页自动生成系统研究与实现第三章相关技术存代码生成中的应用 第三章相关技术在代码生成中的应用 构建代码生成器有两个基本问题:第一,代码生成的元数据的定义方法;第二, 用于代码生成的代码模板定义方法。因为元数据是代码生成器的输入,代码生成器的 转换规则可以利用模板来表现。在对构建代码生成器关键技术充分研究的基础上,本 章提出了针对该系统的技术路线;利用x m l 定义数据库表结构和利用x s l t 定义代 码模板。 3 1 利用x m l 定义表结构 3 1 1x m l 文档与关系数据库 从第二章的介绍可以知道,x m l 文档类似于树型分层结构,元素可以完全嵌套 在另一个元素中,且只有单个顶层元素即文档元素或根元素。因此,可以很容易使用 咀。定义分层结构文档。 x m l 对大型和复杂的文档是理想的,因为数据是结构化的。按x m l 文档中数 据结合的粒度、数据组织的耦合程度及其同构性特征,x m l 文档可以划分为两类: 一种是以数据为中心的结构化文档。这种文档在结构上是同构的,各种数据结合的粒 度较低,具有较少的混合内容和数据嵌套层次。另一种则以文档为中心的非结构化文 档。这种文档在结构上是无规则的,内容大体是异构、零散的,数据结合的粒度大, 具有较多的混合内容。目前数据都存储在数据库中,更确切的应该是存储在关系数据 库中,而关系数据库所表达的是一种完全结构化的数据,通过利用x m l 结构化文档 可以实现x m l 数据结构与关系数据模型间的一系列映射关系,把x m l 文档与关系 4 1 数据库技术结合起来。 3 1 2 表结构的定义 通过上节内容介绍,可以利用x m l 文档的分层结构特点实现对关系数据库的定 义与描述。 1 9 第三章相关技术在代码生成中的应用基于x m l x s l t 的动态嗣页自动生成系统研究与实现 关系数据库的数据模型是关系模型,是基于二维表结构的。数据被逻辑地放置于 由行和列构成的二维关系表中。列名用来表示数据的名称,行是描述数值的集合。关 系表的数据完整性主要遵从下面的规则:一个关系表( 即关系实体) 的主键必须是唯一 且非空的,外键必须等于其相关主键的值或为空。表间关系是复杂的网状关系,通过 n 蚋 主、外键得到了实现一。所以利用x 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 节 点树就可以得到对应表信息。下面以创建x m l 节点树来具体介绍如何运用x m l 定 义表结构。基本过程如下: ( 1 ) 建立根节点 首先需要为即将创建的x m l 节点树创建根节点,而要转换的数据都将成为根节 点的子节点( 包括子节点的子节点) ,或相关节点的属性节点。这也是创建x m l 文档 本身的要求。 ( 2 ) 将表转换为表节点 用x m l 节点表示关系数据库中的表,称此为表节点。它一般作为根节点的子节 点,并用表节点的属性节点标记表名。 ( 3 ) 将字段转换为字段节点 创建字段节点作为表节点的子节点,并用字段节点的属性节点标记字段的属性, 如字段名称、字段类型、字段描述等。 ( 4 ) 创建相关生成属性节点 该节点是字段节点的子节点,本文中该节点名为r e n d e r 。主要作用是用于描述字 段信息在生成页面中的设置。 聋 基于x m i j x s l t 的动态网页自动生成系统研究与实现第三章相关拄术在代码生成中的应用 通过以上步骤,数据库表结构经过x m l 定义的结构如下图3 1 所示: 图3 1x m l 树节点层次图 3 2 利用x s l t 定义代码模板 3 2 1x s l t 的作用 通过第二章的介绍可以知道x s l t 是一种定义样式表,对x m l 文档进行转换的 语言。x s l t 可以将x m l 文档转换成其它结构( 包括x m l 结构) 的文档,比如h t m l 文档、纯文本文档等等,在转换过程中,一般会对数据进行过滤、排序、计算等操作。 所以在将数据库表结构转换为x m l 文档后,可以通过使用x s l t 技术的特点并 且根据x m l 文档结构定义出系统所需的代码模板,然后可以通过该代码模板自动转 换x m l 文档输出系统所需目标源代码。 3 2 2 转换过程 使用以上技术原理,可以定义出使用x m l 定义的表结构作为数据输入的代码生 成器所需的代码模板,即x s l t 代码模板。它可以自动格式化x m l 文档,输出所需 的字符串也就是目标源代码。它的生成过程是首先将x m l 文档和x s l 转换文件通过 2 1 第三章相关技术在代码生成中的府用基于x m l x s l t 的动态罔页自动生成系统研究与实现 d o m 的处理,转换为各自的树型结构并保存在内存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年三基三严医师定期考核之抗菌药物试题(妇产科)
- 2026年内科护理学模拟考试题(附答案)
- 2026年全国生态日知识竞赛考试题库(含答案)
- 内部控制信息系统建设方案设计
- 2026年吉林省磐石市高一历史下册期末考试模拟卷含完整答案【夺冠】
- MySQL数据库技术与项目应用教程(微课版)(AI助学)(第3版)-教案 项目1-5 搭建数据库运行环境 - -优化检索网上商城系统数据
- 2025年河南省巩义市高三历史上册期末考试检测卷含完整答案【必刷】
- 【同步课件】2022年鲁科版(2019)高中化学必修二 3.2.1 化石燃料(乙烯) 课件
- 2026八大局面试题目及答案
- 2026安乡县事业编面试题目及答案
- 2026广东东莞市公安局茶山分局警务辅助人员招聘18人(第2批)笔试备考题库及答案解析
- 2026天津市政投资有限公司社会招聘2人考试参考题库及答案解析
- 医师处方权授予通知单
- AI驱动的Figma产品原型设计:从效率提升到协作革新
- 立卧复合加工中心-团体标准(征求意见稿)编制说明
- 中央纪委国家监委驻中国国家铁路集团有限公司招聘笔试题库2026
- 2026上海复旦大学发展研究院招聘上海全球南方研究院综合行政助理岗位2人笔试备考题库及答案解析
- (2025年)成都市金牛区社区专职网格员考试题库及答案
- 焊工理论知识考试题库及答案(300题)
- 2025年12月英语四级真题试卷(第1套)附答案
- 矿山井口封闭施工方案
评论
0/150
提交评论