* 列挙属性 (HTML) [7] [[HTML]] では、有限個の[[キーワード]]のいずれかを取る[[属性]]を[DFN[[RUBY[列挙属性][れっきょぞくせい]@en[enumerated attribute]]]]といいます。 [SRC[[[Web Applications 1.0]]]] [8] [[列挙属性]]は、それに対応する[DFN[[RUBY[状態]@en[じょうたい]@en[state]]]]を持ち、 [[属性値]]によってどの[[状態]]にあるかが決定します。 ** 仕様書 - [9] [[Web Applications 1.0]] -- ** 状態 [11] [[列挙属性]]では、 -[[属性値]]となるキーワード -- [[空文字列]]であることもある -- キーワードが[[不適合]]であることもある -キーワードと[[状態]]の対応 -- キーワードに対応しない状態もある -- 複数のキーワードが1つの状態に対応することもある -[[非妥当値既定値]] -- ないこともある -[[欠値既定値]] -- ないこともある が定義されます。 = [[属性値]]がキーワードと[[ASCII大文字・小文字不区別]]でいずれかのキーワードに一致すれば、そのキーワードに相当する[[状態]]であるとします。 = そうでない場合で、[[属性]]が[[指定]]されている場合は、[DFN[[RUBYB[非妥当値既定値]@en[invalid value default]]]]があれば、その[[状態]]であるとします。 = そうでない場合で、[DFN[[RUBYB[欠値既定値]@en[invalid value default]]]]があれば、その[[状態]]であるとします。 = それ以外の場合、どの[[状態]]でもありません。 ** 歴史 *** SGML HTML 時代 [10] [[HTML]] の[[列挙属性]]は [[SGML]] の[[列挙型]]の[[属性]]に遡ります。 [[HTML4]] までの [[HTML]] 仕様は [[SGML DTD]] を使って記述されていましたので、 [[SGML]] で[[属性型]]が[[列挙型]]で規定されているものが[[列挙属性]]とされていました。 それらは後に [[XHTML]] でも [[XML DTD]] 上で[[列挙型]]として記述されました。 *** Web Forms 2.0 [2] [[Web Forms 2.0]] では、いくつかの[[属性]]が、 決められた値のうちのいずれかを取ると定義されていました。 従来の版の [[HTML]] では[[列挙型]]の[[属性]]や[[ブール型属性]]と呼ばれていたものがそれにふくまれました。 **** 仕様書 [3] - [[Web Forms 2.0]] -- [CSECTION@en[2.3. Changes to existing controls]] **** 比較と正規化 [4] '''大文字と小文字''': [[属性値]]の[[比較]]は、[[大文字・小文字不区別]]で行います。 [SRC@en[WF2 2.3]] [5] '''空白''': [[Web Forms 2.0]] では、 [[HTML 4]] の定義とは異なり、 [[空白]]の削除は[['''してはなりません''']]。 [SRC@en[WF2 2.3]] ;; 但し、使用している [[DTD]] によっては、 [[XML]] の規則に従い、 [[HTML]] レベルの処理以前に[[属性値]]の[[空白]]の[[正規化]]が行われているかもしれません。 [6] 従って、 [[HTML文書]] [PRE(HTML invalid example code)[ ]PRE] は[[不適合]]です。 ** 列挙属性一覧 [12] [[HTML5]] に[[適合]]する[[列挙属性]]は以下のものです。 - [CODE(HTMLa)@en[[[autocomplete]]]] - [CODE(HTMLa)@en[[[contenteditable]]]] - [CODE(HTMLa)@en[[[dir]]]] - [CODE(HTMLa)@en[[[draggable]]]] - [CODE(HTMLa)@en[[[enctype]]]] - [CODE(HTMLa)@en[[[formenctype]]]] - [CODE(HTMLa)@en[[[formmethod]]]] - [CODE(HTMLa)@en[[[method]]]] - [CODE(HTMLa)@en[[[scope]]]] - [CODE(HTMLa)@en[[[shape]]]] - [CODE(HTMLa)@en[[[spellcheck]]]] - [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[command]]]]) - [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[button]]]]) - [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[input]]]]) - [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[menu]]]]) - [CODE(HTMLa)@en[[[wrap]]]] ;; [CODE(HTMLa)@en[[[contenteditable]]]] は[[空文字列]]も[[キーワード]]である点で [[HTML5]] より前の[[列挙属性]]の定義には合致しませんでした。 [CODE(HTMLa)@en[[[method]]]] や [CODE(HTMLa)@en[[[formmethod]]]] も「/」が[[キーワード]]に含まれているため [[HTML5]] より前の[[列挙属性]]の定義には合致しませんでした。 [13] [[HTML5]] で「[[廃止]]」として挙げられている[[列挙属性]]または[[列挙属性]]に相当するものは以下のものです。 - [CODE(HTMLa)@en[[[align]]]] - [CODE(HTMLa)@en[[[behavior]]]] - [CODE(HTMLa)@en[[[direction]]]] - [CODE(HTMLa)@en[[[frame]]]] - [CODE(HTMLa)@en[[[rules]]]] - [CODE(HTMLa)@en[[[scrolling]]]]] - [CODE(HTMLa)@en[[[truespeed]]]] - [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[ul]]]]) - [CODE(HTMLa)@en[[[valign]]]] ;; [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[ol]]]]), [CODE(HTMLa)@en[[[type]]]] ([CODE(HTMLe)@en[[[li]]]]) も[[列挙属性]]に近いですが、[[大文字]]・[[小文字]]を区別する点が旧来・[[HTML5]] のいずれの[[列挙属性]]の定義にも合致しません。 * 列挙型 (SGML) [1] [[WebSGML]] では同じ[[要素型]]の複数の列挙型の[[属性]]で、選択肢として同じ[[名前字句]]が含まれていてもかまいません。 例 : (素の SGML では不当、 Web SGML では妥当) [PRE[ ]PRE] しかしながら、この場合、重複した値が使われる[[属性指定]]では[[属性名]]の省略ができなくなります。 (K.4.4.2 参照。) 例 : -○ [SAMP(SGML)[]] -○ [SAMP(SGML)[]] -× [SAMP(SGML)[]] -○ [SAMP(SGML)[]] -× [SAMP(SGML)[]]