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
要素か、その他のブロックレベル要素の内容に記述してください。