Form モジュール

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+

このモジュールは二つの内容セットを定義する:

Form
form | fieldset
Formctrl
input | 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 = uri
method = get|post
enctype = content-type
accept-charset = charset list
accept = content-type-list
Common
多くの要素タイプに共通して定義されている属性のセット。
onsubmit = Script
onreset = Script

formfield 要素

formfield 要素は、 form 要素の内容にだけ現れ、フォームコントロールを構造化するために用います。

内容モデル

内容は、処理対象の文字列 (PCDATA) と legend 要素と任意のブロックレベル及びテキストレベルの要素です。但し、別のフォーム要素や別の fieldset 要素は内容に持たないようにすべきでしょう。

fieldset 要素の内容にだけ定義されている legend 要素は、当該フィールドの領域名、キャプションをマークアップします。この要素のお陰で、非視覚ユーザエージェントでも、当該フィールドにアクセスできるようになります。

legend 要素タイプの内容は、処理対象の文字列と任意のインライン要素です。但し、フォームコントロールに含まれる要素は内容に持たないようにすべきでしょう。

属性

fieldset 要素の属性

Common
多くの要素で共通に定義されている属性の集合

legend 要素の属性

Common
多くの要素で共通に定義されている属性の集合
accesskey = Character
当該フィールドにアクセスする為のキーを指定します。 a 要素の accesskey 属性と同じです。

サンプル

<form action="...省略..." method="post">
  <fieldset>
    <legend accesskey="p">個人情報</legend>
    <p>...省略...</p>
  </fieldset>
  <fieldset>
    <legend accesskey="m">変額</legend>
    <p>...省略...</p>
  </fieldset>
</form>

フォームコントロールに付いては、実際の場面に応じて様々な要求があり、説明が煩雑になるので割愛します。注意点として、以下のものを挙げておきます:


Copyright © 2001, SUGAI, Manabu. All rights reserved. 著作権は放棄していません。
SEO [PR] ”š‘¬!–³—¿ƒuƒƒO –³—¿ƒz[ƒ€ƒy[ƒWŠJÝ –³—¿ƒ‰ƒCƒu•ú‘—