(计算机应用技术专业论文)基于xquery的网页编程语言的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于xquery的网页编程语言的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于xquery的网页编程语言的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于xquery的网页编程语言的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于xquery的网页编程语言的设计与实现.pdf_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

摘要 摘要 随着网络时代的到来,互联网已经成为了一个重要的信息处理平台。如何在 互联网上更加快捷、方便地交互和处理数据已经成为开发人员和用户的共同愿 望。当今x m l 已经成为i n t e m e t 上信息传输和数据交换的实际标准。x q u e r y 语 言作为标准的x m l 查询语言,在查询、操作x m l 数据方面具备独特的优势, 因此其不仅可以应用于数据查询领域,同时有望通过功能扩展,发展成为更加强 大的网络开发工具。 当前,x q u e r y 在网页编程领域的应用,往往需要借助其他宿主语言来实现。 本文提出了一种基于x q u e r y 的网页编程语言:x q p a g e ,通过扩展对浏览器端文 档对象模型的支持、增加对于文档对象的更新功能、支持页面事件响应机制、增 加对于外部资源的调用功能等设计并实现了一种基于x q u e r y 文法构造网页和编 写页面事件脚本的网页编程语言。同时本课题还开发了一套x q p a g e 语言处理系 统,从而使得通用浏览器可以浏览使用x q p a g e 语言编写的网页。 x q p a g e 语言具备x q u e r y 语言在操作和查询x m l 数据方面的独特优势,可 以更加直观、便捷地构造页面和编写页面事件脚本,更加高效地操作外部x m l 资源,并且具有说明型语言特有的抽象描述能力。因此,x q p a g e 为网页设计者 提供了一个更加简洁、高效、规范的网页编程语言,并有望在相当大的程度上代 替j a v a s c r i p t 和v b s c r i p t 等过程型编程语言,为网络编程人员提供更加简单易用 的开发工具和开发方法。 关键词x m l ;x q u e r y ;网页编程 a b s t r a c t a b s tr a c t i nw e be r a , h l t e r n e th a sb e c o m ea ne x t e n s i v ep l a t f o r mf o ri n f o r m a t i o ni n t e r a c t i o n i t i st h ec o m m o nd e s i r ef o rb o t hd e v e l o p e ra n du s e rt o t r a n s f e ra n dp r o c e s s i n f o r m a t i o ni nam o r ee f f i c i e n tw a y w i t hx m lh a sb e c o m i n gaw i d e s p r e a dd a t a e n c o d i n gf o r m a tf o rw e ba p p l i c a t i o n ,i n t e g r a t i n gn a t i v ex m lp r o c e s s i n gm e t h o di n t h e s ep r o g r a m m i n ga r e a si se x t r e m e l yi m p o r t a n t x q u e r y , a st h eq u e r yl a n g u a g eo f x m l ,w h i c hh a sb e e nb r o a d l ya c c e p t e db yi n d u s t r ya n db e c o m et h ew 3 cs t a n d a r d , h a so b v i o u sa d v a n t a g e si np r o c e s s i n gx m ld a t a t h e r e f o r e ,b e s i d e su s i n gx q u e r yf o r d a t ai n q u i r y , i ta l s oc a l lb ed e v d o p e dt oam o r ep o w e r f u ll a n g u a g ef o rw e b p a g e d e s i g na n dn e t w o r kd e v e l o p m e n tb yf u n c t i o ne x t e n s i o n t h ep a p e rp r o p o s e san e ww e b p a g ep r o g r a m m i n gl a n g u a g et h a ti sb a s e do n x q u e r y :x q p a g e i ta u g m e n t st h ea b i l i t i e so fx q u e r yt os u p p o r tt h ed o c u m e n t o b j e c tm o d e li nb r o w s e r , t os u p p o r tt h ed o c u m e n to b j e c tm o d e le v e n tt h r o u g h e x t e n d i n gt h eu p d a t i n gf a c i l i t yo fx q u e r y , a n dt oi n v o k ee x t e r n a lr e s o u r c e si nx m l f o r m a tt oc o n s t r u c tt h ew e b p a g ea n dr e s p o n dt h ew e b p a g ee v e n t i nc o n t r a s tt ot h e t r a d i t i o n a lw a y su s i n gx q u e r yi nw e b p a g ec u r r e n t l y , i td o e sn o tn e e da n yh o s t l a n g u a g ea n dc a nb ed i r e c t l ya p p l i e di nw e b p a g ed e s i g n i te n a b l e sd e v e l o p e r st o c o n s t r u c t ,m o d i f ya n do p e r a t ew e b p a g ei n n a t i v ex m lp r o c e s s i n gl a n g u a g e m e a n w h i l e ,t h i sp r o j e c ta l s oi m p l e m e n t sa nx q p a g el a n g u a g ep r o c e s s i n gs y s t e mt o e n a b l et h ec o m m o nb r o w s e rt ob r o w s et h ew e b p a g ed e s i g n e di nx q p a g e x q p a g e ,w h i c hi n h e r i t s t h ed e c l a r a t i v en a t u r eo fx q u e r y , h a sp o w e r f u l a b s t r a c t i v ed e s c r i p t i o na b i l i t y s oi ti sm o r es i m p l e ,i n t u i t i v e ,a n de f f e c t i v ef o r d e v e l o p e rt oc o n s t r u c tw e b p a g eo rd e s c r i b et h er e s p o n s ef u n c t i o nf o rw e b p a g e e v e n t t h e r e f o r e ,x q p a g ep r o v i d e sap o t e n t i a lt e c h n i q u ef o rs u b s t i t u t i n gp r o c e d u r e - o r i e n t e d l a n g u a g e s u c ha s j a v a s c f i p t ,v b s c r i p t i nt h e w e b p a g ep r o g r a m m i n g t h e d e m o n s t r a t i o ni l l u s t r a t e st h a ti ti sf l e x i b l e ,e f f i c i e n t ,e a s yt ou s ea n dc a nm e e tt h e r e q u i r e m e n to fm o s tw e b p a g ep r o g r a m m i n g k e y w o r d sx m l ;x q u e r y ;w e b p a g ep r o g r a m m i n g 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:日期:砂l o 矿日期:! ! ! 扩 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:二数导师签名: 第1 章绪论 1 1 课题背景 1 1 1x m l 与x o u e r y 第1 章绪论 随着网络时代的来临,网络传输的信息量不仅庞大而且信息的模式多种多 样。为了能够充分和有效地表示w e b 网络上丰富的数据,种兼具可扩展性及 灵活性的通用数据传输格式一一可扩展标记语言( x m l ,e x t e n s i b l em a r k u p l a n g u a g e ) n 1 应运而生。由于x m l 适合网络应用的需要,因此在当今越来越多 的应用领域中,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 ) 的中文译名是“可扩展标记语言 。w 3 c 的x m l 工作组于1 9 9 8 年2 月正式推出了x m l1 0 版本。x m l 具有一些被公认 的优点:纯文本表示,具有平台无关性,信息的内容与信息的表示是分开的,能 够满足各种不同的应用需求等。x m l 另一个巨大优势就是其具备自描述性,通 过x m l 文件的d t d ( d o c u m e n tt y p ed e c l a r a t i o n 文档类型声明) 或x m l s c h e m a 就可以定义数据集的结构信息瞄1 。 x m l 作为一种文档标记语言,已被广泛接受和使用,各大软件生产商特别 是数据库生产商纷纷把支持x m l 作为一个重要的发展方向口1 。 由于x m l 能够根据具体应用灵活地表现异构数据源中的各种信息,包括应 用程序之间的数据交换、结构化和半结构化的文档以及数据库中数据的输出,越 来越多的应用系统开始采用x m l 进行信息的存储、交换和表现。因而开发人员 迫切需要一种灵活易用、针对x m l 数据源的查询语言,该语言能够高效地存取 x m l 信息,并能够提供跨越不同数据源的基于x m l 信息的查询检索能力。 虽然x s l t 和x p a t h 可以在一定程度上满足上述需求,但是其书写的复杂程 度和功能的不完善使其远远不能达到人们的要求。人们需要的是一种类似于s q l 语言的、简单且易于编写的x m l 数据查询语言。因此,w 3 c 的x m l 查询工作 组制定出了x m l 查询语言规范- x q u e 珂1 0 h 1 。 x q u e r y ,6 1 是x m lq u e r y 的缩写。x q u e r y 是一种基于x m l 的功能强大的数 据查询语言,适用于查询各种类型的x m l 数据源,它能够从x m l 文档中选择 并提取数据,进而把查询结果重构为用户所需的新的x m l 文档。因为s q l 语言 是对建立在关系代数基础上的数据表进行操作的语言,而x q u e r y 则是对建立在 北京t 业大学1 二学硕士学位论文 x q u e r y1 0 和x _ p a t h2 0 数据模型( x d m 盯3 ) 上的x m l 数据进行查询的语言, 所以x q u e r y 极有可能成为“x m l 中的s q l ”。x q u e r y 是x p a t h 的- - z o o 扩展, 但与x p a t h 不同的是,x q u e r y 提供了程序设计功能和一系列的数据类型。x q u e r y 汲取了多种查询语言的精华,体现出多种查询语言的优点。x q u e r y 设计优良、 使用灵活,可以预计,x q u e r y 相关技术的不断成熟和发展将会对x m l 的应用 产生巨大的影响。 1 1 2x o u e r y 更新功能规范 相对于关系数据库和s q l 语言来说,目前作为w 3 c 推荐标准的x q u e r y1 0 提供了对于x m l 文档的查询和构造功能。但作为一种数据操作语言,x q u e r y 语言仍需要具备对数据的更新功能。例如,s q l 语言就提供了对于关系数据库 的插入( i n s e r t ) ,删除( d e l e t e ) ,修改( u p d a t e ) 等更新功能。因此,w 3 c 组织 提出了x q u e r y 更新功能规范随】。 x q u e r y 更新功能规范1 0 所提供的对于x q u e r y l 0 的扩展主要包括以下方 面: 1 更新功能规范提供了多个新的表达式,包括:插入( i n s e r t ) ,删除( d e l e t e ) , 替换( r e p l a c e ) ,重命名( r e n a m e ) 等,并且规定了这些表达式的语法和 语义规则。 2 更新功能规范将表达式划分为以下几种新的类型:更新表达式、普通表 达式、空表达式。 3 更新功能规范定义了每种类型的表达式可以使用的位置。因此,对于 x q u e r y l 0 中存在的表达式做了语法和语义上的相应扩展。 基于上述扩展,该规范提供了对于x m l 文档实例执行以下任意一个或多个 操作: 插入节点( 或节点序列) ; 删除节点( 或节点序列) ; 在保持其他节点特征( 包括节点内容和节点属性) 的情况下来修改节点特征; 因此,该规范使得x q u e r y 语言具备了对于x m l 文档对象的更新功能,可 以用于对x m l 对象的持久修改。 1 1 3x o u e r y 相关扩展研究 在x q u e r y 语言的下列相关研究中,人们正在通过对其语言功能的扩展来适 应不同的应用需求,以求在w e b 软件开发的不同领域发挥其抽象描述能力强等 2 第1 章绪论 特点d 1 。 x q u e r y p n 引:该研究在x q u e r y 语言及其更新功能规范的基础上扩展了过程 型语言的特征,使其在支持函数式程序设计范型的同时,亦能支持过程型程序设 计范型。 b e a 公司开发的x q s e 系统n n 和x q u e r y p 相似,增加了过程型语言的功能, 力求将x q u e r y 语言发展为通用程序设计语言。 d x q n 羽则是基于x q u e r y 更新功能和x q u e r y p 所进行的分布式计算功能扩 展,能够支持分布式应用程序的开发,允许以同步或异步的方式调用远端的d x q 程序,并且可以传递d x q 程序到远程服务器上执行。 x q u e r y d n 钉是基于x o u e r y 的分布式查询扩展,通过增加新的e x e c u t e 表达 式,支持分布式数据查询的优化,允许将子查询命令传递到指定的服务器中执行。 上述工作主要是为x q u e r y 语言增加过程型语言的功能或实现分布式查询功 能扩展,从而在不同的领域发挥x q u e r y 对于x m l 数据处理的抽象描述能力。 1 2 研究目的与意义 网页编程语言的分类如下表所示。 表1 - 1 网页编程语言与标准n 4 1 t a b l e1 - iw e b p a g ep r o g r a m m i n gl a n g u a g e sa n ds t a n d a r d 网页编程语言与标准 文档描述语言 h t m l 一x h t m l x m l 。x f o r m s 一d h t m l 样式描述语言 c s s 一x s l 客户端脚本语言 j a v a s c r i p t v b s c r i p t - e c m a s c r i p t - a c t i o n s c r i p t 动态网页设计语言 c g i a s p a s p n e t - j s p p h p r u b yo nr a i l s 。由w 3 c 制定和维护的标准与规范 目前的网页编程语言主要包括文档描述语言、样式描述语言、客户端脚本语 言、以及动态网页设计语言: 其中,目前所使用的脚本语言( 如j a v a s c r i p t ,v b s c r i p t ) 大多是针对早期 的h t m l 语言设计的脚本语言。虽然目前已经得到了广泛的应用,然而在很多 方面存在着明显的不足,这些不足包括: 1 对于x m l 数据的支持不够 目前使用的脚本语言都是针对浏览器端所设计的程序设计语言,并非原生的 x m l 数据操作语言。随着x h t m l 网页的不断推广n 铲1 7 1 ,以及网页设计与各种 网络服务的不断结合,传统的脚本语言在查询、操作x m l 数据方面显露出越来 越多的不足。 2 跨浏览器的兼容性差 3 北京工业大学工学硕j 二学位论文 各大浏览器厂商出于自身利益的考虑,采用不同的脚本语言标准,并对各种 脚本语言做了不同程度的扩展。这就使得网页设计者在设计网页时,不得不考虑 不同浏览器的标准和实现方案。这不仅大大降低了网页设计者的开发效率,而且 造成代码冗余,执行效率降低。 3 需要多种语言相互配合 目前对于x q u e r y 语言在网页开发领域的扩展,大都是通过将x q u e r y 嵌入 其他网页开发语言来实现的。但由于宿主语言的类型系统并不是基于x m l 设计 的,因此会导致比较严重的不匹配的情况。同时,设计者还不得不学习多种语言 来完成相应的网页开发。 因此,本文提出了一种基于x q u e r y 的网页编程语言:x q p a g e 。该语言支持 对于浏览器端d o m 对象的操作n 引,通过对x q u e r y 的更新功能扩展,使其可以 作为网页脚本语言编写事件脚本,响应页面事件;同时,通过x q u e r y 语言的文 档构造功能,x q p a g e 还可以作为文档描述语言,完成对于x h t m l 网页的构造; 此外,由于具备外部资源加载功能,x q p a g e 语言还能够实现基于外部资源的实 时网页构造和页面事件响应,因此可以在一定程度上实现动态网页效果。综上所 述,x q p a g e 语言在网页编程语言中所涵盖的范畴如下图所示: c s s 样式描述语言 () 图1 1x q p a g e 语言在网页编程语言中所涵盖的范畴 f i g u r e1 - 1d o m a i no f t h ex q p a g ei nw e b p a g ep r o g r a m i n gl a n g u a g e x q p a g e 语言具备x q u e r y 语言在操作和查询x m l 数据方面的独特优势,可 以更加直观、便捷地构造页面和编写页面事件脚本,更加高效地操作外部x m l 资源,并且该语言还具备说明型语言特有的抽象描述能力,可以为网页设计者提 供一个更加简洁、高效、规范的网页编程解决方案。 4 第1 章绪论 1 3 课题来源 本研究得到北京市自然科学基金( 项目编号:4 0 8 2 0 0 3 ) 的支持。 1 4 本文工作 本文主要论述了x q p a g e 语言的设计与实现。具体工作内容如下: 1 通过对x q u e r y 语言的扩展,设计一个新的网页编程语言:x q p a g e : 2 实现x q p a g e 语言的语法分析器和翻译程序; 3 设计和实现用于通用浏览器的x q p a g e 页面支撑框架; 4 扩展了x q p a g e 语言的功能,实现基于a j a x 技术的外部资源调用机制。 1 5 本文结构 本文的内容组织如下: 第1 章绪论。主要介绍课题的背景,来源,x q p a g e 网页编程语言的研究 目的和意义,以及本文的内容和结构。 第2 章x q p a g e 语言设计。主要介绍x q p a g e 语言在x q u e r y 语言基础上所 做的扩展设计:包括页面对象的表示方法,基于x q u e r y 更新功能规范的更新功 能扩展,对于d o m 对象方法的支持,对网页事件模型的支持以及对外部资源调 用的支持。 第3 章x q p a g e 语言处理系统。主要从整体上介绍了x q p a g e 语言处理系统 的设计思想和设计思路,之后通过实例说明了x q p a g e 网页的设计规范和基本结 构,然后论述了x q p a g e 网页实现的基本原理和系统整体的实现流程。 第4 章预处理阶段的设计与实现。主要论述x q p a g e 语言处理系统在预处 理阶段的设计和实现方式,包括x q p a g e 语法分析器和x q p a g e 翻译程序的设计 与实现,同时还介绍了系统在预处理阶段所采用的优化策略。 第5 章浏览器支撑框架的设计与实现。主要论述了x q p a g e 语言处理系统 中浏览器端支撑框架的设计思路和实现方式,并且结合实例介绍了支撑框架的基 本构成和页面事件的响应流程。 第6 章基于a j a x 技术的外部资源加载方法。这一章主要论述了x q p a g e 语 言中基于a j a x 技术的外部资源加载方法。这一章首先介绍了目前获得广泛应用 的w e b 服务和a j a x 技术,然后介绍了x q p a g e 中所提供的外部x m l 资源加载 函数,并且详细说明了资源加载函数在预处理阶段的翻译方法,以及在支撑框架 中的实现方式。 5 北京工业大学工学倾二卜学佗论文 第7 章测试。这一章首先引入了一个图书列表的x q p a g e 网页作为测试用 例,并且通过x q p a g e 语言处理系统对于该页面的处理过程,展示了系统的执行 流程和执行效果。然后,这一章通过测试x q p a g e 页面在浏览器端的执行速度, 来测试浏览器支撑框架的执行性能。 6 第2 章x q p a g e 语言设计 第2 章x o p a g e 语言设计 2 1 x o p a g e 语言设计思想 x q u e r y1 0 作为w 3 c 的推荐标准提供了对于x m l 数据的查询功能和x m l 文档构造功能。然而,要作为网页编程语言使用,x q u e r y 语言目前所具备的功 能是远远不够的。 因此,作为基于x q u e r y 的网页编程语言,x q p a g e 语言要在多个方面进行 扩展,才能够完整地支持网页编程,这些扩展包括: 1 提供页面对象表示方法:通过新增的页面对象表示方法,提供对于页面 文档对象或页面元素的获取方法。 2 增加更新操作功能:通过语言的更新功能扩展和对页面d o m 对象方法 的支持,实现对于页面文档对象的更新功能。 3 支持事件触发机制:通过支持网页事件模型n 9 1 ,实现事件处理函数与对 应页面事件的关联。 4 提供外部资源访问方法:通过调用外部x m l 资源,实现动态的外部数 据加载。 综上所述,x q p a g e 语言的设计基于x q u e r y1 0 规范,并参考w 3 c 的文档 对象模型( d o m ) 和x q u e r y 更新功能规范1 0 ,通过为x q u e r y 语言增加对于 页面d o m 对象的表示方法,扩展更新表达式,扩展对于网页d o m 对象方法的 支持,扩展对网页事件模型的支持,以及增加对于外部资源的调用功能等方式实 现对于网页编程的完整支持。 2 2 页面对象的表示方法 在网页设计中,x h t m l 页面实际上就是一个x m l 文档实例。因此对于网 页d o m 对象的操作,可以看作是对一个x m l 对象的操作。为了能够操作d o m 对象,首先需要提供对于当前页面d o m 对象的引用方式,x q p a g e 提供了以下 两种方法: 2 2 1 内置函数x q p :d o m ( ) x q p a g e 语言中,内置函数x q p :d o m ( ) 提供了对于页面d o m 文档对象的引 用。其中x q p 代表x q p a g e 命名空间。网页设计者可以通过这个函数获取表示为 7 北京工业大学- t 学硕十学位论文 x m l 实例形式的页面d o m 文档对象。鉴于x q u e r y 语言对于x p a t h 表达式的支 持,x q p a g e 可以使用其强大的节点表示、定位和筛选能力,通过节点在d o m 文档对象中的位置来引用一个节点,或是使用谓词,根据节点特征来选择页面元 素。例如: x q p :d o m ( ) h e a d t i t l e 表示页面文档中 元素节点内的 元素节点; x q p :d o m o 咆i d = a b c 表示页面文档中i d 属性为a b e 的元素节点。 显然,使用x p a t h 表示和定位页面节点要比传统的j a v a s c r i p t 表示方式更加 直观和便捷。 2 2 2 上下文表达式” x q p a g e 语言还提供了一种针对页面d o m 文档中节点对象的引用方式。在 事件句柄中,可以使用扩展的上下文表达式”来表示事件句柄所在节点。x q u e r y 语言中上下文节点表达式”表示当前处理项。x q p a g e 语言对该表达式的语义做 了扩展,该表达式在事件句柄中作为参数使用,表示对事件句柄所在元素的引用。 它相当于j a v a s c r i p t 语言中事件句柄里使用的参数”t h i s ”。该表达式应用的实例见 2 5 节。这一扩展使得网页设计者在定义事件响应函数时可以直接引用产生事件 的页面元素。 2 3 更新功能扩展 目前,作为w 3 c 推荐标准的x q u e r y1 o 提供了对于x m l 数据的查询功能 和x m l 文档构造功能。然而,作为一种数据操作语言,x q u e r y 语言仍需要具 备对数据的更新功能。其功能类似与s q l 语言的插入( i n s e r t ) ,删除( d e l e t e ) , 修改( u p d a t e ) 等。因此,w 3 c 组织提出了x q u e r y 更新功能规范。为了完整地 支持网页编程,使得x q p a g e 能够实现对于页面文档的各种操作,x q p a g e 语言 参照该更新功能规范,提供了一系列新的表达式,从而实现对于浏览器端文档对 象模型的持久修改。 2 3 1 更新表达式定义 x q p a g e 参照x q u e r y 更新功能规范中的定义,x q u e r y 更新功能规范1 0 将 表达式划分为以下几种新的类型: a 基本更新表达式是指一个插入、删除、替换、重命名表达式,或一个更 8 第2 章x q p a g e 语言设计 新函数调用。 b 更新表达式是指一个表达式包括了基本更新表达式或任何直接包括了更 新表达式的表达式。( 该定义是递归的) c 普通表达式是指任何一个不是更新表达式的表达式。 d 空表达式是指一个只返回空系列或引起错误的表达式。 在x q p a g e 中,基本更新表达式包括四种新的表达式:即插入、删除、替换 和重命名表达式,它们的语法和语义定义如下。 2 3 2 插入表达式 i n s e r t e x p r := ”i n s e r t ”( ”n o d e ”l ”n o d e s ”) s o u r c e e x p rt a r g e t c h o i c e t a r g e t e x p r t a r g e t c h o i c e := ( ( ”a s ”( ”f i r s t ”1 - l a s t ”) ) ? ”i n t o ”) l l - a f f e r 。1 b e f o r e ” s o u r c e e x p r := e x p r s i n g l e t a r g e t e x p r := e x p r s i n g l e 一个插入表达式( i n s e r t e x p r ) 是一个更新表达式,它插入0 个或多个节点 ( s o u r c e e x p r ) 的拷贝到目标节点( t a r g e t e x p r ) 所指定的位置。无论实际上插 入几个节点,关键词n o d e 和n o d e s 可以替换使用。插入节点的位置如下文所述: 若指定为b e f o r e ( 或a 丘e r ) :则插入节点成为目标节点的前继( 或后继) 节点; 若指定为a sf i r s ti n t o ( 或a sf i r s ti n t o ) :则插入的节点成为目标节点的第一个 ( 或最后一个) 子节点; 若指定为i n t o 没有a sf i r s t 或a sf i r s t :则插入的节点成为目标节点的最后一 个子节点。 在插入操作中,若在一个插入表达式中插入多个节点,则这些节点保持原有 的相邻关系和先后次序; 若在一个函数调用中,多个插入表达式插入了多组节点,则每组节点保持原 有的相邻关系和先后次序,每组节点之间的先后顺序由插入表达式在函数体中的 出现顺序决定。 插入表达式中的s o u r c e e x p r 表达式和t a r g e t e x p r 表达式的语义约束如下: s o u r c e e x p r 表达式必须是一个普通表达式,其结果应是要插入的节点序列, 该节点序列中若包含属性节点,则该序列中的每个元素都必须是属性节点。 t a r g e t e x p r 表达式必须是一个普通表达式,其结果不能为空序列。若插入位 置指定为任何形式的i n t o ,则其结果必须是唯一的元素节点;若插入位置指定为 b e f o r e 或a f t e r ,则其结果必须是唯一的元素节点、文本节点或属性节点,且该节 点的父亲节点不能为空。 9 北京工业大学工学硕士学位论文 2 3 3 删除表达式 d e l e t e e x p r := ”d e l e t e ”( ”n o d e ”l i i n o d e s ”) t a r g e t e x p r t a r g e t e x p r := e x p r s i n g l e 一个删除表达式( d e l e t e e x p r ) 表示从x m l 文档实例中删除o 个或多个节 点( t a r g e t e x p r ) 。无论实际上删除几个节点,关键词n o d e 和n o d e s 可以替换使 用。一个删除表达式是一个更新表达式。 删除表达式中的t a r g e t e x p r 表达式语义约束如下: t a r g e t e x p r 表达式必须为普通表达式,其结果应为0 个或多个节点序列,且 每个序列元素的父亲节点不能为空。 2 3 4 替换表达式 r e p i a c e e p r := ”r e p l a c e ”( ”v a l u e o f ) ? ”n o d e ”t a r g e t e x p r ”w i t h ”e x p r s i n g l e t a r g e t e x p r := e x p r s i n g l e 替换表达式( r e p l a c e e x p r ) 是一个更新表达式。替换表达式有两种形式, 是否有关键词v a l u eo f 决定了替换表达式是否为替换值操作。 2 3 4 1 替换节点 如果没有指定关键词v a l u eo f , 替换表达式表示使用o 个或多个元素组成的 节点序列( e x p r s i n g l e ) 替换一个节点( t a r g e t e x p r ) 。替换后的节点占有原节点 所在的位置。因此,一个属性节点只能被0 个或多个属性节点替代;一个元素或 文本节点只能被0 个或多个元素或文本节点替代。 该类型表达式的语义约束如下: w i t h 后的e x p r s i n g l e 表达式必须为普通表达式; t a r g e t e x p r 表达式必须为普通表达式,其求值结果应该是一个单一的元素节 点、属性节点或文本节点,且该节点的父节点不应为空。 若t a r g e t e x p r 表达式的求值结果是元素节点或文本节点,则s i n g l e e x p r 表达 式的求值结果应为o 个或多个元素节点或文本节点组成的序列。 若t a r g e t e x p r 表达式的求值结果是属性节点,则s i n g l e e x p r 表达式的求值结 果应为0 个或多个属性节点组成的序列。 2 3 4 2 替换节点值 如果指定了关键词v a l u eo f , 则替换表达式用于在保留节点( t a r g e t e x p r ) 特 征的同时修改节点值( e x p r s i n g l e ) 。 该类型表达式的语义约束如下: 1 0 第2 章x q p a g e 语言设计 w i m 后的e x p r s i n g l e 表达式必须为普通表达式,其求值结果应该为文本值或 空: t a r g e t e x p r 表达式必须为普通表达式,其求值结果不应为空,而应是一个单 一的元素节点、属性节点或文本节点。 若t a r g e t e x p r 表达式的求值结果是一个元素节点,则替换表达式使用 s i n g l e e x p r 表达式的求值结果( 文本节点) 替换该元素节点的所有元素子节点, 该节点的属性保持不变。 若t a r g e t e x p r 表达式的求值结果是一个属性节点或文本节点,则替换表达式 使用s i n g l e e x p r 表达式的求值结果( 文本值) 替换该属性节点或文本节点的文本 值。 2 3 5 重命名表达式 r e n a m e e x p r := ”r e n a m e ”n o d e ”t a r g e t e x p r ”a s ”n e w n a m e e x p r t a r g e t e x p r :- - - e x p r s i n g l e n e w n a m e e x p r := e x p r s i n g l e 重命名表达式( r e n a m e e x p r ) 使用新的名字( n e w n a m e e x p r ) 替换原节点 ( t a r g e t e x p r ) 的节点名称。重命名表达式是更新表达式。 重命名表达式的语义约束如下: t a r g e t e x p r 表达式必须为普通表达式,其求值结果不应为空,而应是一个单 一的元素节点或属性节点。 n e w n a m e e x p r 表达式必须为普通表达式,其求值结果应为文本值。 重命名表达式对于节点的修改还应符合x h t m l 规范的定义。 综上所述,以上所有的基本更新表达式中, e x p r s i n g l e 表达式是w 3 c 的 x q u e r y l 0 规范所定义的表达式。 在x q p a g e 语言中,上述更新表达式用于描述针对网页d o m 对象的更新操 作。通过这些更新表达式,x q p a g e 语言具备了动态修改网页内容和网页结构的 能力。例如: t e t $ p i c :2x q p :d o m o 博l t d = p 记t 1 s t i t l e ? = n e wt i t l e 7 r e t u r nr e p l a c ev a l u eo f n o d e $ p i c t i t l ew i t h $ t i t l e 用于将页面文档对象中属性i d 为p i c 的对象的t i t l e 属性修改为变量$ t i t l e 绑 定的值: n e wt i t l e 。 北京t 业大学工学硕士学位论文 2 3 6 更新语义 x q p a g e 中上述更新表达式在文法上遵照了w 3 c 的x q u e r y 更新功能规范, 但在更新语义上有以下区别: ( 1 ) 更新操作次序 w 3 c 的x q u e r y 更新功能规范中规定,每个表达式的计算将返回一个更新指 令序列,序列合并后,不同类型的更新操作按照更新功能规范指定的特定顺序执 行,而x q p a g e 规定更新操作按照每个操作在表达式树结构中的出现顺序依次执 行。 ( 2 ) 更新操作的触发机制 对于一组更新操作,w 3 c 的x q u e r y 更新功能是以快照为单位执行的;通常 以一个x q u e r y 查询为一个快照,也就是在查询结束后,完成更新指令序列中的 所有更新;而在x q p a g e 中,由于更新操作以函数调用的方式响应页面事件,因 此规定以事件响应函数为一个快照,即完成响应函数的调用后,立即执行该函数 返回的所有更新操作。 2 3 7 原有表达式的扩展 由于增加了上述更新表达式,x q p a g e 对于x q u e r y 原有表达式进行了相应 的扩展,这些扩展包括: 2 3 7 1 e x p r s i n g i e 表达式 e x p r s i n g l e := f l w o r e x p r iq u a n t i f i e de x p r it y p e s w i t c he x p r ii f e x p r io r e x p r li n s e r t e x p r id e l e t e e x p r ir e n a m e e x p r ir e p l a c e e x p r x q p a g e 语言在x q u e r y l 0 的基础上为e x p r s i n g l e 表达式的产生式增加了4 个新的分支,即上文所述的插入,删除,替换和重命名表达式。 2 3 7 2f l w o r 表达式 x q p a g e 中,f l w o r 表达式的语法与x q u e r y 中f l w o r 表达式的语法一致, 语义上做了以下扩展: 1 2 第2 覃x q p a g e 语言设计 1 f o r , l e t ,w h e r e 或o r d e rb y 语句中不能包含更新表达式; 2 r e t u r n 表达式可以是2 3 1 中定义的任意类型表达式;r e t u r n 表达式的类型 决定了该f l w o r 表达式的类型( 普通表达式,空表达式,或更新表达式) 。 2 3 7 3t y p e s w i t c h 表达式 x q p a g e 中,t y p e s w i t c h 表达式的语法与x q u e r y 中t y p e s w i t c h 表达式的语 法一致,语义上做了以下扩展: 类型判定表达式不能为更新表达式; 若任何一个c a s e 或d e f a u l t 分支子句是更新表达式,则所有的分支子句必须 都是更新表达式或空表达式,在这种情况下,该t y p e s w i t c h 表达式是更新表达 式: 若所有的c a s e 和d e f a u l t 分支子句都是空表达式,则该t y p e s w i t c h 表达式是 空表达式; 否则该t y p e s w i t c h 表达式是普通表达式。 2 3 7 4 条件表达式 x q p a g e 中,条件表达式的语义扩展如下: 条件判定表达式不能为更新表达式; 若任何一个选择分支子句是更新表达式,则两个分支子句必须都是更新表达 式或空表达式,在这种情况下,该条件表达式是更新表达式; 若t h e n 和e l s e 分支子旬都是空表达式,则该条件表达式是空表达式; 否则该条件表达式是普通表达式。 2 3 7 5 逗号表达式 x q u e r y 中,逗号表达式是使用逗号操作符连接的一个或多个表达式,在 x q p a g e 中,其语义扩展如下: 若逗号表达式中的任意一项是更新表达式,则该表达式中所有项必须都是更 新表达式或空表达式,在这种情况下,该逗号表达式是更新表达式; 若逗号表达式中所有项都是空表达式,则该逗号表达式是空表达式; 否则该逗号表达式是普通表达式。 2 3 7 6 括号表达式

温馨提示

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

评论

0/150

提交评论