XForms (XML Forms Language) について
XFormsは、XMLデータを扱うためのユーザーインターフェースやデータ処理モデルを定義するXMLベースの仕様です。W3Cによって、HTML/XHTMLのフォームに代わるものとして設計されましたが、Webに限らず、より広範なデータ操作タスクのUIを記述する能力を持っています。
XFormsは、策定が中止されたXHTML 2.0と密接な関係があり、XHTML 2.0に組み込まれる予定でした。現在のXHTMLとは名前空間や構文が異なりますが、企業レベルのWebフォームを比較的簡単に作成できるとされています。XForms 1.0は2003年10月14日に
W3C勧告となり、その後、2009年10月20日にXForms 1.1が勧告されました。また、XForms 1.0は2007年にJIS規格(JIS X 4178:2007)としても規格化されています。
HTMLフォームとの違い
HTMLフォームとは異なり、XFormsはModel View Controller (MVC) アプローチを採用しています。ここで言う「モデル」は、フォームデータとその制約を記述するXFormsモデルで構成され、「ビュー」は、フォームコントロールの種類、グループ化、データとの関連付けを記述します。フォームの見た目はCSSでカスタマイズできます。
XForms文書は、単純なHTMLフォームと見た目は大差ない場合もありますが、多くの高度な機能を提供します。例えば、新しいデータを要求して動的にフォームを更新したり、
XMLHttpRequest/
Ajaxのように動作させることが可能です(ただし、スクリプトは不要)。フォーム作成者は、ユーザーデータをXML Schemaのデータ型で検証したり、特定のデータの入力を必須にしたり、コントロールを無効化したりできます。また、フォームの一部を状況に応じて変更したり、データ間の関係を強制したり、任意個数のデータを入力できるようにしたり、フォームデータから計算された値を表示したり、XML文書を使ってフォームを事前に埋めたりできます。さらに、データの送信時だけでなく、リアルタイムでアクションに反応したり、デバイス(デスクトップかモバイルかなど)に応じてコントロールのスタイルを変更することもできます。これらの機能は、多くの場合、
JavaScriptのようなスクリプト言語を使わずに実現できます。
従来のフォームと同様に、XFormsはXML以外のサブミットプロトコル(multipart/form-data, application/x-www-form-urlencoded)も利用できますが、XFormsの重要な新機能の1つとして、XML形式でのサーバへのデータ送信が可能です。XML文書をフォームのデフォルトデータとして組み込むこともできます。XMLは多数のツールで扱えるため、XMLベースのサブミッションは解析や編集が容易です。XForms自身もXMLの方言であるため、XSLTを使用してXForms文書をXML文書に変換したり、その逆も可能です。XML変換言語を使用すれば、XFormsをスキーマ言語から生成したり、XFormsを従来のHTMLフォームに変換することもできます。現在のサーバーサイドでのXForms実装は、基本的にこの仕組みで動作しています。
ソフトウェアサポート
現在のところ、XFormsをネイティブにサポートする一般的なWebブラウザは存在しません。しかし、多くのブラウザ用プラグインやクライアント側の拡張機能が利用可能です。
クライアント側の実装例
Firefox XForms extension: Mozilla Projectの一部で、FirefoxとMozillaで利用可能ですが、一部未実装の仕様があります。
IBM Lotus Forms: 企業向けフォームソリューション
formsPlayer: Internet Explorer 6以上を拡張し、XFormsだけでなくDOMやXPathなども実装します。
FormFaces: JavaScriptで実装されたプロセッサで、XForms+HTMLをブラウザに直接送り、
JavaScriptがXFormsをHTMLフォームに変換します。XHTML 1.0、ECMAScript-262第3版、DOM Level 2に対応したブラウザで利用できます。
Convex: IE6用の拡張機能で、Javaアプレットを使用しています。
以下は、ブラウザの拡張ではなく、純粋なクライアント側の実装です。
IBM Lotus Forms: ブラウザ拡張以外にスタンドアロンクライアントも含まれています。
OpenOffice.org: バージョン2.0以降、XFormsをサポートしています。
X-Smiles: オープンソースの
Javaによるクライアント実装(XMLブラウザ)。XForms以外にXHTML、CSS、SVGなどもサポートしています。
DENG: XForms対応の軽量XMLブラウザエンジンで、CSS-3とXFormsをサポートします。
PicoForms: XForms対応のブラウザエンジンで、デモ版はXHTML、CSS、XML Events、XFormsをサポートし、
Java ME搭載の携帯機器で動作します。
DataMovil: 携帯機器向けの実装です。
XFormsは、サーバー側でHTMLフォームや他のウィジェットに変換して利用することも可能です。以下のような実装があります。
Chiba: オープンソースのサーバサイド実装です。
Orbeon Forms: オープンソースのフォームエンジンです。
以下は、XHTML/XForms文書からHTMLとJavaScriptコードを生成するサーバー側コンパイラ型の実装です。
IBM Lotus Forms WebForm Server: サーバーサイドのフォームソリューションです。
AJAXForms: XHTML/XFormsをHTMLとJavaScriptに変換しますが、2006年11月以降、開発は休止しています。
XSLTForms: XHTML/XFormsをXHTMLと
JavaScriptに変換します。
eXtremeBuilder: 韓国語のみに対応した実装です。
実装技術の比較
FormFaces、AJAXForms、XSLTForms、Chiba、Orbeon Formsは、Ajax技術に基づいています。サーバー側およびクライアント側の処理は実装によって異なります。例えば、FormFacesはクライアント側でXFormsを完全に処理し、XForms標準に基づいたAjaxでデータモデルを更新します。その他は、サーバー側でJavaを用いてXFormsをAjaxマークアップに変換し、ブラウザにコンテンツを配信します。これらの技術は、複数の種類のブラウザで動作しますが、依存関係、スケーラビリティ、性能、ライセンス、完成度、ネットワークトラフィック、オフライン機能、ブラウザ間の互換性などに違いがあります。
FormsPlayerのようなクライアント側プラグイン技術には、ブラウザに組み込まれるため既存のサーバアーキテクチャで動作可能である、応答性が高い、サーバへのフェッチ回数が少なくて済むなどの利点があります。例えば、ブラウザがサポートしていないコントロールを表示できるなど、ユーザーフレンドリーな利点もありますが、JavaScriptによるウィジェットでも同様のことが可能です。
サーバ側での実装とクライアントプラグイン実装のトレードオフは、ソフトウェアの保守場所です。どちらの手法でも、クライアントにプラグインをインストールするか、サーバー側でXForms変換エンジンを実装する必要があります。理論的には両方の手法を組み合わせることも可能で、クライアントにXForms機能がある場合はサーバー側でXFormsを送信し、ない場合はサーバー側で変換するという方法も考えられます。
FormFacesは、サーバー側にもクライアント側にも新たなソフトウェアを追加する必要がありません。クライアント側にはプラグインをインストールする必要がなく、サーバー側はアーキテクチャを変更する必要がありません。これは、FormFacesが完全にAjaxで記述されているためです。ただし、この場合は、他の手法よりもクライアントに多くのJavaScriptコードがダウンロードされます(ただし、クライアント側でキャッシュされます)。また、XML Schemaの検証はまだサポートされていません。
どのXForms実装でも、Web 2.0 API(Google Maps、Yahoo Traffic Alertsなど)を組み込むことが可能です。
携帯機器用XForms
XFormsは、特に携帯機器で使用した場合、以下のような利点があります。
データ通信量の削減: HTML 4のフォームよりもXFormsを使用した方が、サーバーとのやり取りが少なくて済みます。
デバイス依存の解消: 携帯機器の機能は多様であるため、各種機器向けにさまざまなUIを生成する必要がありますが、XFormsを使用すると、フォームを機器の機能とは独立して記述できるため、対応作業を軽減できます。
JavaScript依存の軽減: XFormsは
JavaScriptの使用を減らすことができるため、
JavaScriptの実行が不安定な携帯機器で有効です。また、セキュリティ上の懸念から
JavaScriptを実行できないシステムでも利用できます。
実装例
PicoForms Micro Edition Browser: MIDP 2.0およびCLDC 1.xに対応した携帯電話で動作。PalmやPocket PCもサポート。
DataMovil: XFormsプロセッサを組み込んだ携帯用アプリケーション開発プラットフォーム。
Java MEベース。
IBM Forms for Mobile Devices: モバイルデバイス向けのIBMフォームソリューション。
Oracle Wireless Client: 2004年にプレビューリリースされましたが、実際には
Internet Explorerのプラグインとして提供されていました。XFormsをサポートしています。
FormFaces Mobile Solution: NetFront Browserで動作する100% JavaScript実装。
関連項目
W3C勧告
日本工業規格(情報処理)の一覧
参考文献
T. V. Raman (2004年). XForms: XML Powered Web Forms. Boston: Addison-Wesley. ISBN 0-321-15499-1
Dubinko, Micah (2003年). XForms Essentials. Sebastopol, CA; Farnham: O'Reilly & Associates. ISBN 0-596-00369-2. (http://xformsinstitute.com/essentials/) (テキスト自体はGFDLで公開)
外部リンク
W3C勧告 (W3C Recommendation)
W3C にある XForms 関連資料
The Forms Working Group
The XForms Users Community Group
XForms 1.0 Frequently Asked Questions
XForms for HTML Authors by Steven Pemberton
XForms Quick Reference
Planet XForms
XForms Central
XFV XForms Validator tool
AJAXForms
XSLTForms
XHTML to XForms converter (XSLT スタイルシートを使って、XHTMLフォームを XForms 文書に変換する)
Nuxeo's XForms engine Eclipse/SWTコンポーネント
Mozilla XForms Project - Sample Forms