跳转到内容

XML - 数据交换管理/XForms

来自维基教科书,开放书籍,开放世界



上一章 下一章
XML 和 JDBC XMLWebAudio



什么是 XForms?

[编辑 | 编辑源代码]

表单是当今许多 Web 应用程序的重要组成部分。HTML 表单使 Web 应用程序能够接收用户的输入。Web 用户现在进行的复杂交易开始超出标准 HTML 表单的限制。XForms 是下一代 HTML 表单,它比 HTML 表单更丰富、更灵活。

XForms 使用 XML 进行数据定义,使用 HTML 或 XHTML 进行数据显示。XForms 将表单的数据逻辑与其呈现方式分离。将数据与呈现方式分离使 XForms 成为设备无关的,因为数据模型可以用于所有设备。呈现方式可以针对不同的用户界面进行定制,例如手机和平板设备,并可以在这些设备之间提供交互性。还可以将 XForms 元素直接添加到其他 XML 应用程序中,例如 VoiceXML(语音 Web 数据)、WML(无线标记语言)和 SVG(可缩放矢量图形)。

XForms 的目的

[编辑 | 编辑源代码]

XForms 将目的与呈现方式分离。例如,问卷应用程序的目的是收集有关用户的的信息。这是通过创建一个允许用户提供所需信息的呈现方式来完成的。Web 应用程序通常将此类呈现方式呈现为交互式文档,该文档在用户交互过程中不断更新。通过将目的与其呈现方式分离,XForms 能够将不同的交互绑定到一个模型。

XForms 的主要方面

[编辑 | 编辑源代码]

XForms 模型定义了表单是什么,它包含哪些数据,以及它应该做什么。XForms 用户界面定义了输入字段以及如何显示它们。XForms 提交协议定义了 XForms 如何发送和接收数据,包括暂停和恢复表单完成的能力。XForms 是“实例数据”,这是映射到熟悉的“表单控件”的数据的内部表示。实例数据基于 XML,并根据 XPath 的内部树表示和 XML 的处理过程进行定义。

XForms 框架

[编辑 | 编辑源代码]

在 XForms 中,输入数据在两个不同的部分中描述

  1. XForm 模型
  2. XForm 用户界面


XForms 模型

[编辑 | 编辑源代码]

XForm 模型定义了表单是什么,它包含哪些数据,以及它应该做什么。

数据模型是 XML 文档的实例(模板)。XForms 模型在 <model> 元素内定义数据模型

 <model>
 <instance>
   <person>
     <fname/>
     <lname/>
   </person>
 </instance>
 <submission id="form1" action="submit.asp" method="get"/>
 </model>


从上面的示例中,您可以看到 XForms 模型使用 <instance> 元素定义要收集的数据的 XML 模板,并使用 <submission> 元素描述如何提交数据。

XForms 模型没有说明表单的视觉部分(用户界面)。

The <instance> 元素

[编辑 | 编辑源代码]

XForms 收集的数据表示为 XML 实例数据。XForms 始终为 XML 文档收集数据。XForms 模型中的 <instance> 元素定义了 XML 文档。

在上面的示例中,表单正在收集数据的“数据实例”(XML 文档)如下所示

 <person>
   <fname/>
   <lname/>
 </person>

在收集数据后,XML 文档可能如下所示

 <person>
   <fname>Jim</fname>
   <lname>Jones</lname>
 </person>


The <submission> 元素

[编辑 | 编辑源代码]

XForms 模型使用 <submission> 元素描述如何提交数据。<submission> 元素定义表单以及如何提交它。在上面的示例中,id="form1" 属性标识了表单,action="submit.asp" 属性定义了表单应提交到的 URL,而 method="get" 属性定义了提交数据时要使用的方法。

下图显示了 XForm 模型如何能够与各种用户界面一起使用。

XForms 用户界面

[编辑 | 编辑源代码]

XForms 用户界面用于显示和输入数据。XForms 的用户界面元素称为控件(或输入控件)

 <input ref="fname"><label>First Name</label></input>
 <input ref="lname"><label>Last Name</label></input>
 <submit submission="form1"><label>Submit</label></submit>

在上面的示例中,两个 <input> 元素定义了两个输入字段。ref="fname" 和 ref="lname" 属性指向 XForms 模型中的 <fname> 和 <lname> 元素。<submit> 元素具有 submission="form1" 属性,它引用 XForms 模型中的 <submission> 元素。提交元素通常显示为按钮。请注意示例中的 <label> 元素。在 XForms 中,每个输入控件元素都具有一个必需的 <label> 元素。

将所有内容整合在一起

[编辑 | 编辑源代码]

XForms 必须在另一个 XML 文档中运行。它可以在 XHTML 1.0 中运行,它将在 XHTML 2.0 中运行。如果我们把所有这些内容放在一起,文档将如下所示

 <xforms>
 <model>
 <instance>
   <person>
     <fname/>
     <lname/>
   </person>
 </instance>
 <submission id="form1" action="submit.asp" method="get"/>
 </model>
 <input ref="fname"><label>First Name</label></input>
 <input ref="lname"><label>Last Name</label></input>
 <submit submission="form1"><label>Submit</label></submit>
 </xforms>


XForms 处理器

[编辑 | 编辑源代码]

内置于浏览器中的 XForms 处理器将负责将 XForms 数据提交到目标。数据可以以 XML 形式提交,可能如下所示

 <person>
   <fname>Jim</fname>
   <lname>Jones</lname>
 </person>

或者它可以以文本形式提交,如下所示

 fname=Jim;lname=Jones


XForms 命名空间

[编辑 | 编辑源代码]

XForms 的官方命名空间为:http://www.w3.org/2002/xforms。如果您想在 HTML(或 XHTML 1.0)中使用 XForms,则应使用 XForms 命名空间声明所有 XForms 元素。XForms 预计将成为 XHTML 2.0 的标准部分,从而不再需要 XForms 命名空间。


XForms 示例

[编辑 | 编辑源代码]

使用 XForms 查看此文档

 <xforms>
 <model>
   <instance>
   <person>
     <fname/>
     <lname/>
   </person>
   </instance>
   <submission id="form1" method="get" action="submit.asp"/>
 </model>
 <input ref="fname">
 <label>First Name</label></input>
<input ref="lname"> <label>Last Name</label></input>

<submit submission="form1"> <label>Submit</label></submit> </xforms>

表单控件

[编辑 | 编辑源代码]

处理数据输入和显示的表单组件称为表单控件或用户界面控件。XForms 定义了一套全面的设备中立、平台独立的表单控件。对于模型中定义的每个数据元素,表单控件通过客户端定义其外观。这些控件可以与样式表结合使用,以提供复杂的表单显示。

XForms 表单控件 最接近的 XHTML 等效项 描述
<input> <input type="text"> 用于输入少量文本
<textarea> <textarea> 用于输入大量文本
<secret> <textarea> 用于输入大量文本
<secret> <input type="password"> 用于输入敏感信息
<output> N/A 用于内联显示任何实例数据
<range> N/A 用于平滑“音量控制”选择值
<upload> <input type="file"> 用于上传文件或设备数据
<trigger> <button> 用于激活表单事件
<submit> <input type="submit"> 用于提交表单数据
<select> <select multiple="multiple"> 或多个 <input type="checkbox"> 用于选择零个、一个或多个选项
<select1> <select> 或多个 <input type="radio"> 用于从多个选项中选择一个选项


XForms 操作

[编辑 | 编辑源代码]

在表单处理过程中,通常需要执行某些特定操作。

XForms 操作 描述
setfocus 将焦点设置到特定的表单控件。
setvalue 设置特定节点的值。
message 向用户显示消息。
send 提交全部或部分实例数据。
reset 重置全部或部分实例数据。
load 在同一窗口或新窗口中打开文档。
refresh 刷新实例数据的视图。
recalculate 重新计算实例数据。
revalidate 重新验证实例数据。
setindex 在重复序列中导航。
insert 从重复序列中插入节点。
delete 从重复序列中删除节点。
toggle 选择开关的用例
dispatch 分派事件。


XForms 方法

[编辑 | 编辑源代码]

XForms 规范使用并构建在 XPath 之上,包括添加一些对表单有用的方法调用:这些方法可以在允许使用 XPath 的任何位置调用。此外,实现可以支持“扩展函数”以提供附加功能。

方法 描述
avg() 返回指定节点的算术平均值
min() 和 max() 返回指定节点的最小值或最大值
count-non-empty() 返回非空节点的数量
if() 根据布尔值返回两个字符串中的一个
index() 指示重复序列中的当前位置
days-from-date() 将 XML Schema 数据类型转换为天数
seconds-from-dateTime() 将 XML Schema 数据类型转换为秒数
seconds() 将 XML Schema 持续时间转换为秒数
months() 将 XML Schema 持续时间转换为月数
now() 返回当前日期/时间


另请参见

[编辑 | 编辑源代码]
华夏公益教科书