【XForms技术在RIA中的应用】量子技术生活中应用
W3C制定的XForms标准为新一代的RIA应用提供了强大的支持。基于XForms标准的GUIXML 1.1版本充分利用了这一特点,成功地实现了内容与表现的分离,以及内容数据模型的建立和维护。
随着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语言设计的表单系统,但这并不影响该标准可方便地与其他合适的标记语言集成在一起。
考虑到XForms标准所具有的以上卓越特点,我们在GUI XML的数据绑定模块与交互模块中部分地采用了XForms标准。
XForms
被称为“下一代Web表单”的XForms最初起源于HTML工作组的工作。W3C组织力图将XForms制定成为HTML表单的替代标准,用于包括桌面电脑、手持设备、信息家电等领域在内的各种平台之上。传统的HTML Web表单没有将表单的设计目的和表现形式分离开来,表单设计的灵活性很低,同时客户端计算能力也无法充分利用。
为了克服以上缺点,XForms对表单进行了抽象定义,将表单区分为数据、逻辑和表现三方面。规范中没有规定实现细节,因此XForms处理器的实现形式是多样的:既可以基于浏览器嵌入HTML页面中,利用HTML和JavaScript进行表现; 也可以用Java Swing应用程序等形式表现。另外XForms还为应用提供了事件驱动模型,这使得用户可以像开发普通的GUI应用程序一样对鼠标、键盘等事件进行相应的编程。
XForms标准的成功之处就是将表单的作用和表现方式分离,由相互独立的部分分别负责描述。这使得XForms的表现方式更灵活。
● 数据定义: XForms中最重要的概念是XForms Model,即XForms模型。其中包括对XML实例数据(instance data)的定义,用于表单收集数据。模型规定了表单中能够使用的实例数据作为用户的输入请求。实例数据可以直接在模型中引用也可以以链接形式引用外部XML文件。实例数据对应的模式信息可以进一步提供数据类型和合法性验证等约束。
● 逻辑定义: 模型中还包括与特定表单和合法性验证行为相对应的操作的描述。在这一部分定义中设计者可以指定表单中值不能为空的区域,以及该值所需满足的条件等。这样XForms处理器可以直接处理表现和用户交互等操作,而不必与远程服务器进行实时交互,充分利用了客户端的计算资源。
● 表现定义: XForms提供了一组标准的UI可视化构件,称为XForms用户界面(XForms User Interface)。但对构件的描述只提供了抽象概念,具体实现由XForms处理器来决定。这给XForms的使用留下了极大的空间,推动了XForms的实用化。
XForms中定义的可视化构件已经可以在SVG等XML形式的语言中使用。同时,像Voice Browser工作组也在为XForms等开发用户界面构件。
以上所提到的数据、逻辑和表现各部分通过XForms提交协议(XForms Submit Protocol)连接起来。该协议定义了XForms如何接收和发送实例数据,以及如何挂起和恢复表单填写的过程。
XForms的设计目标包括:
● 支持手持设备、电视、桌面浏览器,以及打印机和扫描仪等;
● 丰富的用户界面满足商务、消费和设备控制等各种应用;
● 消除数据、逻辑和表现之间的耦合;
● 增强的国际化功能;
● 支持结构化表单数据;
● 先进的表单逻辑;
● 单页面多表单以及单表单多页面;
● 挂起和恢复功能的支持;
● 和XML标签集的无缝集成。
电子商务表单示例
在一个简单的电子商务表单中,首先需要选择是使用现金支付还是使用信用卡支付。如果选择使用信用卡的话,需要输入卡号和有效期。
可以想象,为了实现这一表单,我们很难做到从表现(表单控件input)中分离表单作用(数据集合)。而在XForms中我们可以使用如下的定义。
首先定义XForms模型元素(如果使用XHTML作为宿主语言,我们通常需要将该段定义放在head部分)。该XForms模型定义用于收集三部分实例数据,分别位于method,number和expiry元素中。与HTML表单类似,数据被提交到的URL由action属性指定。
其次表单所需要的表现构件用如下的设备无关,平台独立通用目的的方式定义如下:
Select Payment Method:
Cash
cash
Credit
cc
Credit Card Number:
Expiration Date:
Submit
由此可见,XForms的特点非常明显: 没有硬编码痕迹(例如没有使用radio按钮这样的定义),不同设备可以按需绘制“select one”这一构件类型; 表现与用途明显分离。各自的作用明晰。在表现定义中可以通过构件的ref属
性引用模型中的定义。
链接:XForms和GUI XML
GUI XML是一种用于描述图形化用户界面构造过程所需应用逻辑的语言,其描述的界面具有设备独立性模式。这里所说的“设备”,意味着个人计算机、多种信息应用设备(例如手持式电脑、桌面电话、蜂窝式电话和PCS 电话),以及其他人类可以与之交互的设备。GUI XML是一种说明性的、符合XML 规范的语言。
为了开发一个用户界面,设计者需要编写一个GUI XML文档,其中包含了适用于最终使用此用户界面的设备的表示风格信息。之后GUI XML将被使用特定的编程语言工具包完成用户界面的构造(例如JFC、SWT 等),或者自动映射为目标设备所使用的语言(例如HTML、WML)。其设计目标如下:
● 使得设计者不需要学习针对特定设备的语言和API 就可以设计出符合设备要求的UI;
● 缩短针对一系列不同设计开发用户界面的时间;
● 提供了将UI代码与应用逻辑代码相分离的特性;
● 使得非程序员能够设计UI;
● 简化国际化和本地化的工作量;
● 实现了通过网络将UI下载到客户端的高效性;
● 有助于强化安全性;
● 实现了对支撑UI技术的扩展。
显然GUI XML是实现RIA的一个强大工具,与XForms标准在某些方面具有共同之处。因此在GUI XML 1.1规范的设计过程中,设计者对于XForms标准给予了充分的重视。最终在该版本的GUI XML中引入了基于XForms标准的数据模型定义模块。
