* 列挙属性 (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)[]]
[14] [CITE['''['''whatwg''']''' IDL attribute reflecting enumerated attributes not limited to only know values]]
([TIME[2010-08-07 19:04:28 +09:00]] 版)
[15] [CITE[''''''[''''''whatwg'''''']'''''' IDL attribute reflecting enumerated attributes not limited to only know values]]
( ([TIME[2010-08-27 06:22:34 +09:00]] 版))
[16] [CITE@en[Web Applications 1.0 r5537 Match UAs better for 'limited to known values' reflection.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10380]]
( ([TIME[2010-09-29 08:11:00 +09:00]] 版))
[17] [CITE[CSS Extensions for Multimodal Interaction]]
( ([TIME[2004-12-15 04:05:11 +09:00]] 版))
[18] [CITE[CSS Extensions for Multimodal Interaction]]
( ([TIME[2004-12-15 04:05:11 +09:00]] 版))