since: 31st/Aug./2001; last modified: 29th/Sep./2001
Form モジュールはフォームをつくる為の諸要素タイプを定義しています。内容セットでは Form に属し、 form 要素タイプは、DTD では %BlkSpecial.class; に定義されており、その内容モデルで定義されている諸要素タイプは %Inline.class; に定義されています。
button, fieldset, form, input,
label, legend, select, optgroup,
option, textarea
| 要素 | 属性 | 最小内容モデル |
|---|---|---|
form |
Common,
accept (ContentTypes),
accept-charset (Charsets),
action* (URI),
method ("get"* | "post"),
enctype (ContentType) |
(Heading | List | Block - Form | fieldset)+ |
input |
Common,
accept (ContentTypes),
accesskey (Character),
alt (Text),
checked ("checked"),
disabled ("disabled"),
maxlength (Number),
name (CDATA),
readonly ("readonly"),
size (Number),
src (URI),
tabindex (Number),
type ("text"* | "password" | "checkbox" | "button" | "radio" | "submit" | "reset" | "file" | "hidden" | "image"),
value (CDATA) |
EMPTY |
select |
Common,
disabled ("disabled"),
multiple ("multiple"),
name (CDATA),
size (Number),
tabindex (Number) |
(optgroup | option)+ |
option |
Common,
disabled ("disabled"),
label (Text),
selected ("selected"),
value (CDATA) |
PCDATA |
textarea |
Common,
accesskey (Character),
cols* (Number),
disabled ("disabled"),
name (CDATA),
readonly ("readonly"),
rows* (Number),
tabindex (Number) |
PCDATA |
button |
Common,
accesskey (Character),
disabled ("disabled"),
name (CDATA),
tabindex (Number),
type ("button" | "submit"* | "reset"),
value (CDATA) |
(PCDATA | Headings | List | Block - Form | Inline - Formctrl )* |
fieldset |
Common |
(PCDATA | legend | Flow)* |
label |
Common,
accesskey (Character),
for (IDREF) |
(PCDATA | Inline - label)* |
legend |
Common,
accesskey (Character) |
(PCDATA | Inline)+ |
optgroup |
Common,
disabled ("disabled"),
label* (Text) |
option+ |
このモジュールは二つの内容セットを定義する:
Formform | fieldsetFormctrlinput | select | textarea | label | buttonこのモジュールが使われるときは、テキスト・モジュールで定義されている、内容セット Block に内容セット Form を加え、内容セット Inline に内容セット Formctrl を加える。
ここで挙げた属性の他に、組み込みイベントモジュールによる追加属性が定義される。
form 要素タイプform 要素はフォーム内容のコンテナとして機能するブロックレベルの要素です。フォームコントロールの内容は、 action 属性値の URI が指し示す処理エージェントに受け渡されます。
内容モデルは基本的にはブロックレベル要素です。但し、別の form 要素は内容に持てません。フォームコントロールは全てテキストレベルの要素なので、これらは別のブロックレベル要素の内容として現れます:
<form action="http://somesite.com/prog/adduser" method="post">
<p>
First name: <input type="text" name="firstname" /><br />
Last name: <input type="text" name="lastname" /><br />
email: <input type="text" name="email" /><br />
<input type="radio" name="sex" value="Male" /> Male<br />
<input type="radio" name="sex" value="Female" /> Female<br />
<input type="submit" value="send" /> <input type="reset" />
</p>
</form>
フォームに構造を与える為に、 fieldset 要素を用いることもあります:
<form action="..." method="post">
<fieldset>
<legend>個人情報</legend>
...フォームコントロール省略...
</fieldset>
<fieldset>
<legend>ステータス</legend>
...フォームコントロール省略...
</fieldset>
<fieldset>
<legend>スキル</legend>
...フォームコントロール省略...
</fieldset>
</form>
action = urimethod = get|postget:
action 属性の値に"?" を加え、ここに MIMEタイプ application/x-www-form-urlencoded で符号化したフォームデータ集合を加える。このケースでは、フォームデータは ASCII コードに限られる。a 要素で URI に "?" を記述しても全く同じ。このときは「値=名前」を & で区切る。QUERY_STRING に格納される。長さ制限がある場合があるので、一般には post が使われる。post:
enctype 属性が指定する MIME タイプによってメッセージを生成し、 action 属性値が示す相手と HTTP の post トランザクションを行なう。CONTENT_LENGTH にはデータのバイト数がセットされており、この長さだけ標準入力からデータを読み取る。enctype = content-typemethod="post" のとき、フォームをサーバに受け取らせる場合のコンテンツタイプを指定する。application/x-www-form-urlencoded"
multipart/form-data"
type="file" の input 要素と併用する場合に使われる。 accept-charset = charset listUNKNOWN"。このとき、通常はフォームを含む当該文書の文字符号化方法が採用される。accept = content-type-listtype="file" の input 要素を参照。 Commononsubmit = ScriptEvents も参照のこと。onreset = ScriptEvents も参照のこと。formfield 要素formfield 要素は、 form 要素の内容にだけ現れ、フォームコントロールを構造化するために用います。
内容は、処理対象の文字列 (PCDATA) と legend 要素と任意のブロックレベル及びテキストレベルの要素です。但し、別のフォーム要素や別の fieldset 要素は内容に持たないようにすべきでしょう。
fieldset 要素の内容にだけ定義されている legend 要素は、当該フィールドの領域名、キャプションをマークアップします。この要素のお陰で、非視覚ユーザエージェントでも、当該フィールドにアクセスできるようになります。
legend 要素タイプの内容は、処理対象の文字列と任意のインライン要素です。但し、フォームコントロールに含まれる要素は内容に持たないようにすべきでしょう。
fieldset 要素の属性Commonlegend 要素の属性Commonaccesskey = Charactera 要素の accesskey 属性と同じです。
<form action="...省略..." method="post">
<fieldset>
<legend accesskey="p">個人情報</legend>
<p>...省略...</p>
</fieldset>
<fieldset>
<legend accesskey="m">変額</legend>
<p>...省略...</p>
</fieldset>
</form>
フォームコントロールに付いては、実際の場面に応じて様々な要求があり、説明が煩雑になるので割愛します。注意点として、以下のものを挙げておきます:
accesskey と tabindex を指定するようにしましょう。 />" になります。form 要素の内容に直接記述することは出来ません。 fieldset 要素か、その他のブロックレベル要素の内容に記述してください。