XForms技术在RIA中的应用
概述
随着XML的广泛应用,RIA环境下客户端内容数据一般都采用XML格式作为其存储和数据交换的格式。这种格式的内容数据有其本身的结构和语义信息,因此数据也更复杂更难以处理。GUI XML规范为了解决这种RIA中普遍存在的问题,对内容数据处理提出如下要求:能够在XML格式的内容数据基础上定义内容数据模型,同时又不破坏原有内容数据的结构和语义信息。另一方面,面对RIA环境的特殊要求,在内容数据处理的基础上还需要增加一系列内容数据交互功能,例如,运行时数据的导入,网络传输,以及内容缓冲机制等。
HTML表单的出现在相当大的程度上促进了当今的电子商务革命。但其本身在很多方面仍然存在着设计和功能上的不足。其中最重要的一点是HTML表单将数据与用于表现这些数据的构件标签混杂在一起,违反了良好的标记语言设计的主要原则。另外,表单的可重性也较差,因为我们很难将需要重用的表单部分从HTML页面中抽取出来。这些缺陷限制了对客户端浏览器计算能力的充分利用,大量处理过程不得不依赖于远程服务器的计算能力,同时也对网络负载造成了压力。在RIA应用中亟待着一种能够替代HTML表单的新技术。
此时,W3C的XForms推荐标准应运而生。XForms可以看作是XHTML(一种符合 XML 格式的 HTML)
的扩展模块。与HTML表单的不同之处除了是基于XML语言之外,主要在于XForms实现了MVC设计模式,做到了数据模型、视图和控制器的分离。简化了表单设计的难度,使表单可重用性提高。另外一点不同之处在于虽然XForms是为XHTML语言设计的表单系统,但这并不影响该标准可方便地与其他合适的标记语言集成在一起。
229是什么意思考虑到XForms标准所具有的以上卓越的特点,我们在GUI XML的数据绑定模块与交互模块中部分地采用了XForms标准。本文在第二节中将具体介绍W3C制定的XForms 1.0推荐标准,然后在第三节中讲解GUI XML中XForms技术的应用。
XForms
被称为“下一代Web表单”的XForms最初起源于HTML工作组的工作。W3C组织力图将XForms制定成为HTML表单的替代标准,用于包括桌面电脑、手持设备、信息家电等领域在内的各种平台之上。传统的HTML Web表单没有将表单的设计目的和表现形式分离开来,表单设计的灵活性很低,同时客户端计算能力也无法充分利用。
为了克服以上缺点,XForms对表单进行了抽象定义,将表单区分为数据,逻辑和表现三方面。规范中没有规定实现细节,因此XForms处理器的实现形式是多样的。既可以基于浏览器嵌入HTML页面中,利用HTML和JavaScript进行表现;也可以用Java Swing应用程序等形式表现。另外XForms还为应用
提供了事件驱动模型,这使得用户可以像开发普通的GUI应用程序一样对鼠标、键盘等事件进行相应的编程。
XForms标准的成功之处就是将表单的作用和表现方式分离,由相互独立的部分分别负责描述。这使得XForms的表现方式更灵活。
z数据定义:XForms中的最重要的概念是XForms Model,即XForms模型。其中包
括对XML实例数据(instance data)的定义,用于表单收集数据。模型规定了表单
中能够使用的实例数据作为用户的输入请求。实例数据可以直接在模型中引用也可
以以链接形式引用外部XML文件。实例数据对应的模式信息可以进一步提供数据validdate
类型和合法性验证等约束。
第一次爱的人英语版
z逻辑定义:模型中还包括与特定表单和合法性验证行为相对应的操作的描述。在这一部分定义中设计者可以指定表单中值不能为空的区域,以及该值所需满足的条件
等。这样XForms处理器可以直接处理表现和用户交互等操作,而不必与远程服务
器进行实时交互,充分利用了客户端的计算资源。当然,XForms执行一些简单的
统计函数计算,例如,sum, avg, min, max,等也是得心应手的。
z表现定义:XForms提供了一组标准的UI可视化构件,称为XForms用户界面(XForms Ur Interface)。但对于构件的描述只提供了抽象概念,具体的实现
由XForms处理器来决定。这给XForms的使用留下了极大的灵活空间,推动了
XForms的实用化。例如,一个具有单选功能的构件,可以实现成一组单选按钮,
或者一个下拉列表,抑或适应于特定目标平台的表现形式。
上图说明了一个XML形式的设备无关的XForms模型定义,如何与多种形式的用户界面协同工作。XForms中定义的可视化构件已经可以在SVG等XML形式的语言中使用。同时,像V oice Browr工作组也在为XForms等开发用户界面构件。
以上所提到的数据、逻辑和表现各部分通过XForms提交协议(XForms Submit Protocol)连接起来。该协议定义了XForms如何接收和发送实例数据,以及如何挂起和恢复表单填写的过程。如下图所示:
XForms的设计目标包括:
z支持手持设备、电视、桌面浏览器,以及打印机和扫描仪等
z丰富的用户界面满足商务、消费和设备控制等各种应用
z消除数据、逻辑和表现之间的耦合
z增强的国际化功能
friday是什么意思z支持结构化表单数据
全国大学生四六级考试官网
z先进的表单逻辑
z单页面多表单,以及单表单多页面
z挂起和恢复功能的支持
z和XML标签集的无缝集成
作为一个示例,下图展示了一个简单的电子商务表单。首先需要选择是使用现钞还是使用信用卡。如果选择使用信用卡的话,需要输入卡号和有效期。
可以想象为了实现这一表单我们很难做到从表现(表单控件input)中分离表单作用(数据集合)。而在XForms中我们可以使用如下的定义。unison
首先定义XForms模型元素(如果使用XHTML作为宿主语言,我们通常需要将该段定义放在head部分)。该XForms模型定义用于收集三部分实例数据,分别位于method,number 和expiry元素中。与HTML表单类似,数据被提交到的URL由action属性指定。
<xforms:model>
<xforms:instance>
<ecommerce xmlns="">
<method/>
<number/>
illumina<expiry/>
</ecommerce>
</xforms:instance>
<xforms:submission action="/submit" method="post" id="submit" includenamespaceprefixes=""/>
</xforms:model>
其次表单所需要的表现构件用如下的设备无关,平台独立通用目的的方式定义如下:
<lect1 ref="method">
<label>Select Payment Method:</label>
<item>成人高考什么时候出成绩
<label>Cash</label>
<value>cash</value>
</item>
<item>
<label>Credit</label>
<value>cc</value>
</item>
</lect1>
<input ref="number">
<label>Credit Card Number:</label>
</input>
<input ref="expiry">
<label>Expiration Date:</label>
</input>
<submit submission="submit">
<label>Submit</label>
</submit>
由此可见,XForms的特点明显:
z没有硬编码痕迹(例如没有使用radio按钮这样的定义),不同设备可以按需绘制“lect one”这一构件类型。
z表现与用途明显分离。各自的作用明晰。在表现定义中可以通过构件的ref属性引用模型中的定义。
XForms规范于2003年10月成为W3C组织的推荐标准,目前版本为1.0。其1.1版本也正处于草案阶段。XForms标准参见www.w3/TR/xforms/,相关信息参见www.w3/MarkUp/Forms/。
除了在标准方面的逐步成熟外,一些大型用户社区正在兴起,特别是英国电子政务协作性框架称“目前
的指导意见是使用由W3C定义的 XForms 1.0 标准”(该文的第14页)。XForms工作小组包括了W3C成员和特邀专家,他们来自:Adobe、CWI、Cardiff、赫尔辛基科技大学、IBM、Mozquito Technologies、Novell、Oracle Corporation、Origo Services、PureEdge、SAP、Sun Microsystems、Mozilla以及 x-port Ltd。工业界、开源组织也纷纷推出了支持XForms标准的实现,以及XForms编辑器。
XForms实现技术可分为:纯客户机端实现(如FormsPlayer)、纯服务器端实现(如XMLForm)、以及客户机-服务器模式(DataMovil)。也可以分为浏览器插件形式(如FormsPlayer),独立XForms浏览器形式(如X-Smiles),以及开源软件包形式(如Chiba
project)。根据实现语言又可分为:基于脚本语言(XHTML、CSS、XSL、JavaScript等,甚至流行的Ajax技术)和基于编程语言(Java等)。
XForms和GUI XML
GUI XML是一种用于描述图形化用户界面构造过程所需应用逻辑的语言,其描述的界面具有设备独立性模式。这里所说的"设备",意味着个人计算机、多种信息应用设备(例如手持式电脑、桌面电话、蜂窝式电话和PCS 电话),以及其他人类可以与之交互的设备。GUI XML是一种说明性的、符合XML 规范的语言。
为了开发一个用户界面,设计者需要编写一个GUI XML文档,其中包含了适用于最终使用此用户界面的设备的表示风格信息。之后GUI XML将被使用特定的编程语言工具包完成用户界面的构造(例如JFC、SWT 等),或者自动映射为目标设备所使用的语言(例如HTML、WML)。其设计目标如下:
z使得设计者不需要学习针对特定设备的语言和API 就可以设计出符合设备要求的UI;
z缩短针对一系列不同设计开发用户界面的时间;
z提供了将UI 代码与应用逻辑代码相分离的特性;2016考研英语
z使得非程序员能够设计UI;
引入英文z简化国际化和本地化的工作量;
z实现了通过网络将UI 下载到客户端的高效;
z有助于强化安全性;
z实现了对支撑UI 技术的扩展。
显然GUI XML是实现RIA的一个强大工具。与XForms标准在某些方面具有共同之处。因此在GUI XML
1.1规范的设计过程中,设计者对于XForms标准给予了充分的重视。最终在该版本的GUI XML中引入了基于XForms标准的数据模型定义模块。
总结
W3C制定的XForms标准为新一代的RIA应用提供了强大的支持。基于XForms标准的GUI XML 1.1版本充分利用了这一特点,成功地实现了内容与表现的分离,以及内容数据模型的建立和维护。