XForms 模型

XForms 模型為集中于表單中的數據定義了一個模板。

XForms 框架

HTML 表單的作用是搜集數據。XForms 的作用是相同的。

通過 XForms,輸入數據被描述在兩個不同的部分中:

  • XForms 模型(描述數據和邏輯)
  • XForms 用戶界面(顯示和輸入數據)

XForms 模型定義了什么是表單,它包含什么數據,以及它應該做什么。

XForms 用戶界面定義了輸入域,以及它們如何被顯示。

XForms 模型

XForms 模型用于描述數據。

數據模型是 XML 文檔的一個實例(一個模板)。

XForms 模型定義了一個 <model> 元素內部的一個數據模型:

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

從上面的例子,您可以看到 XForms 模型使用 一個 <instance> 元素來為需要收集的數據定義 XML 模板,并使用一個 <submission> 元素來描述如何提交數據。

<submission> 模型沒有表達任何有關表單可見部分(用戶界面)的信息。

XForms 命名空間

假如您忽略了這些例子中的 XForms 命名空間,或者假如您不清楚命名空間的概念,我們會在下一節介紹這個內容。

<instance> 元素

XForms 模型 <instance> 元素來定義數據收集的數據。

XForms 是為某個 XML 文檔進行數據收集的。在這個 XForms 模型中的 <instance> 元素定義了這個 XML 文檔。

在上面的例子中,表單為其收集數據的數據實例(XML 文檔)類似這樣:

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

在數據收集完畢后,這個 XML 文檔也許看上去類似這樣:

<person>
  <fname>John</fname>
  <lname>Smith</lname>
</person>

<submission> 元素

XForms 模型使用 <submission> 元素來描述如何提交數據。

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

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> 元素。submit 元素通常被顯示為按鈕。

請留意例子中的 <label> 元素。使用 XForms 的話,每個輸入控件元素都必須有 <label> 元素。

您將需要一個容器

XForms 沒有被設計為單獨工作的方式。也沒有所謂的 XForms 文檔。

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_example

XForms 處理器

內建于瀏覽器中的 XForms 處理器將負責向目標提交 XForms 數據。

數據可作為 XML 來提交,類似這樣:

<person>
  <fname>David</fname>
  <lname>Smith</lname>
</person>

或作為文本來提交,類似這樣:

fname=David;lname=Smith