XForms 模型

XForms 模型为集中于表单中的数据定义了一个模板。

XForms 框架

HTML 表单的作用是搜集数据。XForms 的作用是相同的。

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

  • XForms 模型(描述数据和逻辑)
  • XForms 用户界面(显示和输入数据)

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

XForms 用户界面定义了输入域,以及它们如何被显示。

XForms 模型

XForms 模型用于描述数据。

数据模型是 XML 文档的一个实例(一个模板)。

XForms 模型定义了一个 <model> 元素内部的一个数据模型:

  1. <model>
  2.  
  3. <instance>
  4. <person>
  5. <fname/>
  6. <lname/>
  7. </person>
  8. </instance>
  9.  
  10. <submission id="form1" action="submit.asp" method="get"/>
  11.  
  12. </model>

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

<submission> 模型没有表达任何有关表单可见部分(用户界面)的信息。

XForms 命名空间

假如您忽略了这些例子中的 XForms 命名空间,或者假如您不清楚命名空间的概念,我们会在下一节介绍这个内容。

<instance> 元素

XForms 模型 <instance> 元素来定义数据收集的数据。

XForms 是为某个 XML 文档进行数据收集的。在这个 XForms 模型中的 <instance> 元素定义了这个 XML 文档。

在上面的例子中,表单为其收集数据的数据实例(XML 文档)类似这样:

  1. <person>
  2. <fname/>
  3. <lname/>
  4. </person>

在数据收集完毕后,这个 XML 文档也许看上去类似这样:

  1. <person>
  2. <fname>John</fname>
  3. <lname>Smith</lname>
  4. </person>

<submission> 元素

XForms 模型使用 <submission> 元素来描述如何提交数据。

<submission> 元素可定义表单以及如何提交表单。在上面的例子中,id="form1" 用于标示此表单,action="submit.asp" 属性表单被提交到的 URL,而 method="get" 属性定义了在表单提交过程中使用的方法。

XForms 用户界面

XForms 用户界面用于显示和输入数据。

XForms 的用户界面元素被称为控件或输入控件:

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

在上面的例子中,两个 <input> 元素定义了两个输入域。ref="fname" 和 ref="lname" 属性指向了 XForms 模型中的 <fname> 和 <lname> 元素。

<submit> 元素中的 submission="form1" 属性可引用 XForms 模型中的 <submission> 元素。submit 元素通常被显示为按钮。

请留意例子中的 <label> 元素。使用 XForms 的话,每个输入控件元素都必须有 <label> 元素。

您将需要一个容器

XForms 没有被设计为单独工作的方式。也没有所谓的 XForms 文档。

XForms 必须工作在另外一个 XML 文档中。它可运行在 XHTML 1.0 中,同时它也将工作在 XHTML 2.0 中。

现在把所有的组合起来

如果我们把它组合起来,此文档是这样的:

  1. <xforms>
  2.  
  3. <model>
  4. <instance>
  5. <person>
  6. <fname/>
  7. <lname/>
  8. </person>
  9. </instance>
  10. <submission id="form1"
  11. action="submit.asp"
  12. method="get"/>
  13. </model>
  14.  
  15. <input ref="fname"><label>First Name</label></input>
  16. <input ref="lname"><label>Last Name</label></input>
  17. <submit submission="form1"><label>Submit</label></submit>
  18.  
  19. </xforms>

页面会这样显示:

xforms_example

XForms 处理器

内建于浏览器中的 XForms 处理器将负责向目标提交 XForms 数据。

数据可作为 XML 来提交,类似这样:

  1. <person>
  2. <fname>David</fname>
  3. <lname>Smith</lname>
  4. </person>

或作为文本来提交,类似这样:

  1. fname=David;lname=Smith