XForms
XForms是W3C组织所推荐的下一代在线Forms(早在2003年10月14日就被W3C推荐),它吸取了W3C标准诸如:XMLSchema,XPath和基于XML的事件,XForms试图突破当前HTMLforms模型的一些限制。
1、简介
XForms的最大特色是包含了客户端验证的功能,我们知道,在HTML中,许多关于forms验证的功能需要写大量的JavaScript脚本,由于验证的Javascript脚本库依赖于forms中的各个元素,当它们发生变化时,不得不重新更新或维护Javascript验证脚本。XForms结合了许多关于验证方面的功能,对form验证只需要使用简单的XML标记完成,其它亮点还有:XForms将数据从表现中分离,更健壮的数据类型表示,能够递交XML数据到服务端-替代我们通常使用name/value递交的做法(看起来这个还不错;)),XForms可以在不同的设备上正常显示。在学习XForms之前,推荐先阅读一下WebForms2.0,关于XForms的教程和文档可在W3C站点找到。
被称为“下一代Web表单”的XForms最初起源于HTML工作组的工作。W3C组织力图将XForms制定成为HTML表单的替代标准,用于包括桌面电脑、手持设备、信息家电等领域在内的各种平台之上。传统的HTMLWeb表单没有将表单的设计目的和表现形式分离开来,表单设计的灵活性很低,同时客户端计算能力也无法充分利用。
为了克服以上缺点,XForms对表单进行了抽象定义,将表单区分为数据,逻辑和表现三方面。规范中没有规定实现细节,因此XForms处理器的实现形式是多样的。既可以基于浏览器嵌入HTML页面中,利用HTML和JavaScript进行表现;也可以用JavaSwing应用程序等形式表现。另外XForms还为应用提供了事件驱动模型,这使得用户可以像开发普通的GUI应用程序一样对鼠标、键盘等事件进行相应的编程。
XForms标准的成功之处就是将表单的作用和表现方式分离,由相互独立的部分分别负责描述。这使得XForms的表现方式更灵活。
2、什么是XForms?
XForms是下一代的HTML表单
XForms与HTML表单相比更完善,更灵活
XForms将在XHTML2.0中成为表单标准
XForms独立于平台和设备
XForms可从表现分离数据和逻辑
XForms使用XML来定义表单数据
XForms可存储和传输XML文档中的数据
XForms含有诸如计算以及表单验证等特性
XForms可减少或根除对脚本的需求
XForms是W3C标准
XForms框架HTML表单的作用是搜集数据。XForms的作用是相同的。
通过XForms,输入数据被描述在两个不同的部分中:
XForms模型(描述数据和逻辑)
XForms用户界面(显示和输入数据)
XForms模型
XForms模型用于描述数据。
数据模型是XML文档的一个实例(一个模板)。
XForms模型定义了一个
从上面的例子,您可以看到XForms模型使用一个
XForms的设计目标
1、支持手持设备、电视、桌面浏览器,以及打印机和扫描仪等
2、丰富的用户界面满足商务、消费和设备控制等各种应用
3、消除数据、逻辑和表现之间的耦合
4、增强的国际化功能
5、支持结构化表单数据
6、先进的表单逻辑
7、单页面多表单,以及单表单多页面
8、挂起和恢复功能的支持
9、和XML标签集的无缝集成
XForms绑定
XForms使用两个部分来定义数据:XForms模型和XForms用户界面。
XForms模型是针对数据的一个XML模板(实例),而XForms用户界面是对数据输入和显示的描述。
XForms使用XPath来定义这个两个部分的连接。这被称为绑定(binding)。
3、XForms数据类型
XForms属性参考
名称 |
描述 |
calculate |
定义对项目执行的计算。 |
constraint |
定义对项目的约束。 |
p3ptype |
为项目定义P3P数据类型。 |
readonly |
为项目定义一个编辑限定(editrestriction)(无法修改) |
relevant |
定义数据如何相关联。(供显示还是提交) |
required |
定义数据项目是必需项目。(不能为空) |
type |
为项目定义数据类型。 |
字符串数据类型
名称 |
描述 |
ID |
AstringthatrepresentstheIDattribute |
IDREF |
AstringthatrepresentstheIDREFattribute |
IDREFS |
|
language |
Astringthatcontainsavalidlanguageid(e.g.en,en-US) |
Name |
AstringthatcontainsavalidXMLname |
NCName |
|
NMTOKEN |
AstringthatrepresentstheNMTOKENattribute |
NMTOKENS |
|
normalizedString |
Astringthatdoesnotcontainnewlinecharactersortabs |
QName |
|
string |
Astring.ThisisthedefaultdatatypeXFormswilluseifnodatatypeisspecified.Note:stringmaycontaintabcharactersandnewlinecharacters |
token |
Astringthatdoesnotcontainlinefeeds,carriagereturns,tabs,leadingortrailingspaces,ormultiplespaces |
所有的字符串数据类型都源自于string数据类型本身。
日期和时间数据类型
名称 |
描述 |
date |
Definesadatevalue |
dateTime |
Definesadateandtimevalue |
gDay |
Definesapartofadate-theday(DD) |
gMonth |
Definesapartofadate-themonth(MM) |
gMonthDay |
Definesapartofadate-themonthandday(MM-DD) |
gYear |
Definesapartofadate-theyear(CCYY) |
gYearMonth |
Definesapartofadate-theyearandmonth(CCYY-MM) |
time |
Definesatimevalue |
数值数据类型
名称 |
描述 |
byte |
Asigned8-bitinteger |
decimal |
Adecimalvalue |
int |
Asigned32-bitinteger |
integer |
Anintegervalue |
long |
Asigned64-bitinteger |
negativeInteger |
Anintegercontainingonlynegativevalues(..,-2,-1) |
nonNegativeInteger |
Anintegercontainingonlynon-negativevalues(0,1,2,..) |
nonPositiveInteger |
Anintegercontainingonlynon-positivevalues(..,-2,-1,0) |
positiveInteger |
Anintegercontainingonlypositivevalues(1,2,..) |
short |
Asigned16-bitinteger |
unsignedLong |
Anunsigned64-bitinteger |
unsignedInt |
Anunsigned32-bitinteger |
unsignedShort |
Anunsigned16-bitinteger |
unsignedByte |
Anunsigned8-bitinteger |
杂项数据类型
名称 |
描述 |
anyURI |
RepresentsaURI,whichincludeswebpageaddresses |
base64Binary |
Allowscharacters,includingcontrolcharacters,thatotherwisearen'trepresentableinXML |
boolean |
Definesatrue/falseor1/0value |
double |
|
float |
|
hexBinary |
XForms数据类型
名称 |
描述 |
listItems |
Representsawhitespace-separatedlist |
listItem |
Representsonlynon-whitespacecharacters.Anexcellentbasetypeforawhitespace-separatedlist |
dayTimeDuration |
Representsadurationofacertainnumberofseconds |
yearMonthDuration |
Representsadurationofacertainnumberofmonths |
推荐阅读