XForms是W3C組織所推薦的下一代線上Forms,它吸取了W3C標準諸如:XML Schema, XPath和基於XML的事件,最大特色是包含了客戶端驗證的功能。
基本介紹
- 中文名:XForms
- 定義:下一代線上Forms
- 推薦:2003年10月14日
- 突破:當前HTML forms模型的一些限制
簡介,什麼是XForms?,XForms 框架,XForms 模型,XForms的設計目標,XForms 綁定,XForms 數據類型,XForms 屬性參考,字元串數據類型,日期和時間數據類型,數值數據類型,雜項數據類型,XForms 數據類型,
簡介
XForms是W3C組織所推薦的下一代線上Forms(早在2003年10月14日就被W3C推薦),它吸取了W3C標準諸如:XML Schema, XPath和基於XML的事件,XForms試圖突破當前HTML forms模型的一些限制。
XForms的最大特色是包含了客戶端驗證的功能,我們知道,在HTML中,許多關於forms驗證的功能需要寫大量的JavaScript腳本,由於驗證的Javascript腳本庫依賴於forms中的各個元素,當它們發生變化時,不得不重新更新或維護Javascript驗證腳本。XForms結合了許多關於驗證方面的功能,對form驗證只需要使用簡單的XML標記完成,其它亮點還有:XForms將數據從表現中分離,更健壯的數據類型表示,能夠遞交XML數據到服務端-替代我們通常使用name/value遞交的做法(看起來這個還不錯;)),XForms可以在不同的設備上正常顯示。在學習XForms之前,推薦先閱讀一下Web Forms 2.0,關於XForms的教程和文檔可在W3C站點找到。
被稱為“下一代Web表單”的XForms最初起源於HTML工作組的工作。W3C組織力圖將XForms制定成為HTML表單的替代標準,用於包括桌面電腦、手持設備、信息家電等領域在內的各種平台之上。傳統的HTML Web表單沒有將表單的設計目的和表現形式分離開來,表單設計的靈活性很低,同時客戶端計算能力也無法充分利用。
為了克服以上缺點,XForms對表單進行了抽象定義,將表單區分為數據,邏輯和表現三方面。規範中沒有規定實現細節,因此XForms處理器的實現形式是多樣的。既可以基於瀏覽器嵌入HTML頁面中,利用HTML和JavaScript進行表現;也可以用Java Swing應用程式等形式表現。另外XForms還為套用提供了事件驅動模型,這使得用戶可以像開發普通的GUI應用程式一樣對滑鼠、鍵盤等事件進行相應的編程。
XForms標準的成功之處就是將表單的作用和表現方式分離,由相互獨立的部分分別負責描述。這使得XForms的表現方式更靈活。
什麼是XForms?
XForms 是下一代的 HTML 表單
XForms 與 HTML 表單相比更完善,更靈活
XForms 將在 XHTML 2.0 中成為表單標準
XForms 獨立於平台和設備
XForms 可從表現分離數據和邏輯
XForms 使用 XML 來定義表單數據
XForms 可存儲和傳輸 XML 文檔中的數據
XForms 含有諸如計算以及表單驗證等特性
XForms 可減少或根除對腳本的需求
XForms 是 W3C 標準
XForms 框架
HTML 表單的作用是蒐集數據。XForms 的作用是相同的。
通過 XForms,輸入數據被描述在兩個不同的部分中:
XForms 模型(描述數據和邏輯)
XForms 用戶界面(顯示和輸入數據)
XForms 模型
XForms 模型用於描述數據。
數據模型是 XML 文檔的一個實例(一個模板)。
XForms 模型定義了一個 <model> 元素內部的一個數據模型:
<model>
<person>
<instance>
<fname/>
<lname/>
</person>
</instance>
<submission id="form1" action="submit.asp" method="get"/>
</model>從上面的例子,您可以看到 XForms 模型使用 一個 <instance> 元素來為需要收集的數據定義 XML 模板,並使用一個 <submission> 元素來描述如何提交數據。
<submission> 模型沒有表達任何有關表單可見部分(用戶界面)的信息。
XForms的設計目標
1、 支持手持設備、電視、桌面瀏覽器,以及印表機和掃瞄器等
2、 豐富的用戶界面滿足商務、消費和設備控制等各種套用
3、 消除數據、邏輯和表現之間的耦合
4、 增強的國際化功能
5、 支持結構化表單數據
6、 先進的表單邏輯
7、 單頁面多表單,以及單表單多頁面
8、 掛起和恢復功能的支持
9、 和XML標籤集的無縫集成
XForms 綁定
XForms 使用兩個部分來定義數據:XForms 模型和 XForms 用戶界面。
XForms 模型是針對數據的一個 XML 模板(實例),而 XForms 用戶界面是對數據輸入和顯示的描述。
XForms 使用 XPath 來定義這個兩個部分的連線。這被稱為綁定(binding)。
XForms 數據類型
XForms 屬性參考
名稱 | 描述 |
---|---|
calculate | 定義對項目執行的計算。 |
constraint | 定義對項目的約束。 |
p3ptype | 為項目定義 P3P 數據類型。 |
readonly | 為項目定義一個編輯限定(edit restriction)(無法修改) |
relevant | 定義數據如何相關聯。(供顯示還是提交) |
required | 定義數據項目是必需項目。(不能為空) |
type | 為項目定義數據類型。 |
字元串數據類型
名稱 | 描述 |
---|---|
ID | A string that represents the ID attribute |
IDREF | A string that represents the IDREF attribute |
IDREFS | |
language | A string that contains a valid language id (e.g. en, en-US) |
Name | A string that contains a valid XML name |
NCName | |
NMTOKEN | A string that represents the NMTOKEN attribute |
NMTOKENS | |
normalizedString | A string that does not contain new line characters or tabs |
QName | |
string | A string. This is the default data type XForms will use if no data type is specified.Note: string may contain tab characters and new line characters |
token | A string that does not contain line feeds, carriage returns, tabs, leading or trailing spaces, or multiple spaces |
所有的字元串數據類型都源自於 string 數據類型本身。
日期和時間數據類型
名稱 | 描述 |
---|---|
date | Defines a date value |
dateTime | Defines a date and time value |
gDay | Defines a part of a date - the day (DD) |
gMonth | Defines a part of a date - the month (MM) |
gMonthDay | Defines a part of a date - the month and day (MM-DD) |
gYear | Defines a part of a date - the year (CCYY) |
gYearMonth | Defines a part of a date - the year and month (CCYY-MM) |
time | Defines a time value |
數值數據類型
名稱 | 描述 |
---|---|
byte | A signed 8-bit integer |
decimal | A decimal value |
int | A signed 32-bit integer |
integer | An integer value |
long | A signed 64-bit integer |
negativeInteger | An integer containing only negative values (..,-2,-1) |
nonNegativeInteger | An integer containing only non-negative values (0,1,2,..) |
nonPositiveInteger | An integer containing only non-positive values (..,-2,-1,0) |
positiveInteger | An integer containing only positive values (1,2, ..) |
short | A signed 16-bit integer |
unsignedLong | An unsigned 64-bit integer |
unsignedInt | An unsigned 32-bit integer |
unsignedShort | An unsigned 16-bit integer |
unsignedByte | An unsigned 8-bit integer |
All numeric data types are derived from the decimal data type.
雜項數據類型
名稱 | 描述 |
---|---|
anyURI | Represents a URI, which includes web page addresses |
base64Binary | Allows characters, including control characters, that otherwise aren't representable in XML |
boolean | Defines a true/false or 1/0 value |
double | |
float | |
hexBinary |
XForms 數據類型
名稱 | 描述 |
---|---|
listItems | Represents a whitespace-separated list |
listItem | Represents only non-whitespace characters. An excellent base type for a whitespace-separated list |
dayTimeDuration | Represents a duration of a certain number of seconds |
yearMonthDuration | Represents a duration of a certain number of months |