XForms 1.1 中文翻译—第1章 关于XForms标准

1 关于XForms标准

1.1 背景

表单是Web的一个重要组成部分,一直是交互式Web应用的主要实现方式。Web应用和电子商务解决方案对Web表单提出了新的需求,即更好的带有丰富交互体验的Web表单。XForms就是响应这种需求而产生的,它提供了一种新的平台无关的标记语言,用户可以使用XForms(通过XForms Processor)与远程的用户或代理进行在线交互。XFormsHTML 表单的替代者,吸取了HTML表单的经验教训。

关于XForms的更多背景信息,请参考http://www.w3.org/MarkUp/Forms

1.2 标准阅读说明

在编写这个标准时,我们已经考虑到了各种不同类型的读者,特别是XForm表单的设计者和Xforms规范的实现者。我们希望这个标准能够为表单设计者提供一些手段从而创作高效的、富有吸引力的、易于使用的、而且无需关注太多实现细节的文档(表单)。而对于XForms的实现者,可以在这个标准中找到他们实现标准的XForms 处理器所需要的信息。这个标准首先对XForms 进行了概括介绍,然后对XForms各个组成部分的技术细节进行了详细说明。

这份标准各种不同的表述模式。为了避免矛盾,规定在线电子版本是权威版本。

文档中使用的术语:must, must not, required, shall, shall not, recommended, should, should not, may optional符合[RFC 2119]标准。

1.3 标准的组织

本标准被组织成以下章节:

第一、二章

XForms的入门介绍,勾勒了XForms的设计原理,还包括XForms的快速指南。

第三章及后续章节

XForms参考手册。参考手册的大部分由XForms标准组成,定义了XFormsXformsProcessors必须如何规范的解释各个组成部分。

附录

附录包含了描述XFormsXML Schema, 参考文献, 举例和其他一些有用信息。

1.4 文档中使用的命名方法

在文档中使用了以下名称空间前缀和相应的名称空间标识符:

xformsXForms名字空间。例如http://www.w3.org/2002/xforms(参考3.1 XForms名称空间)

htmlXHTML名字空间。例如http://www.w3.org/1999/xhtml(参考[XHTML 1.0]

xsXML Schema名字空间http://www.w3.org/2001/XMLSchema(参考[XML Schema part 1]

xsdXML Schema名字空间http://www.w3.org/2001/XMLSchema(参考[XML Schema part 2]

xsiXML Schema实例(instances)名字空间

http://www.w3.org/2001/XMLSchema-instance(参考[XML Schema part 1]

evXML事件(events)名字空间http://www.w3.org/2001/xml-events(参考[XML Events]

my用户自定义的名字空间

这只是一个约定,在实际中可以使用任何名字空间前缀。

文档中使用以下排版方式来描述技术材料。

通过以下方式定义官方术语:[定义: 大多数术语可在13术语表中找到]术语链接必要时可能会突出显示。

XForms中的各种元素的XML表示法使用XHTML Modularization[XHTML Modularization]Abstract Modules的语法。

举例子会突出排版:

Example item

Example Item

对外部文档的引用,如下所示:[Sample Reference],也会带有引用本文档部分的链接。

引用实例(Sample Reference

引用—-指向引用

注释使用以下排版约定:

注意:

向读者的解释。

编辑注释:编辑注释的名称

编辑注释, 最终发表中不可见。

问题(实例实现问题)

问题-名称

实现者提出的特定问题,例如作为候选推荐的一部分。

解析

没有记录。

 

1.5 XForms1.1XForm1.0的区别

本节概括了XForms 1.1的新特点和变化。

1.5.1 模型和实例

model元素现在提供了一个version属性来帮助表单设计者过渡XForm 1.0XForms 1.1的转变。

instance元素现在提供了一个resource属性,如果实例不包含数据,则可以从URI来获取实例数据。相比之下,src属性覆盖了一个实例中的内部内容。resource属性在必须支持保存和重新载入基于Xforms的文档的系统中比较有用。

1.5.2 增强了提交功能

submission元素提供了许多新的特性,大大改进了XForms的数据通信功能。包括:

  • 访问基于SOAP的网络服务(web services),RESTful服务,基于ATOM的服务和非XML服务。
  • 改进了对提交处理和序列化的控制
  • 对提交地址(URI)和实例数据头(headers with instance data)的控制能力
  • 目标实例数据的替换功能

submission元素现在有一个resource属性和一个resource子元素,实例数据可以通过该属性或子元素动态的控制提交地址。因此,action属性不再提倡使用,虽然XForms 1.1仍然支持。

XForms1.0中,提交功能已经比AJAX强大了,可以根据HTTPHTTPS服务的结果自动更新表单,包括RSS feeds。在XForms1.1中,method属性支持delete及其他QName。实例数据可以通过method子元素动态控制方法(method)。现在可以使用header子元素添加甚至通过实例数据动态的控制提交头(submission headers)。这些特性完善了ATOMRESTful服务需要的功能。XForms1.1还通过mediatype属性提供了特定的提交头行为来与SOAP1.11.2 网络服务进行通信。

submission元素现在支持relevantvalidate属性,表单设计者可以使用这两个属性关闭实例数据的相关性修改和有效性验证,从而可以使用submission来在服务器或本地文件系统中保存和重新载入未完成的数据。

submission元素现在支持target属性,可以通过指定需要替换的节点用提交结果进行部分实例替换。replace属性现在还支持text设置,可以使用非XML(文本)提交结果替换目标节点的内容而不是目标节点本身。

submission元素还支持xforms-submit-serialize事件,表单设计者可以通过该事件提供定制的序列化作为提交数据(submitssion data),如纯文本或完整的XForms文档。serialization属性还支持对提交数据序列化的增强的控制(increased control),包括设置成none,使得sumbission用于简单的地址激活(URI activation)。

xforms-submit-donexforms-submit-error事件现在有事件上下文信息,提供了更多关于成功和失败提交的信息,例如成功提交的响应头和失败提交的原因代码。

最后,还添加了许多新的举例来说明submission的使用。

1.5.3 数据类型和模型条目特性

XForms1.1现在提供了emailcard-number 数据类型,因此,表单设计者可以轻松的验证电子邮件地址和信用卡号的输入值。

为了进一步简化表单的设计,XForms1.1 还提供了它自己的XML Schema数据类型定义,XForms版本的数据类型允许值为空字符串。允许空字符串意味着如年龄或生日等的输入可以不使用必需的输入验证(XML schema数据类型的词汇空间如xsdpositiveIntegerxsddate中没有空字符串)。如果一个输入是必需的,表单设计者仍然可以结合使用XForms版本的数据类型和required模型条目特性。在XForms定义的数据类型中,当模型的默认名字空间设置成XForms时,允许类型定义可以忽略名字空间的限定,例如,定义成 type=”date”,而不是type=”xsd:date”,这样简化了表单的设计。

readonly模型条目特性被用来定义数据模型的不可修改属性。这意味着不可以在任何模型条目特性系统外来改变它,不仅包括表单控件还包括XForms的动作和通过DOM接口的实例数据访问。

1.5.4 函数和XPath表达式

XForms 1.1 现在包含了许多可用于calculate的函数和其他XPath表达式来支持各种特点,包括:

  • 基本的日期运算和处理本地日期和时间:local-date(), local-dateTime(), days-to-date(), seconds-to-dateTime()adjust-dateTime-to-timezone()
  • 处理表列数据和平行列表(tabular data and parallel lists):current(), choose() context()
  • 基本的安全功能:digest(), hmac(), random()
  • 改进的数字和字符串处理:power(), is-card-number() compare()
  • 模型的实例之间交叉搜索:使用两个参数的id()函数
  • 访问XForms事件中的上下文信息:event()
  • 本规范对绑定表达式类型binding expression types提供了更好的分类,对动态依赖(dynamic dependencies)提供了更严格的定义。这些定义保证了表单控件中的XPath表达式和使用index()的动作在需要时自动的重新评估(re-evaluated)。

因为增加了choose()函数, 所以if()函数不再推荐使用虽然仍然支持,这是为了避免未来与XPath 2.0中的if关键字冲突。

1.5.5 用户界面

改进了对所有表单控件的通用行为描述,使其指定了默认的布局风格和对必需数据的显示要求。

改进了output表单控件来显示从实例数据中获取的非文本类型,特别是图片。

添加了一个例子来展示 如何使用input控件上的DOMActivate处理器(handler),一旦用户输入或者确认输入时,处理器就可以自动发起提交,例如一个搜索请求。

对选择控件(selection control)的处理模型(processing model)和实现需求进行了详细阐述,以确保表示成纯文本列表和元素列表的选择数据之间行为的一致性。

改进了利用动态可用的表单控件创建类似于向导接口的能力。详见描述动作改进的部分。

标准对表单控件提供了更严格的定义和分类,这些定义和分类的使用贯穿在标准中,以确保正确的支持与表单控件相关的不同的特性,例如事件、模型条目特性的适应性、及可聚焦性(focusability)。

XForms重复(repeat)更加强大和灵活,现在标准对重复的内容提供了严格的定义和处理模型描述,包括创建,销毁,IDREF 解析(resolution)及重复内容和包含内容(containing content)(其本身可能是重复的)间的事件流。repeat现在可以在任何节点集上使用,而不仅仅是同构集合(homogeneous collection)。定义了重复索引处理(repeat index handling)的正式处理模型。

1.5.6 动作和事件

insertdelete动作已经从对repeat的专有动作转变成对通用的数据插入和删除操作。附录中添加了15个例子来详细的说明这个附加的功能。

所有的XForms动作,包括动作集,可以有条件的或者迭代的(conditionally or iteratively)执行。加上通用的insertdelete,这意味着XForms1.1的信息处理能力是图灵完备的(Turing-complete)。

dispatch动作现在允许通过实例数据(instance data)指定事件名称和目标。添加了一个新的属性delay来使得事件可以预定在一个延迟时间后分发。因为某事件的事件处理器可以设置相同的事件延迟分发,因此在XForms1.1中可以创建后台任务。

改进了setfocustoggle动作来帮助创建向导界面和处理动态可用的内容。获取焦点的控件和被选中的条目(the case to select可以通过实例数据来指定。这些动作相对于重算(recalculation)处理模型也被改进了。这些动作在它们的常规处理前执行延迟更新(deferred update),以确保用户界面被自动刷新。

作为对重复索引的管理的一部分改进,setindex动作现在更像setvalue 这意味着它对自动重新计算、重新验证和用户界面刷新设置标志位。 并且,这个动作现在也在它的常规处理前执行延迟更新,以确保用户界面是最新的。

最后,通过额外的context()函数改进了setvalue动作。现在可以根据用于计算单节点绑定的相同上下文节点表达value属性。这改进了根据repeat节点集内部值来使用 repeat内部setvalue来设置在repeat节点集之外的实例节点值的能力。


转载请注明出处:CKword技术博客

译者:

窦文敏,IBM CDL 软件工程师,主要从事 IBM Lotus Forms 的测试工作。对XML、Web 技术、软件过程和软件测试有浓厚的兴趣。可以通过douwm@cn.ibm.com与她联系。

崔康,软件工程师,热爱技术,联系方式:cuikang@gmail.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值