W3C規格解説
XForms
(株)日本ユニテック
村上 泰介
XFormsとは、Webのフォームの次世代規格で、現在はワーキングドラフトです。XFormsの大きな特徴は次の2つです。
(http://www.w3.org/TR/2002/WD-xforms-20020118/)
- ・コンテンツとプレゼンテーションが分離している
- ・サーバに転送されるデータがXMLであること
ここでは、まずフォームとは何かを説明し、その後にこの2つの特徴について説明します。
フォームとは
フォームとはHTMLのフォームのことを思い出してもらえば分かりますが、Webでの情報の検索やアンケートの解答などで、ユーザが情報を送信するための入力コーナーのことです。そしてフォームは、テキストの入力欄や選択ボタンや送信ボタンなどで構成されますが、これらをフォームのコントロールといいます。
コンテンツとプレゼンテーションの分離
XFormsの特色の1つは、コンテンツとプレゼンテーションが分離していることですが、それにはどのようなメリットがあるのでしょうか。
従来のHTMLのフォームはコンテンツとプレゼンテーションが一緒になっていたので、テキストの入力欄やボタンなどを記述するタグは、それがブラウザでどのように表示されるかも規定していました。つまり、「何を」「どのように」表現するかが一緒だったのです。
しかし、XFormsは両者を分離したことで、さまざまなデバイスで同じフォームのデータを使用することができます。ブラウザだけでなくPDAなどの携帯情報端末や紙での表示にも再利用できるのです。
「何を」表現するか、つまりフォームのデータモデルは、XFormsモデルで定義されています。また、「どのように」表現するか、つまりユーザインターフェイスに関しては、XFormsユーザインターフェイスで定義されています。ユーザインターフェイスは、XFormsだけでなくXHTML、WMLまたその他のユーザインターフェイスで代用することもできます。
サーバに転送されるデータはXML
2つ目の特徴は、フォームで指定したデータの転送先のサーバには、XML形式でデータが送られるということです。Webサービスでやり取りされるデータ形式の標準がXMLであることを考えれば、この特徴の利点は明白です。
HTMLでは、URLエンコード形式でフォームデータが送られますので、サーバで処理する場合にはXMLへの変換など何らかの処理を行う必要があります。しかし、XFormsに対応したクライアントであれば、フォームデータがすでにXMLであるので、サーバの負担も軽減されます。転送されるXMLデータの構造は、XFormsモデルで規定されています。
まとめ
XFormsの特徴について、HTMLのフォームと比較して説明しました。今後Webサービスが発展してゆくことを考えると、さまざまなデバイスからフォームデータの結果をXMLで返すというXFormsの取り組みは注目を集めてゆくことでしょう。現在はワーキングドラフトの段階にありますが、一時も早く勧告となることが期待されます。
最後にサンプルとして、HTMLのフォームと、XHTMLのUIを利用したXFormsのフォームを示します。
<HTMLのサンプル>
<html>
<head>
<title>eCommerce Form</title>
</head>
<body>
<form action="http://example.com/submit" method="post">
<table summary="Payment method selector">
<tr>
<td><p>Select Payment Method:</p></td>
<td><label><input type="radio" name="as" value="cash"/>Cash</label>
<label><input type="radio"name="as" value="credit"/>Credit</label></td>
</tr>
<tr>
<td><label for="cc">Credit Card Number:</label></td>
<td><input type="text" name="cc" id="cc"/></td>
</tr>
<tr>
<td><label for="exp">Expiration Date:</label></td>
<td><input type="text" name="exp" id="exp"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit"/></td>
</tr>
</table>
</form>
</body>
</html> |
<XHTML+XFormsのサンプル>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/01/xforms"
xmlns:my="http://commerce.example.com/payment"
...>
<!-- XFormsのモデル -->
<head>
...
<!-- フォームデータのXML構造とバインディング -->
<xforms:model>
<xforms:instance>
<payment as="credit" xmlns="http://commerce.example.com/payment">
<cc/>
<exp/>
</payment>
</xforms:instance>
<xforms:submitInfo action="http://example.com/submit"
method="post" id="s00"/>
<xforms:bind ref="my:payment/my:cc"
relevant="../my:payment/@as = 'credit'"
required="true" type="my:cc"/>
<xforms:bind ref="my:payment/my:exp"
relevant="../my:payment/@as = 'credit'"
required="true" type="xsd:gYearMonth"/>
</xforms:model>
</head>
<!-- XHTMLのユーザインターフェイス -->
<body>
...
<!-- XFormsユーザインターフェイスの埋め込み -->
<group xmlns="http://www.w3.org/2002/01/xforms"
ref="my:payment">
<selectOne ref="@as">
<caption>Select Payment Method</caption>
<choices>
<item>
<caption>Cash</caption>
<value>cash</value>
</item>
<item>
<caption>Credit</caption>
<value>credit</value>
</item>
</choices>
</selectOne>
<input ref="my:cc">
<caption>Credit Card Number</caption>
</input>
<input ref="my:exp">
<caption>Expiration Date</caption>
</input>
<submit submitInfo="s00">
<caption>Submit Form</caption>
</submit>
</group>
...
</body>
</html>
|
関連サービス
標準化仕様の動向調査
最新動向を伝えるDXメールニュース
(無料)
|