array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'features.xforms.php', 1 => 'XFormsの処理', ), 'up' => array ( 0 => 'features.php', 1 => '機能', ), 'prev' => array ( 0 => 'features.sessions.php', 1 => 'セッション', ), 'next' => array ( 0 => 'features.file-upload.php', 1 => 'ファイルアップロードの処理', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'features/xforms.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
» XForms は、従来のWebフォームから 派生したもので、広範なプラットフォームやブラウザそしてPDFドキュメントのような 従来のメディア以外のものにすら使用することができます。
xformsのまず第一の違いは、クライアントへフォームを送信する方法です。 » HTML作成者のためのXForms には、XFormsの作成方法の詳細な解説がありますが、この手引きの趣旨に沿って、 ここでは簡単な例のみ示すことにします。
例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
としてデータを送信するよう指示することができます。
例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をサポートしていません。 上の例が失敗する場合、ブラウザのバージョンを確認してください。