列挙属性

列挙属性 (HTML)

[7] 列挙属性 (れっきょぞくせい) (enumerated attribute) は、 幾つかの値の候補からいずれかを選んで指定できる属性です。

仕様書

意味

[27] 列挙属性は、キーワード有限集合のいずれかの値を取ると定義されている属性です >>9


[8] 列挙属性属性値となり得る値のことを、キーワード (keyword) といいます。

[28] 列挙属性には、いくつかの状態 (state) が定義されています。

[29]キーワードには、どの状態に対応するかの写像が定義されています。 複数のキーワードが1つの状態に対応する場合もあります。 >>9

[30] キーワードは、不適合とされていることもあります >>9

[31] 多くの場合、歴史的理由により同じ状態を表す複数のキーワードが存在しているものです。

[62] 列挙属性反映に関する処理で、キーワード大文字小文字の正準形 (canonical case) が使われることがあります >>56。 「正準形」とは仕様書で示されている大文字小文字の表記のことと思われますが、 現在規定されているものはすべて小文字となっています。


[32] 列挙属性には、 非妥当値既定値 (invalid value default) が定義されていることがあります >>9

[33] 列挙属性には、 欠値既定値 (missing value default) が定義されていることがあります >>9

[52] これらの値は状態です。いずれかのキーワード写像される状態のこともあれば、 専用の状態のこともあります。 非妥当値既定値欠値既定値は同じことも多いですが、違うこともあります。

[60] 欠値既定値が定義されていて非妥当値既定値が定義されていない場合、 実質的に欠値既定値と同じものが非妥当値既定値となります。 (明示的に両者が等しいと定義されている場合もあります。)

[53] 非妥当値既定値が定義されていて欠値既定値が定義されていないこともあります。

属性値

[11] 列挙属性属性値は、 キーワードのいずれかと ASCII大文字・小文字不区別で一致しなければなりません >>9

[34] ただし、不適合とされるキーワードであってはなりません >>9

[35] キーワードの前後に空白を挿入することは、 認められていません。

[54] なお、キーワード空文字列となることもあります。

[55] キーワードの多くはASCII英数字で構成されていますが、 enctype 属性のように記号が含まれることもあります。 非ASCII文字が現れる列挙属性はありません。

処理

[36] 要素要素列挙属性名前状態は、 次のようにして得られます >>9

  1. [37] 要素名前内容属性が指定されている場合、
    1. [38] を、要素名前属性値に設定します。
    2. [39] 要素名前属性ASCII大文字・小文字不区別で等しいキーワードがある場合、
      1. [40] そのキーワードに対応する状態を返します。
    3. [43] それ以外で、非妥当値既定値がある場合、
      1. [44] その非妥当値既定値状態を返します。
    4. [41] それ以外で、欠値既定値がある場合、
      1. [42] その欠値既定値状態を返します。
    5. [45] それ以外の場合、
      1. [46] null を返します。
  2. [47] それ以外の場合、
    1. [48] 欠値既定値がある場合、
      1. [49] その欠値既定値状態を返します。
    2. [50] それ以外の場合、
      1. [51] null を返します。

IDL 属性

[57] 多くの列挙属性には、それを反映 >>56 する IDL属性があります。

列挙属性の一覧

[12] 現在の HTML には次の列挙属性があります。

[58] HTML列挙属性
attr
属性
empty
空文字列
non
不適合キーワード
missing
欠値既定値
invalid
非妥当値既定値
idl
IDL属性
attr
as
idl
既知値のみに限定
attr
autocapitalize
missing
あり
invalid
あり
idl
特殊
attr
autocomplete
missing
あり
invalid
欠値既定値
idl
既知値のみに限定
attr
contenteditable
empty
あり
missing
invalid
欠値既定値
idl
特殊
attr
crossorigin
empty
あり
missing
invalid
あり
idl
DOMString?
attr
decoding
invalid
欠値既定値
missing
あり
idl
既知値のみに限定
attr
dir
idl
既知値のみに限定
attr
draggable
missing
invalid
欠値既定値
idl
特殊
attr
enctype
invalid
あり
missing
あり
idl
既知値のみに限定
attr
formenctype
invalid
あり
#
no missing value default
idl
既知値のみに限定
attr
inputmode
missing
invalid
欠値既定値
idl
既知値のみに限定
attr
kind
invalid
あり
missing
あり
idl
既知値のみに限定
attr
method
invalid
あり
missing
あり
idl
既知値のみに限定
attr
formmethod
invalid
あり
idl
既知値のみに限定
attr
preload
missing
実装定義
empty
あり
invalid
欠値既定値
idl
既知値のみに限定
attr
referrerpolicy
missing
あり
invalid
あり
empty
あり
idl
既知値のみに限定
attr
scope
missing
invalid
欠値既定値
idl
既知値のみに限定
attr
shape
non
あり
missing
あり
invalid
欠値既定値
idl
DOMString
attr
spellcheck
missing
empty
あり
invalid
欠値既定値
idl
特殊
attr
translate
missing
empty
あり
invalid
欠値既定値
idl
特殊
attr
type (button)
missing
あり
invalid
欠値既定値
idl
既知値のみに限定
attr
type (input)
missing
あり
invalid
欠値既定値
idl
既知値のみに限定
attr
updateviacache
missing
あり
invalid
あり
idl
既知値のみに限定
attr
workertype
missing
あり
invalid
idl
既知値のみに限定
attr
wrap
missing
あり
non
あり
invalid
欠値既定値
idl
DOMString
attr
behavior
non
すべて
missing
あり
invalid
欠値既定値
idl
DOMString
attr
direction
non
すべて
missing
あり
invalid
欠値既定値
idl
DOMString

[25] 次の属性は、列挙属性ですが、仕様書上は状態と値を直接規定する通常の方法ではなく、 他の定義を参照する形となっています。 (仕様書の定義上は特別ですが、 利用上は特別な所はありません。)

[61] wrap 属性は、どのキーワードとも異なる (不適合の) 値 offレンダリング上意味を持つことになっています。 (列挙属性としては非妥当値既定値 (がないので欠値既定値) が選択されていることになりますが、 他の値の場合と挙動が異なります。)

[63] preload 属性欠値既定値は、 利用者エージェント依存とされています。ただし推奨される値は規定されています。

[13] 廃止された属性にも、列挙属性だったものが少なくありませんでした。 廃止された属性の一部 (例えば align 属性) は現在もWebブラウザーレンダリング時には参照されることになっていますが、 仕様書上は利用者エージェントスタイルシートとして記述されており、 形式的には列挙属性とされていません。

[64] かつての keygen 要素keytype 属性は、欠値既定値利用者エージェント依存とされていました。

[65] かつての menu 要素type 属性は、欠値既定値親要素依存とされていました。 (親要素次第でどこまでも祖先方向に遡っていくことがありました。)

[19] <ol type>は、列挙属性に近いですが、 大文字小文字を区別します。

[22] 廃止された <li type><dir type> は、列挙属性である <ul type>大文字小文字を区別する <ol type> の両方の属性値を指定できることになっていました。

[21] autocomplete は、かつては列挙属性でしたが、 その後の拡張で独自の構文となりました。

[20] <link as> は、列挙属性に近いですが、 大文字小文字を区別します。反映するIDL属性Web IDL列挙型 RequestDestination として定義されています。

歴史

列挙型 (SGML)

[1] WebSGML では同じ要素型の複数の列挙型の属性で、選択肢として同じ名前字句が含まれていてもかまいません。

例 : (素の SGML では不当、 Web SGML では妥当)

<!ATTLIST block
   align (left|center|right) #IMPLIED
  valign (top|center|bottom) #IMPLIED>

しかしながら、この場合、重複した値が使われる属性指定では属性名の省略ができなくなります。 (K.4.4.2 参照。) 例 :

  • <block left/>
  • <block bottom/>
  • × <block center/>
  • <block left bottom/>
  • × <block center center/>

90年代の HTML

[10] HTML列挙属性SGML列挙型属性に遡ります。 HTML4 までの HTML 仕様は SGML DTD を使って記述されていましたので、 SGML属性型列挙型で規定されているものが列挙属性とされていました。 それらは後に XHTML でも XML DTD 上で列挙型として記述されました。

Web Forms 2.0

[2] Web Forms 2.0 では、いくつかの属性が、 決められた値のうちのいずれかを取ると定義されていました。 従来の版の HTML では列挙型属性ブール型属性と呼ばれていたものがそれにふくまれました。

[4] 大文字と小文字: 属性値比較は、大文字・小文字不区別で行います。 WF2 2.3

[5] 空白: Web Forms 2.0 では、 HTML 4 の定義とは異なり、 空白の削除はしてはなりませんWF2 2.3

但し、使用している DTD によっては、 XML の規則に従い、 HTML レベルの処理以前に属性値空白正規化が行われているかもしれません。

[6] 従って、 HTML文書

<input type=" text ">
不適合です。

HTML5

[59] contenteditable空文字列キーワードである点で HTML5 より前の列挙属性の定義には合致しませんでした。 methodformmethod も「/」がキーワードに含まれているため HTML5 より前の列挙属性の定義には合致しませんでした。

[14] [whatwg] IDL attribute reflecting enumerated attributes not limited to only know values ( 版) <http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/027697.html>

[15] [whatwg] IDL attribute reflecting enumerated attributes not limited to only know values ( ( 版)) <http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/028201.html>

[16] 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 ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=5536&to=5537>

[17] XBL 2.0 ( ( 版)) <http://dev.w3.org/2006/xbl2/Overview.html#attributes-containing-keywords>

[18] XML Binding Language (XBL) 2.0 ( ( 版)) <http://www.w3.org/TR/2007/CR-xbl-20070316/#state>

[23] Case-sensitive as="" for <link> is weird · Issue #1665 · whatwg/html () <https://github.com/whatwg/html/issues/1665>

[24] Do not repeat the referrer policies (domenic著, ) <https://github.com/whatwg/html/commit/4c228d3fd9e61dee2c45ee0cd7722e1671f6ca9f>

[26] Make <link>'s as="" attribute case-insensitive (domenic著, ) <https://github.com/whatwg/html/commit/9c7da4998f005c1799b04f452cb6c4a618f2d42e>

[66] Limit crossOrigin reflection to only known values (ayg著, ) <https://github.com/whatwg/html/commit/d967dc0120c137d0eb22808d4eaac0726cd8ea78>

[67] Editorial: always state invalid value default (GloverDonovan著, ) <https://github.com/whatwg/html/commit/7e941ae96b264d4743ea0afac00c3b3209ab0cde>

[68] Be explicit about missing value default & invalid value default · Issue #173 · whatwg/html () <https://github.com/whatwg/html/issues/173>

[69] Be explicit about missing value default and invalid value default by GloverDonovan · Pull Request #3526 · whatwg/html () <https://github.com/whatwg/html/pull/3526>

[70] Do not allow http-equiv values curated via wiki (domenic著, ) <https://github.com/whatwg/html/commit/72d084b81fa94915518b9cf279afef87d835e88e>