XForms架构

原创 2006年05月19日 17:58:00

HTML表单是一种用于收集用户数据和提交数据到服务器的重要应用技术,然而,HTML表单只是一个简单的工具,它本省无法满足web应用所需的一些特性,例如复杂数据有效性验证。还有,由HTML表单提供的用户界面代码是与某种设备紧密结合的,也就是说,相同的表单无法使用在PDA或移动电话上。

W3C XForms的推荐书中提到上述这些问题。XForms是XML标签,它嵌入到XHTML这样的主机语言里,当在XFomrs浏览器中呈现时,能提供丰富和动态的应用,其中包括:

        XForms利用了xml schema的强大类型检查功能来验证用户在客户端的输入数据的有效性,而不使用任何script。XForms也可以验证更复杂的数据,例如不同表单数据间的关系。

        XForms的用户界面组件与显示设备无关,也就是它们是根据显示设备来生成的。

        XForms使用的是XML,而不是name/value的方式,这样可很好地应用在Web service上。

为了介绍XForms的一些功能特性,本文将讲述一个简单应用在Amazon web service上用来查询和显示特定图书查询结果的XForms应用的开发过程。

XForms的工作原理

为了利用XForms的功能,首先我们需要一个在简单HTML表单处理模型之上的东西--XForms引擎。XForms引擎是一个应用程序,它通常安装在客户端上,比如浏览器插件,它的典型工作原理是:

        用户通过打开一个文件系统中的文档或发出一个HTTP Get,请求一个包含XForms标示的文档;

        XForms引擎阅读标示,生成表单。由于XForms用户界面组件用抽象的方式定义,因此相同的XForms可以在适当的客户设备中用某种方式生成。因此,一个日期类型输入域在桌面浏览器中可能显示成日期控件,但在另外一个类似PDA有限制的设备上,相同的输入域可能显示成单行文本框。

        一旦表单生成后,用户就可以完成他所需要的操作。当用户填写表单时,在控件之间将会触发事件,用来检验数据输入的有效性、有条件的显示不同的组件,或者执行计算操作。(XForms的计算操作和域更新使用与spressheet相同的depth-first查询和拓扑排序)。

        当用户完成表单的填写后,他点击button来提交表单,那么XForms引擎将会生成一个XML实例文档,根据表单中定义的规则处理这次提交。XForms的提交目标通常是一个URL,可能的操作包括把XML写到一个文件上、发送一个email、提交到一个web service上,或者任何一个HTTP或HTTPS的目标。

在客户端具有XForms引擎的优点是所有的数据处理都在客户端执行,而避免server端不必要的网络堵塞。然而,在XForms的实现成为更加common前,开发者都无法认为他们的client端正确安装了XForms引擎。因此,server端的XForms引擎通常通过结合script和主机语言的普通标示,为普通client端提供相同XForms功能,也就是说,cients端不需要安装XForms引擎,但是在client端获得的标示可能无法全面支持XForms的特性。

我将使用一个client端XForms引擎Formsplayer来演示本文中的例子。

XForms基础

Xforms不能作为一个单独的xml文档使用,而必须嵌入到其他主机语言上使用。通常,这种主机语言是XHTML,单也可能无线标示语言(WML)或者可扩展矢量图形语言(SVG),以及其他语言。在这些语言中,XForms紧紧遵守MVC模型,而就是XForms的数据、界面表示和逻辑明显分离。

XForms中等同于MVC的model层的是model元素,一个XForms模型实现上是一个XML文档,在转载含有任意初始化数据的模型时,XForms模型存在两个角色。如Listing 1所示, 在一个简单的“Hello World”表单中,一个简单的model存在XHTML文档的head中。 模型通常放在head中,而强调它们并不是界面组件。任意的规范的xml文档可能放在model中,作为实例子文档,或者也可以用一个url来表示为一个外部实例文档。

XForms比HTML表单好的一个关键点是XForms能够执行数据有效性检查、约束检查以及数值计算,而不需要编写client端script。XForms可通过以下几种方式来达到如此的功能:

        instance数据element中连接一个xml scheman,对于小型的model,这些约束和有效性检验可能定义在model中,而需要指向另外一个xml schema文档。

        bind元素可以用来在用户界面控件和instance文档元素之间建立一个数据绑定,bing元素同时对instance元素指定一种数据类型,而且bind元素还可以对绑定的元素应用任意计算或约束操作(通过XPath表达式)。

XForms模型的最后一部分是submission元素,它使用uri来描述如何处理所提交的xml实例文档。在“hello world”实例中,当用户点击“Write to Disk” button时,xml实例文档简单的写到一个以命名文件中。

一旦模型定义好后,模型的全部或部分通过用户界面组件来显示。符合MVC模型,XForms用户界面组件相当于在模型的上view层,连接这两层的是XPath表达式,如Listing 1所示,或者是一个bind节点。与HTML定义了具体的用户界面组件如radio按钮和check按钮,XForms定义的是一系列抽象的组件。这些抽象的组件告诉组件应该做什么,而实际上组件的显示依赖与主机语言和它所在的显示设备。

然而,XForms引擎对XForms关心用户界面的生成,开发者仍然可以通过几种途径来设置表单的style。XForms可以利用主机语言的特性来直接设置表单的style,因此在XHTML中,XForms的控件可以嵌入到tables,heading和其他XHTML标签中,但是,由于这种方法使用了固定代码来设置style,限制了表单的独立于设备的特性。

设置style的一种替换方式是只使用最少的主机语言来设定XForms的标示。例如在XHTML中,只把XForms的model放在head段,把抽象用户界面组件放在body段,使用一个外部stylesheet,如Listsing 2所示,来为特定设备指定color,font和其他属性。

MVC模型的最后一部分控制器相当于XForms的事件和动作。XForms中的events由XML events规范定义,其对DOM level2的event语法提供基于element的接口。同时,XForms的actions作为响应XForms events的hanlder,也就是说XForms遵守著名的Gang of Four Observer模型,其中observers为特定的elements,当由events触发时,它们接到通知,接着执行相应的actions。

XForms的events和actions结合起来,能完成以下的任务:

        能为用户提供不同级别的message,从model对话框到工具栏提示等等;

        修改instance文档中的一些数值;

        动态地插入或删除table中的行数;

        可能在这个新的窗口或者在活动的表单窗口中连接到一个新的URI;

        提交xml instance文档中的全部或部分数据;

        在不同组件之间触发事件来实现表单工作流流转。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

XForms -- 下一代的web表单

v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML...
  • linsan2008
  • linsan2008
  • 2006年07月05日 14:03
  • 1279

设置查看XForms的环境

如果玩过 XForms 的人,应该注意到浏览器不能正确显示 XForms 版的页面,除非您喜欢的 Web 浏览器提供了内置的 XForms 支持,否则必须使用一种 XForms 实现。我们来看看如何安...
  • wang_zhou_jian
  • wang_zhou_jian
  • 2010年06月25日 21:47
  • 1640

采用HTML替换XFORM技术方案概述

页面改造方案确定为: 1. HTML+Ajax Toolkit提升页面展现速度;   原XForm界面,用HTML技术改造,直接绘制应用界面。 2.流程方面,以getMessage获取任务消息,...
  • xiaoyw
  • xiaoyw
  • 2013年11月11日 14:51
  • 917

XForms简介

1.  什么是XForms?(1). XForms 是下一代的 HTML 表单(2). XForms 与 HTML 表单相比更完善,更灵活(3). XForms 将在 XHTML 2.0 中成为表单标...
  • wang_zhou_jian
  • wang_zhou_jian
  • 2010年06月25日 21:29
  • 1409

XForms 专题

W3C XForms 是对 HTML 表单的更新,它提供了可扩展的方法可以在 HTML 文档中包括更丰富、更动态的表单。您还可以使用 XForms 更快速更方便地创建 Web 表单。XForms 支持...
  • ibmjournal
  • ibmjournal
  • 2007年01月17日 13:30
  • 461

XForms 基础

XForms 的发展势头迅猛,常见浏览器使用扩展或插件来支持它,此外还有 IBM® Workplace Forms 之类的技术(请参见参考资料部分)。它的灵活和强大对 Web 开发人员很有吸引力,内存...
  • likecheng
  • likecheng
  • 2017年10月17日 18:27
  • 36

XForms入门

2 XForms入门本章简单描述XForms,但并未全部描述Xforms的所有功能。 For XForms完整标准的描述, 请参考后续文档。以下小节提供了嵌入XHTML文档的XForms应用程序的完整...
  • FlySpace
  • FlySpace
  • 2003年06月16日 16:28
  • 2443

理解 XForms

通过使用 XForms、XQuery 和 XSLT 等基于 XML 的技术,可以开发出复杂的多用户应用程序,从交互式的帮助系统到定制的 “游戏” 应用程序,多个用户可以在这些应用程序中同时进行交互。本...
  • ibmjournal
  • ibmjournal
  • 2007年07月09日 13:29
  • 1482

XForms 教程

http://www.w3school.com.cn/xforms/index.asp
  • yjfkpyu
  • yjfkpyu
  • 2009年03月04日 23:06
  • 464

XForms 设计器使用手册

1. 概述 Designer 是一款所见即所得设计工具,使用该工具您能够从选项选用板中拖放控件来构建展现页面。 GForms设计器支持中文及英文两种语言,具体所使用的语言由用户的电脑配置环境决定。...
  • ghpaas
  • ghpaas
  • 2014年06月14日 15:49
  • 512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XForms架构
举报原因:
原因补充:

(最多只允许输入30个字)