* 列挙属性 (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] [[列挙属性]]では、 -[[属性値]]となるキーワード ([[空文字列]]であることもある) -キーワードが[[適合]]か[[不適合]]か -キーワードと[[状態]]の対応 -[[非妥当値既定値]] -[[欠値既定値]] が定義されます。 (2つの既定値はないこともあります。) = [[属性値]]がキーワードと[[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] は[[不適合]]です。 * 列挙型 (SGML) [1] [[WebSGML]] では同じ[[要素型]]の複数の列挙型の[[属性]]で、選択肢として同じ[[名前字句]]が含まれていてもかまいません。 例 : (素の SGML では不当、 Web SGML では妥当) [PRE[ ]PRE] しかしながら、この場合、重複した値が使われる[[属性指定]]では[[属性名]]の省略ができなくなります。 (K.4.4.2 参照。) 例 : -○ [SAMP(SGML)[]] -○ [SAMP(SGML)[]] -× [SAMP(SGML)[]] -○ [SAMP(SGML)[]] -× [SAMP(SGML)[]]