XForms は、従来のWebフォームから
派生したもので、広範なプラットフォームやブラウザそしてPDFドキュメントのような
従来のメディア以外のものにすら使用することができます。
xformsのまず第一の違いは、クライアントへフォームを送信する方法です。 HTML作成者のためのXForms
には、XFormsの作成方法の詳細な解説がありますが、この手引きの趣旨に沿って、 ここでは簡単な例のみ示すことにします。
例 37-1. 簡単なXForms検索フォーム
<h:html xmlns:h="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/2002/xforms">
<h:head>
<h:title>Search</h:title>
<model>
<submission action="http://example.com/search"
method="post" id="s"/>
</model>
</h:head>
<h:body>
<h:p>
<input ref="q"><label>Find</label></input>
<submit submission="s"><label>Go</label></submit>
</h:p>
</h:body>
</h:html>
|
|
上のフォームは、(qという名前の),テキスト入力ボックス
と投稿ボタンを表示します。投稿ボタンがクリックされた時、このフォームは actionが参照するページに送信されます。
ここからが、Webアプリケーションの視点から異なって見え始めるところです。 通常のHTMLフォームでは、データは、
application/x-www-form-urlencoded
で送信されますが、XFormsでは、この情報はXML形式のデータで送信されます。
XFormsで処理することを選択した場合には、おそらくデータをXML形式で取得したい
はずで、この場合、$HTTP_RAW_POST_DATA
により、 ブラウザが生成したXML ドキュメントにアクセスすることができます。このデータは、使用するXSLTエンジン
やドキュメントパーサに渡すことができます。
データ形式には関心がなく、データを従来の データ形式には関心がなく、データを従来の $_POST変数に ロードしたいだけの場合、 method 属性を urlencoded-post
に変更することにより、 クライアントブラウザに application/x-www-form-urlencoded
としてデータを送信するよう指示することができます。
例 37-2. XFormにより$_POSTを送信する
<h:html xmlns:h="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/2002/xforms">
<h:head>
<h:title>Search</h:title>
<model>
<submission action="http://example.com/search"
method="urlencoded-post" id="s"/>
</model>
</h:head>
<h:body>
<h:p>
<input ref="q"><label>Find</label></input>
<submit submission="s"><label>Go</label></submit>
</h:p>
</h:body>
</h:html>
|
|
注意: 本稿執筆時点で、多くのブラウザはXFormsをサポートしていません。
上の例が失敗する場合、ブラウザのバージョンを確認してください。