XML - 資料交換管理/XForms
XML - 資料交換管理
|
相關主題
|
參與進來
|
| 上一章 | 下一章 |
| ← XML 和 JDBC | XMLWebAudio → |
表單是當今許多 Web 應用程式的重要組成部分。HTML 表單使 Web 應用程式能夠接收使用者的輸入。Web 使用者現在進行的複雜交易開始超出標準 HTML 表單的限制。XForms 是下一代 HTML 表單,它比 HTML 表單更豐富、更靈活。
XForms 使用 XML 進行資料定義,使用 HTML 或 XHTML 進行資料顯示。XForms 將表單的資料邏輯與其呈現方式分離。將資料與呈現方式分離使 XForms 成為裝置無關的,因為資料模型可以用於所有裝置。呈現方式可以針對不同的使用者介面進行定製,例如手機和平板裝置,並可以在這些裝置之間提供互動性。還可以將 XForms 元素直接新增到其他 XML 應用程式中,例如 VoiceXML(語音 Web 資料)、WML(無線標記語言)和 SVG(可縮放向量圖形)。
XForms 將目的與呈現方式分離。例如,問卷應用程式的目的是收集有關使用者的的資訊。這是透過建立一個允許使用者提供所需資訊的呈現方式來完成的。Web 應用程式通常將此類呈現方式呈現為互動式文件,該文件在使用者互動過程中不斷更新。透過將目的與其呈現方式分離,XForms 能夠將不同的互動繫結到一個模型。
XForms 模型定義了表單是什麼,它包含哪些資料,以及它應該做什麼。XForms 使用者介面定義了輸入欄位以及如何顯示它們。XForms 提交協議定義了 XForms 如何傳送和接收資料,包括暫停和恢復表單完成的能力。XForms 是“例項資料”,這是對映到熟悉的“表單控制元件”的資料的內部表示。例項資料基於 XML,並根據 XPath 的內部樹表示和 XML 的處理過程進行定義。
在 XForms 中,輸入資料在兩個不同的部分中描述
- XForm 模型
- XForm 使用者介面
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 模型沒有說明表單的視覺部分(使用者介面)。
XForms 收集的資料表示為 XML 例項資料。XForms 始終為 XML 文件收集資料。XForms 模型中的 <instance> 元素定義了 XML 文件。
在上面的示例中,表單正在收集資料的“資料例項”(XML 文件)如下所示
<person> <fname/> <lname/> </person>
在收集資料後,XML 文件可能如下所示
<person> <fname>Jim</fname> <lname>Jones</lname> </person>
XForms 模型使用 <submission> 元素描述如何提交資料。<submission> 元素定義表單以及如何提交它。在上面的示例中,id="form1" 屬性標識了表單,action="submit.asp" 屬性定義了表單應提交到的 URL,而 method="get" 屬性定義了提交資料時要使用的方法。
下圖顯示了 XForm 模型如何能夠與各種使用者介面一起使用。
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 資料提交到目標。資料可以以 XML 形式提交,可能如下所示
<person> <fname>Jim</fname> <lname>Jones</lname> </person>
或者它可以以文字形式提交,如下所示
fname=Jim;lname=Jones
XForms 的官方名稱空間為:http://www.w3.org/2002/xforms。如果您想在 HTML(或 XHTML 1.0)中使用 XForms,則應使用 XForms 名稱空間宣告所有 XForms 元素。XForms 預計將成為 XHTML 2.0 的標準部分,從而不再需要 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 操作 | 描述 |
| setfocus | 將焦點設定到特定的表單控制元件。 |
| setvalue | 設定特定節點的值。 |
| message | 向用戶顯示訊息。 |
| send | 提交全部或部分例項資料。 |
| reset | 重置全部或部分例項資料。 |
| load | 在同一視窗或新視窗中開啟文件。 |
| refresh | 重新整理例項資料的檢視。 |
| recalculate | 重新計算例項資料。 |
| revalidate | 重新驗證例項資料。 |
| setindex | 在重複序列中導航。 |
| insert | 從重複序列中插入節點。 |
| delete | 從重複序列中刪除節點。 |
| toggle | 選擇開關的用例 |
| dispatch | 分派事件。 |
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() | 返回當前日期/時間 |
- XForms 教程和食譜華夏公益教科書 這本華夏公益教科書包含 75 個以上的 XForms 示例,並連結到工作 XForms 應用程式。