* フォーム制御子系 value 属性 (HTML, XHTML 1) [1] [[HTML]] の [CODE(HTMLe)[[[input]]]] 要素や [CODE(HTMLe)[[[button]]]] 要素や [CODE(HTMLe)[[[option]]]] 要素の [DFN[[CODE(HTMLa)[value]] 属性]]は、その[[制御子]]の[[初期値]]を指定します。 [4] 仕様書: - [[HTML 4]] -- [CODE(HTMLe)[input]] 要素 [CODE(HTMLa)[value]] 属性 -- [CODE(HTMLe)[button]] 要素 [CODE(HTMLa)[value]] 属性 -- [CODE(HTMLe)[option]] 要素 [CODE(HTMLa)[value]] 属性 -- [CITE[HTML 4 Changes]] - [[Web Forms 2.0]] -- [CSECTION@en[2.3. Changes to existing controls]] -- [CSECTION@en[2.18. Handling unexpected elements and values]] ** 属性値 [8] この属性の値は [CODE(SGML)[[[CDATA]]]] です。 大文字・小文字は区別されます。 [43] '''空白''' [[属性値]]中の[[空白]]は、除去[['''してはなりません''']]。 [SRC@en[WF2 2.3]] ;; [[XML]] 等の規則による[[空白]]の[[正規化]]は、 必要ならば行われます。ここで禁止されているのは、 それ以上の処理です。 [26] この属性は、 [[DTD]] 的には [CODE(SGML)[#[[IMPLIED]]]] です。 [CODE(HTMLe)[input]] 要素の場合、 [CODE(HTMLa)[[[type]]]] 属性が [CODE(HTML)[[[radio]]]] または [CODE(HTML)[[[checkbox]]]] の時''以外''は、 この属性は省略できます。 [SRC[HTML 4 17.4]] [WEAK[(HTML 4.0 では誤って [CODE(HTML)[checkbox]] でも省略できるようなことが書いてありました [SRC[HTML 4.01 A.1.1.12]]。)]] [CODE(HTMLe)[button]] 要素の場合も省略できます。 [SRC[HTML 4 17.5]] [CODE(HTMLe)[option]] 要素の場合、省略すると要素の[[内容]]が初期値として使われます。 [42] [[チェック箱制御子]] ([CODE(HTML)@en[[[checkbox]]]]) と[[ラジオ・ボタン制御子]] ([CODE(HTML)@en[[[radio]]]]) (>>41 を参照。) を''除き''、[[フォーム制御子]]の [CODE(HTMLa)@en[[[value]]]] [[属性]]の[[既定値]]は[[空文字列]]です。 [SRC@en[WF2 2.3]] [35] HTML 4 DTD の[[注釈]] (参考) には [Q[Specify for radio buttons and checkboxes]] (ラジオ・ボタンとチェック箱に指定) と書かれています。が、他の説明は小文字から始まるのにここだけ大文字から始まっているので、[[命令形]]で[Q[指定しなければなりません]]という意味かもしれません。 [50] '''誤り処理 ([CODE(DOM)@en[typeMismatch]])''' [CODE(HTMLa)@en[[[value]]]] [[内容属性]]が [CODE(HTMLa)@en[[[type]]]] に照らして[[非妥当]]な場合、 [[利用者エージェント]]は無視[['''しなければなりません''']]。 [CODE(DOMa)@en[[[defaultValue]]]] はその値が使われますが、[[制御子]]には使われません ([[値が選択されていない]]状態となります)。 [SRC@en[WF2 2.18]] [51] '''誤り処理 (制約違反)''' [CODE(HTMLa)@en[[[value]]]] [[内容属性]]が [CODE(HTMLa)@en[[[min]]]、[CODE(HTMLa)@en[[[max]]]]、]] [CODE(HTMLa)@en[[[step]]]]、[CODE(HTMLa)@en[[[maxlength]]]] 等に照らして[[非妥当]]な場合 ([[原始文書]]でそうである場合や [[DOM]] 操作でそうなった場合など)、 [[利用者エージェント]]は[[制御子]]にその値を設定[['''しなければなりません''']]。 それができない場合には、最も近い値と[['''しなければなりません''']]。 [SRC@en[WF2 2.18]] ;; 各[[属性]]に照らして適当な値に変更されるまで、 その[[フォーム]]は[[提出]]できません。 [53] testtest ([[TEST]] [WEAK[2007-03-12 10:01:45 +00:00]]) [[#comment]] ** 押しボタン制御子 (HTML input 要素型) [28] 押しボタン制御子 ([CODE(HTML)[type]] が [CODE(HTML)[[[button]]]]) では、 [[UA]] は [CODE(HTMLa)[value]] 属性値をボタンの札として使うべきです。 [SRC[HTML 4 17.4.1]] 詳しくは [CODE(HTML)[[[button]]]] 制御子の説明をご覧ください。 [[#comment]] ** ファイル選択制御子 (HTML input 要素型) [27] ファイル選択制御子 ([CODE(HTMLa)[type]] が [CODE(HTML)[[[file]]]]) では、 [[UA]] は、 [CODE(HTMLa)[value]] 属性値をファイル名の初期値として使っても構いません。 [SRC[HTML 4 17.4.1]] 詳しくは [CODE(HTML)[[[file]]]] 制御子の説明をご覧ください。 [[#comment]] ** 画像提出ボタン制御子 (HTML input 要素型) [33] HTML 4 では [[[CODE(HTMLe)[input]]//[CODE(HTML)[image]]]] では [CODE(HTMLa)[value]] 属性は使われていませんが、 1996年の W3C [[NOTE]] >>32 は、 [CODE(HTMLa)[[[alt]]]] 属性と同じ役割で使用することを推奨していました。 ([[代替文]]として使われるだけで、他のボタン制御子とは異なり、 [[初期値]]・[[現在値]]として使われるものではないことに注意してください。) [34] 実際にそれにしたがって使われたことがあったかどうかは、現在のところ不明です。 [32] [CITE[Imagemapped Images and Image-Incapable User Agents]], , 発表当時の URI は 。 [Q[Status of this document]] によれば現在の W3C [[WD]] のような位置付けだったらしいのですが、 2004年現在、 によれば [[Working Group Note]] に分類されています。 同時期の他の HTML 系 WD とは異なり、直接 HTML 4 仕様書に取込まれてはいないようです。 [[#comment]] ** チェック箱制御子 ([CODE(HTML)@en[checkbox]])、ラジオ・ボタン制御子 ([CODE(HTML)@en[radio]]) [41] '''既定値''' [[チェック箱制御子]] ([CODE(HTML)@en[[[checkbox]]]])、 [[ラジオ・ボタン制御子]] ([CODE(HTML)@en[[[radio]]]]) の場合の [CODE(HTMLa)@en[[[value]]]] [[属性]]の[[既定値]]は、 [CODE(HTML)@en[[[on]]]] です。 [SRC@en[WF2 2.3]] ;; 従いまして、 [CODE(HTMLa)@en[[[value]]]] [[内容属性]]が与えられていない時の [CODE(DOMa)@en[[[value]]]] [[DOM属性]]の値は [CODE(HTML)@en[[[on]]]] です。 [[フォーム提出]]時の値も [CODE(HTML)@en[[[on]]]] です。 ** 選択 ([CODE(HTMLe)@en[select]] 要素、[CODE(HTMLe)@en[option]] 要素) [57] [CODE(DOMi)@en[[[HTMLSelectElement]]]] の [CODE(DOMa)@en[[[value]]]]、 [CODE(DOMi)@en[[[HTMLOptionElement]]]] の [CODE(DOMa)@en[[[value]]]] のいずれも、 [[WinIE7]] では選択された [CODE(HTMLe)@en[[[option]]]] [[要素]]または当該 [CODE(HTMLe)@en[[[option]]]] [[要素]]で明示的に [CODE(HTMLa)@en[[[value]]]] [[内容属性]]が指定されていない限り、[[空文字列]]が返されます。 ** 出力 ([CODE(HTMLe)@en[output]]) [44] [CODE(HTMLe)@en[[[output]]]] [[要素]]に対応する [[DOM界面]] [CODE(DOMi)@en[[[HTMLOutputElement]]]] の [DFN[[CODE(DOMa)@en[[[value]]]] [[DOM属性]]]]は、 [CODE(HTMLe)@en[[[output]]]] [[要素]]の[[現在値]]です。 ;; [CODE(HTMLe)@en[[[output]]]] の[[現在値]]は、 [[内容]]とされています。 [SRC@en[WF2 2.13]] [48] :状態:[[WHATWG]] [[WD]] :[[DOM界面]]:[CODE(DOMi)@en[[[HTMLOutputElement]]]] :[[属性名]]:[CODE(DOMa)@en[[[value]]]] ([Q@en[value]] ([Q[値]]) より) :[[データ型]]:[CODE(DOM)@en[[[DOMString]]]] :[[読取専用]]:[[偽]] :[[例外]]:[CODE(DOMa)@en[[[textContent]]]] と同じ [45] 仕様書: - [[Web Forms 2.0]] -- [CSECTION@en[2.13. The [CODE(HTMLe)@en[[[output]]]] element]] -- [CSECTION@en[2.18. Handling unexpected elements and values]] [46] '''読み取り''' [CODE(DOMa)@en[[[textContent]]]] と同じです。 [SRC@en[WF2 2.13]] [47] '''書き込み''' [[利用者エージェント]]の動作は [CODE(DOMa)@en[[[textContent]]]] と同じと[['''しなければなりません''']]。 [SRC@en[WF2 2.13, 2.18]] [49] '''[CODE(DOMe)@en[change]] 事象''' [CODE(DOMa)@en[[[value]]]] が直接的または間接的に [[DOM]] [[木]]を介して変更された時には、 [CODE(HTMLe)@en[[[output]]]] [[要素]]に対して [CODE(DOMe)@en[[[change]]]] [[事象]]を[[放火]][['''しなければなりません''']]。 [SRC@en[WF2 2.13]] [[#comment]] ** 例 [10] メニュー制御子の例 [PRE(HTML)[ ]PRE] [[#comment]] ** メモ [9] >>26 [CODE(HTMLe)[option]] 要素の [CODE(HTMLa)[value]] 属性は、 送信される値が[[仮名]]・[[漢字]]だと面倒なことになるから、 要素の内容は仮名・漢字の[[日本語文]]にしつつも、 [CODE(HTMLa)[value]] は[[ラテン文字]]で、 という使い方がよくされますね (>>10)。 [29] [[w3m]] には [CODE(HTMLe)[input]] [CODE(HTMLa)[value]] 内の改行を無視してしまう不具合があるそうです。 [SRC[[w3m-dev 04110]] [CODE(HTMLa)[type]] が [CODE(HTML)[text]] なら仕方がないかもしれませんが、 [CODE(HTML)[hidden]] の時に落としてしまうのは問題ですね。 ([[名無しさん]] [WEAK[2004-10-31 01:00:24 +00:00]]) [30] >>29 そういえば HTML は [CODE(SGML)[[[CDATA]]]] 属性の値の処理についての規定があるのでした。だから w3m は HTML 4 的には正しいのだそうな。 (でも HTML 4 の仕様が現実にあってない。) ([[名無しさん]] [sage]) [31] [CITE[Bug 15204 - hidden inputs strip line feeds from value attribute]] >>29-30 と同じ話題。 ([[名無しさん]] [sage]) [39] [CITE[inputタグのvalueについて]] ([[名無しさん]]) [40] , , , ,[[Firefox]] 1.5 ,[[Opera]] 8.5 ,[[WinIE]] 6.0 ,[CODE(HTML)@en[[[text]]]] ,[CODE(HTML)@en[ ]] ,表示 ,改行前まで ,改行除去 ,改行除去 , , ,[CODE(DOMa)@en[[[value]]]] ,改行前まで ,改行除去 ,改行除去 , , ,[CODE(DOMa)@en[[[defaultValue]]]] ,[[CRLF]] ,改行除去 ,改行除去 , , ,[CODE(DOMm)@en[[[getAttribute]] ('[[value]]')]] ,[[CRLF]] ,改行除去 ,改行除去 , , ,[[提出]] ,改行前まで ,改行除去 ,改行除去 ,[CODE(HTML)@en[[[text]]]] ,[[CRLF]] ,表示 ,改行前まで ,改行除去 ,改行除去 , , ,[CODE(DOMa)@en[[[value]]]] ,改行前まで ,改行除去 ,改行除去 , , ,[CODE(DOMa)@en[[[defaultValue]]]] ,[[LF]] ,改行除去 ,改行除去 , , ,[CODE(DOMm)@en[[[getAttribute]] ('[[value]]')]] ,[[LF]] ,改行除去 ,改行除去 , , ,[[提出]] ,改行前まで ,改行除去 ,改行除去 ,[CODE(HTML)@en[[[hidden]]]] ,[CODE(HTML)@en[ ]] ,[[CRLF]] ,[[CRLF]] ,[[CR]] , , ,[CODE(DOMa)@en[[[defaultValue]]]] ,[[CRLF]] ,[[CRLF]] ,[[CR]] , , ,[CODE(DOMm)@en[[[getAttribute]] ('[[value]]')]] ,[[CRLF]] ,[[CRLF]] ,[[CRLF]] , , ,[[提出]] ,[[CRLF]] ,[[CRLF]] ,[[CRLF]] ,[CODE(HTML)@en[[[hidden]]]] ,[[CRLF]] ,[CODE(DOMa)@en[[[value]]]] ,[[LF]] ,[[LF]] ,[[CRLF]] , , ,[CODE(DOMa)@en[[[defaultValue]]]] ,[[LF]] ,[[LF]] ,[[CR]] , , ,[CODE(DOMm)@en[[[getAttribute]] ('[[value]]')]] ,[[LF]] ,[[LF]] ,[[CRLF]] , , ,[[提出]] ,[[CRLF]] ,[[LF]] ,[[CRLF]] ([[名無しさん]] [WEAK[2006-05-27 09:05:02 +00:00]]) * value 属性 (DOM Attr 界面) [5] 属性 [CODE[[VAR(DOMi)[[[Attr]]]].[CODE(DOMa)[value]]]] の値は、その属性節の[[属性値]]です。 設定する値・得られる値の型は [CODE(DOM)[[[DOMString]]]] です。その属性節の子節は複数個の文節や実体参照節があるかもしれませんが、 一つの文字列として設定又は取得します。 値を設定した時は、子節は一つの文節になります。 [6] この属性は method [CODE[[VAR(DOMi)[[[Element]]]].[CODE(DOMm)[[[getAttribute]]]]]], [CODE[[VAR(DOMi)[Element]].[CODE(DOMm)[[[setAttribute]]]]]] と同様に機能します。 [11] >>6 というか [CODE(DOMa)[[[nodeValue]]]] だよなあ、 もろ同じじゃない? なんで2つあるんだろう。どっちかは正規化するとかでもないみたいだし。 [7] 属性節が読取専用の時は当然値を設定することはできません。 例外 [CODE(DOM)[NO_MODIFICATION_ALLOWED_ERR]] が発生します。 - [DOM2] ''Document Object Model Core'' [54] [[DOM水準1]] [[FE]] の[[正誤表]]、[[DOM水準1]] [[SE]]、 [[DOM水準2]]、[[DOM水準3]]によると、[[節点]]が[[読取専用]]なら [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]] です。 ([[名無しさん]]) [[#comment]] * param 要素 value 属性 (HTML, XHTML 1) [15] [[HTML]] の [CODE(HTMLe)[[[param]] 要素の]] [DFN[[CODE(HTMLa)[value]] 属性]]は、引数値を指定します。 [16] 仕様書: [[HTML 4]] [[#comment]] ** 属性値 [17] この属性の値は [CODE(SGML)[[[CDATA]]]] です。 属性値は、物体によって解釈されます。 物体が引数ごとに構文的制約などを課しているかもしれません。 (それに対して不当であった場合の処理も HTML UA・物体の実装依存でしょう。) この属性は ([CODE(HTMLa)[[[valuetype]]]] や [CODE(HTMLa)[[[type]]]] によって修飾されることを除いては) HTML 的な意味を持ちません。 [18] この属性は省略可能です。 [[#comment]] ** 他との関係 [19] [CODE(HTMLa)[value]] で指定する引数値は、 同じ [CODE(HTMLe)[param]] 要素の [CODE(HTMLa)[[[name]]]] が引数名として対応します。 [20] 引数値の種類の指定として [CODE(HTMLa)[[[valuetype]]]] と [CODE(HTMLa)[[[type]]]] があります。 [[#comment]] ** メモ [[#comment]] * meta 要素 value 属性 (HTML, XHTML 1) [21] [[HTML]] の [CODE(HTMLe)[[[meta]]]] 要素で、 [DFN[[CODE(HTMLa)[value]] 属性]]が使われることがあります。 使われ方からして、 [CODE(HTMLa)[[[content]]]] 属性の誤りのようです。 [[#comment]] ** 例 [22] [PRE(HTML)[ ]PRE] 出典: ''Practical Scheme'' (2004年7月付け、2004年7月現在) [24] [PRE(HTML)[ ]PRE] 出典: ''WWW의 국제화와 한글'' ([[W3C]] 韓国事務所のウェブ・サイトの文章。1996年11月付け、2004年7月現在。) [23] で検索すると色々な自然言語の文章で大量に見つかります。 HTML のソースは本来 (正しく設定されていれば) [[Google]] の検索対象にはならないはずなので、 潜在的には莫大な量の文書が存在していると思われます。 [[#comment]] ** 実装 [25] [[emacs-w3m]] が正しく動作しない (正確には、 [CODE(HTMLa)[content]] 属性が無いのが原因。) という問題がありましたが、 2004年7月に修正されました。 ([emacs-w3m:7001]) [[#comment]] ** メモ [[#comment]] * メモ [36] [[WinIE 6]] の [CODE(DOM)@en[[VAR(DOMi)[[[Attr]]]].[CODE(DOMa)[[[value]]]]]] は[CODE(InfoProp)@en[[[指定]]]]されていないと [CODE(DOM)@en[[[null]]]] になりますが、 [[内在事象属性]]ではなぜか文字列の [CODE(JS)@en['[[null]]']] になります。 [CODE(DOM)@en[[[nodeValue]]]] では両方 [CODE(DOM)@en[[[null]]]] になります。 ([[名無しさん]] [WEAK[2005-09-03 11:14:50 +00:00]]) [37] [CODE(DOM)@en[[CODE(DOMi)@en[[[Attr]]]].[CODE(DOMa)[[[value]]]]]] は[[XML情報集合]]で[CODE(InfoProp)[[[正規化値]]]]に対応するとされています。 ;; [CODE(DOM)@en[[CODE(DOMi)[[[Attr]]]].[CODE(DOMa)[[[value]]]]]] と [CODE(DOM)@en[[CODE(DOMi)[[[Node]]]].[CODE(DOMa)[[[nodeValue]]]]]] (等価) は[[構文解析器]]から渡された[[正規化値]]が最初の値になると明記もされています。 その一方で、[[実体参照]]が[[属性値]]に含まれる場合は実装と読み込みのオプションに依存するともされています。 ;; ちなみに、[CODE(DOM)@en[[CODE(DOMi)@en[[[Node]]]].[CODE(DOMa)@en[[[textContent]]]]]]は定義が少し異なっていて、[[子供]]の[CODE(DOMa)@en[[[textContent]]]]の[[連接]]とされています。 ;; [[XML]] では、[[属性値表記]]内で[[参照]]されている[[実体]] (の[[実体値]]) に[[空白]][[文字]]が含まれている場合は、 [CODE(charname)@en[[[SPACE]]]] に[[正規化]]するとしています。 ;; [[XML//空白]] [[DOM]]の[CODE(DOMi)@en[[[EntityReference]]]]は対応する[CODE(DOMi)@en[[[Entity]]]]と同じ[[子孫]]を持つ、ただし[[名前空間]]に関する場合だけ例外だ、とされています。 そして[[正規化]]が行われるとき[CODE(DOMi)@en[[[EntityReference]]]]が問題になるかもとは書いてありますが、その時どうしろとはいっていません。 ;; 以上を踏まえた上で、[[DOM]]で[[属性値]]内の[[一般実体参照]]を[CODE(DOMi)@en[[[EntityReference]]]]にする場合、[[正規化]]はどうしたらよいのでしょう?? ([[名無しさん]]) [38] [CODE(DOMi)@en[[[EntityReference]]]]は使わないというのが、一番楽で正当な方法。 [[実体参照]]が入ったら[[属性値]]の[[正規化]]は諦めるというのが、楽なものの邪道な方法。 [CODE(DOMi)@en[[[Attr]]]]の[[子供]]の[CODE(DOMi)@en[[[EntityReference]]]]だけは[CODE(DOMa)@en[[[textContent]]]]の[[空白]][[文字]]を[CODE(charname)@en[[[SPACE]]]]に置き換えて[CODE(DOMa)@en[[[value]]]] ([CODE(DOMa)@en[[[nodeValue]]]], [CODE(DOMm)@en[[[getAttribute]]]], ...) を作るというのが、面倒だけどあまり不都合なくうまく動きそうな方法。 ただし[CODE(DOM)@en[[CODE(DOMi)[[[Attr]]]].[CODE(DOMa)@en[[[textContent]]]]]]と[CODE(DOM)@en[[CODE(DOMi)[[[Attr]]]].[CODE(DOMa)@en[[[value]]]]]]が違ってしまうのがちょっとアレ。 [56] [CITE[Re: introduction, plus some form input ideas]] ([[Ian Hickson ]] 著, [TIME[2008-11-29 20:45:28 +09:00]] 版) [58] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) [59] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) [60] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) [61] [CITE@en[(X)HTML5 Tracking]] ([TIME[2010-01-05 15:51:28 +09:00]] 版)