2 コンセプト


Contents

この章は入門である。

2.1 XFormsとは何か?

現存するWebフォームのデザインは、そのフォームの目的 表現を分離していない。対照的に、XFormsは、そのフォームが何をするかと、そのフォームがどのように見えるかとを、別々のセクションで構成する。 これによって、古典的なXHTMLのフォームも含む柔軟な表現の選択が、XML形式での定義と結びつけられて利用可能になる。

以下は、XFormsモデルと呼ばれる、標準的なあるいは独特の、多様なユーザーインターフェースで動作するデバイス非依存のXMLフォーム定義を図解している:

diagram showing an XForms Model puzzle piece potentailly connecting to many
possible user interface puzzle pieces: XForms, XHTML, WML, and proprietary

XFormsユーザーインターフェースは、今日のXHTMLのフォームコントロールの置き換えをターゲットとする、標準的なヴィジュアルコントロールのセットを提供する。 これらのフォームコントロールは、SVGのように、XHTMLやXMLのドキュメントの中に直接利用できる。他のグループ、たとえば音声ブラウザワーキンググループなどでは、XFormsのためのユーザーインターフェースコンポーネントを独自に開発している。

XFormsにおける重要なコンセプトは、フォームがXMLインスタンスデータとして表現されるデータを収集する、というところにある。その他にも、XFormsモデルでは、インスタンスデータの構造を説明している。重要なのは、フォームは、XMLのように、構造化されたデータの交換を表す、ということである。ワークフロー、自動入力(auto-fill)、事前入力(pre-fill)のフォームアプリケーションは、インスタンスデータの利用によってサポートされる。

最終的に、XForms処理系とフローし合うためのインスタンスデータのチャネルが必要となる。このため、XForms送信プロトコルが、 XFormsがどのようにデータを送受信するかを、フォームが入力を保存する能力も含めて定義する。

以下の図はXFormsの主要な部分を要約している:

Diagram of the connected XForms Model and XForms User Interface puzzle pieces.
Below that, a double-headed arrow labeled XForms Submit Protocol. Below that, a
document icon labeled XML Instance Data

以降のセクションでは、これらをより詳細に説明することになる。

2.2 XFormsモデルとは何か?

XFormsモデルはXMLフォームの非ヴィジュアル的な定義である。これにはいろいろな目的がある:

The XFormsモデルは2つのコンポーネントに分けられる: データ構造とXFormsエクステンションである。

The XForms Model:
A dotted line surrounds two boxes labeled [Data Structures] and [XForms Extensions].
The Data Structures box contains Structure and Types. The XForms Extensions
box contains Constraints, Dependencies, Expressions, and Calculations

データ構造コンポーネントは、インスタンスデータを記述するスキーマを提示し、XML Schemaに適合する役割(role)をもつ再利用可能なデータタイプを提供する。 このため、XFormsワーキンググループはデータ構造コンポーネントのために、XML Schema互換の定義に焦点をおいている。さらに、我々は現在のXHTML作成者に合った、より簡単なシンタックスのオプションを調査している。

さらに、XFormsモデルには追加制約(constraint)、依存関係、動的制約言語、演算など、スキーマでは通常表されない機能(aspect)を含んでいる。たとえば、モデルアイテムが"read only"であると宣言することはXML Schemaの範囲外であるが、XMLフォームの定義では明らかに重要な機能である。このようなXFormsエクステンションコンポーネントは、XML Schemaシンタックスを拡張した属性として扱われることになる。

XFormsモデルは、モデルアイテム間の潜在的に複雑な関係を表すことができる。この1つの例として、"配偶者情報" セクションのように、以前にそのユーザーが配偶者をもつと示した場合のみ有効なものがあげられる。このような、計算を必要とする関係は、XMLに親和的な動的制約言語(Dynamic Constraint Language)で、手軽に表すことができるであろう。

XFormsモデルは小数演算を用いて、数値を維持する。 一部の一般に用いられる値を正確に表現できない"浮動小数点"演算と異なり、10進演算はほとんどのユーザーが期待するように数字を扱い、多くの丸め誤差を回避する。

最後に、XFormsモデルインスタンスデータと密接に関係している。 XFormsモデルの定義は、任意のネームスペースの任意のウェルフォームドのインスタンスデータも存在することが出来る、開かれた内容モデルの領域を提供する。XFormsの作成者はそのようにしても良いのだが、通常は、インスタンスデータを含める必要はない。インスタンスデータインクルードの便利な応用例としては:

2.3 XFormsユーザーインターフェースとは何か?

ユーザーインターフェースはユーザーに最も直感的に関心を持たれる電子フォームの一部である。ユーザーインターフェースをフォームのその他の部分から切り離すことで、XFormsは柔軟なプレゼンテーションのオプションを利用することができる。発展した機能を提供するために、独立したXForms ユーザーインターフェースが指定されうる。これには現在のXHTMLフォームの全ての機能と、それ以上のものが含まれる。

典型的には、XHTMLのフォームコントロールは相当に一般的な方法でのみ表現され、たとえば<select>はメニューコントロールを表す。Webアプリケーションデザイナーは、プレゼンテーションをもっとコントロールしたいと主張していた。XFormsは、デスクトップブラウザ、携帯用デバイス、そして紙にすら単一のXFormsモデルを結びつけられるので、この一歩先のレベルのコントロールが可能になる。このモジュラーの構築は他のユーザーインターフェースも導きうる。 特に、音声ブラウザワーキンググループでは、XFormsを用いた非ヴィジュアルのフォームコントロールの仕様を開発しようとする動きがある。

XFormsユーザーインターフェースは、ユーザーインターフェースウィジェット(フォームコントロール)と、フォームコントロールを水面下のXFormsモデルに結びつけるバインディングメカニズムを定義するために用いられる、一連のXHTMLモジュール化要素からなる。 そのXForms フォームコントロールがXHTMLで用いられるものであっても、我々はXFormsユーザーインターフェースを表示するのに完全なXHTMLレンダリングエンジンを強要するものではない。 仕様的には、この目的はXFormsユーザーインターフェースが、今日のHTML 4.0で要求されるような完全なtableのレンダリングモデルを実装する必要なくレンダリングされるところにある。

XFormsフォームコントロールはXHTMLで使うために設計されており、最初はHTML 4.0で利用できる一連のフォームコントロールの、スクリプティングの使用を--宣言的なマークアップを、ではなく--必須とする今日の一般的な設計からインスパイアされたものである。その意図は、新しい一連のXForms フォームコントロールがXHTML文書で用いられ、宣言的なマークアップを用いることでより豊かなエンドユーザーエクスペリエンスをもたらすことにある。

XFormsの最後の必須コンポーネントは"バインディング"である。これは、ここではXFormsモデルXFormsユーザーインターフェースの繋がりを表す。 XFormsワーキンググループは、XHTMLのフォームコントロールXFormsユーザーインターフェースフォームコントロールのためのバインディングを定義するであろう。 The バインディングのメカニズムは一般的かつデバイス非依存に設計されている。すなわちこれはこのメカニズムは、異なるデバイス環境における水面下のXFormsモデルの使用に適した多重ユーザーインターフェースとのバインディングに使用できることを意図している。XFormsプレゼンテーションを定義する他のグループは、該当するバインディングを定義するかもしれない。

2.4 XForms送信プロトコルとは何か?

平凡なXHTMLフォームはインスタンスデータ、平たくいえば、洗練されていないURLエンコーディングによる名前と値のペアを、HTTPに載せて送信する。 次に、マルチパートMIMEエンコードされたデータを包含する機能がファイルアップロードのために追加された。XFormsは豊富な、国際的な、階層的なXMLインスタンスデータを、XForms送信プロトコルに載せて転送できるようにゼロから設計し直された。

単なるデータの送信だけではなく、XFormsは追加の機能(requirement)として、レジュームした後のフォーム入力セッションのサスペンドができる。これはXForms送信プロトコルのもう1つの利用法--インスタンスデータをリモートでシリアライズする1つの方法--を必要とする。

この執筆時点で、XMLプロトコルワーキンググループがW3Cで結成され、現在は必要なものを募集している。XFormsワーキンググループはこの動きに接近して、最終的な結果がXForms送信プロトコルと互換のものになるように努力する。