/
652.txt
441 lines (338 loc) · 16.6 KB
/
652.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
[7] [DFN[[RUBY[列挙属性][れっきょぞくせい]@en[enumerated attribute]]]]は、
幾つかの値の候補からいずれかを選んで[[指定]]できる[[属性]]です。
* 仕様書
[REFS[
- [9] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-06-16 08:10:52 +09:00]]) <https://html.spec.whatwg.org/#enumerated-attribute>
- [56] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-06-16 08:10:52 +09:00]]) <https://html.spec.whatwg.org/#reflect>
]REFS]
* 意味
[27]
[[列挙属性]]は、[[キーワード]]の[[有限集合]]のいずれかの値を取ると定義されている[[属性]]です
[SRC[>>9]]。
-*-*-
[8]
[[列挙属性]]の[[属性値]]となり得る値のことを、[DFN[[RUBYB[キーワード]@en[keyword]]]]といいます。
[28]
[[列挙属性]]には、いくつかの[DFN[[RUBYB[状態]@en[state]]]]が定義されています。
[29]
各[[キーワード][列挙属性]]には、どの[[状態][列挙属性]]に対応するかの[[写像]]が定義されています。
複数の[[キーワード][列挙属性]]が1つの[[状態][列挙属性]]に対応する場合もあります。
[SRC[>>9]]
[30]
[[キーワード][列挙属性]]は、[[不適合]]とされていることもあります [SRC[>>9]]。
;; [31] 多くの場合、[[歴史的理由]]により同じ[[状態][列挙属性]]を表す複数の[[キーワード][列挙属性]]が存在しているものです。
[62]
[[列挙属性]]の[[反映]]に関する処理で、[[キーワード][列挙属性]]の[RUBYB[[[大文字]]・[[小文字]]の正準形]@en[canonical case]]が使われることがあります
[SRC[>>56]]。
「正準形」とは[[仕様書]]で示されている[[大文字]]と[[小文字]]の表記のことと思われますが、
現在規定されているものはすべて[[小文字]]となっています。
-*-*-
[32]
[[列挙属性]]には、
[DFN[[RUBYB[非妥当値既定値]@en[invalid value default]]]]が定義されていることがあります
[SRC[>>9]]。
[33]
[[列挙属性]]には、
[DFN[[RUBYB[欠値既定値]@en[missing value default]]]]が定義されていることがあります
[SRC[>>9]]。
[52]
これらの値は[[状態][列挙属性]]です。いずれかの[[キーワード][列挙属性]]が[[写像]]される[[状態][列挙属性]]のこともあれば、
専用の[[状態][列挙属性]]のこともあります。
[[非妥当値既定値]]と[[欠値既定値]]は同じことも多いですが、違うこともあります。
[60]
[[欠値既定値]]が定義されていて[[非妥当値既定値]]が定義されていない場合、
実質的に[[欠値既定値]]と同じものが[[非妥当値既定値]]となります。
(明示的に両者が等しいと定義されている場合もあります。)
[53]
[[非妥当値既定値]]が定義されていて[[欠値既定値]]が定義されていないこともあります。
* 属性値
[11]
[[列挙属性]]の[[属性値]]は、
[[キーワード][列挙属性]]のいずれかと
[[ASCII大文字・小文字不区別]]で一致しなければ[MUST[なりません]] [SRC[>>9]]。
[34] ただし、[[不適合]]とされる[[キーワード][列挙属性]]であっては[MUST[なりません]]
[SRC[>>9]]。
;; [35] [[キーワード][列挙属性]]の前後に[[空白]]を挿入することは、
認められていません。
[54]
なお、[[キーワード][列挙属性]]は[[空文字列]]となることもあります。
[55]
[[キーワード][列挙属性]]の多くは[[ASCII英数字]]で構成されていますが、
[CODE[enctype]] [[属性]]のように[[記号]]が含まれることもあります。
[[非ASCII文字]]が現れる[[列挙属性]]はありません。
* 処理
[36] [[要素]][VAR[要素]]の[[列挙属性]][VAR[名前]]の[F[状態][列挙属性]]は、
次のようにして得られます [SRC[>>9]]。
[FIG(steps)[
= [37] [VAR[要素]]に[VAR[名前]][[内容属性]]が指定されている場合、
== [38] [VAR[値]]を、[VAR[要素]]の[VAR[名前]][[属性値]]に設定します。
== [39] [VAR[要素]]の[VAR[名前]][[属性]]に[VAR[値]]と
[[ASCII大文字・小文字不区別]]で等しい[[キーワード][列挙属性]]がある場合、
=== [40] その[[キーワード][列挙属性]]に対応する[[状態][列挙属性]]を返します。
== [43] それ以外で、[[非妥当値既定値]]がある場合、
=== [44] その[[非妥当値既定値]]の[[状態][列挙属性]]を返します。
== [41] それ以外で、[[欠値既定値]]がある場合、
=== [42] その[[欠値既定値]]の[[状態][列挙属性]]を返します。
== [45] それ以外の場合、
=== [46] [CODE[null]] を返します。
= [47] それ以外の場合、
== [48] [[欠値既定値]]がある場合、
=== [49] その[[欠値既定値]]の[[状態][列挙属性]]を返します。
== [50] それ以外の場合、
=== [51] [CODE[null]] を返します。
]FIG]
* IDL 属性
[57]
多くの[[列挙属性]]には、それを[[反映]] [SRC[>>56]] する [[IDL属性]]があります。
* 列挙属性の一覧
[12] 現在の [[HTML]] には次の[[列挙属性]]があります。
[FIG(table)[ [58] [[HTML]] の[[列挙属性]]
:attr: [[属性]]
:empty: [[空文字列]]
:non: [[不適合]][[キーワード][列挙属性]]
:missing: [[欠値既定値]]
:invalid: [[非妥当値既定値]]
:idl: [[IDL属性]]
:attr: [CODE(HTMLa)@en[as][<link as>]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[autocapitalize]]
:missing: あり
:invalid: あり
:idl: 特殊
:attr: [CODE(HTMLa)@en[autocomplete]]
:missing: あり
:invalid: [[欠値既定値]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[contenteditable]]]]
:empty: あり
:missing: 別
:invalid: [[欠値既定値]]
:idl: 特殊
:attr: [CODE(HTMLa)@en[crossorigin]]
:empty: あり
:missing: 別
:invalid: あり
:idl: [CODE[[[DOMString]][[?][nullable]]]]
:attr: [CODE(HTMLa)@en[decoding][<img decoding>]]
:invalid: [[欠値既定値]]
:missing: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[dir]]]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[draggable]]]]
:missing: 別
:invalid: [[欠値既定値]]
:idl: 特殊
:attr: [CODE(HTMLa)@en[[[enctype]]]]
:invalid: あり
:missing: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[formenctype]]]]
:invalid: あり
:#: no missing value default
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[inputmode]]
:missing: 別
:invalid: [[欠値既定値]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[kind][<track kind>]]
:invalid: あり
:missing: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[method]]]]
:invalid: あり
:missing: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[formmethod]]]]
:invalid: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[preload]]
:missing: [[実装定義]]
:empty: あり
:invalid: [[欠値既定値]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[referrerpolicy]]
:missing: あり
:invalid: あり
:empty: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[scope]]]]
:missing: 別
:invalid: [[欠値既定値]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[shape]]]]
:non: あり
:missing: あり
:invalid: [[欠値既定値]]
:idl: [CODE(IDL)@en[DOMString]]
:attr: [CODE(HTMLa)@en[[[spellcheck]]]]
:missing: 別
:empty: あり
:invalid: [[欠値既定値]]
:idl: 特殊
:attr: [CODE(HTMLa)@en[translate]]
:missing: 別
:empty: あり
:invalid: [[欠値既定値]]
:idl: 特殊
:attr: [CODE(HTMLa)@en[type][<button type>]] ([CODE(HTMLe)@en[[[button]]]])
:missing: あり
:invalid: [[欠値既定値]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[type][<input type>]] ([CODE(HTMLe)@en[[[input]]]])
:missing: あり
:invalid: [[欠値既定値]]
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[updateviacache]]
:missing: あり
:invalid: あり
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[workertype]]
:missing: あり
:invalid: 別
:idl: [[既知値のみに限定]]
:attr: [CODE(HTMLa)@en[[[wrap]]]]
:missing: あり
:non: あり
:invalid: [[欠値既定値]]
:idl: [CODE(IDL)@en[DOMString]]
:attr: [CODE(HTMLa)@en[[[behavior]]]]
:non: すべて
:missing: あり
:invalid: [[欠値既定値]]
:idl: [CODE(IDL)@en[DOMString]]
:attr: [CODE(HTMLa)@en[[[direction]]]]
:non: すべて
:missing: あり
:invalid: [[欠値既定値]]
:idl: [CODE(IDL)@en[DOMString]]
]FIG]
[25] 次の[[属性]]は、[[列挙属性]]ですが、[[仕様書]]上は状態と値を直接規定する通常の方法ではなく、
他の定義を参照する形となっています。 ([[仕様書]]の定義上は特別ですが、
利用上は特別な所はありません。)
[FIG(short list)[
- [CODE(HTMLa)@en[referrerpolicy]]
- [CODE(HTMLa)@en[as][<link as>]]
- [CODE(HTMLa)@en[workertype][<link workertype>]]
- [CODE(HTMLa)@en[updateviacache][<link updateviacache>]]
]FIG]
[61]
[CODE(HTMLa)@en[wrap]] [[属性]]は、どの[[キーワード][列挙属性]]とも異なる ([[不適合]]の) 値
[CODE[off][wrap]] が[[レンダリング]]上意味を持つことになっています。
([[列挙属性]]としては[[非妥当値既定値]] (がないので[[欠値既定値]]) が選択されていることになりますが、
他の値の場合と挙動が異なります。)
[63]
[CODE(HTMLa)@en[preload][preload=""]] [[属性]]の[[欠値既定値]]は、
[[利用者エージェント]]依存とされています。ただし推奨される値は規定されています。
[HISTORY[
[13] [[廃止]]された[[属性]]にも、[[列挙属性]]だったものが少なくありませんでした。
[[廃止]]された[[属性]]の一部 (例えば [CODE(HTMLa)@en[align]] [[属性]])
は現在も[[Webブラウザー]]の[[レンダリング]]時には参照されることになっていますが、
[[仕様書]]上は[[利用者エージェントスタイルシート]]として記述されており、
形式的には[[列挙属性]]とされていません。
[64]
かつての [CODE(HTMLe)@en[keygen]] [[要素]]の [CODE(HTMLa)@en[keytype]]
[[属性]]は、[[欠値既定値]]が[[利用者エージェント]]依存とされていました。
[65]
かつての [CODE(HTMLe)@en[menu]] [[要素]]の [CODE(HTMLa)@en[type][<menu type>]]
[[属性]]は、[[欠値既定値]]が[[親要素]]依存とされていました。
([[親要素]]次第でどこまでも[[祖先]]方向に遡っていくことがありました。)
]HISTORY]
[19] [CODE(HTML)@en[<ol type>]]は、[[列挙属性]]に近いですが、
[[大文字]]と[[小文字]]を区別します。
[HISTORY[
[22] [[廃止]]された [CODE(HTML)@en[<li type>]] と [CODE(HTML)@en[<dir type>]]
は、[[列挙属性]]である [CODE(HTML)@en[<ul type>]] と[[大文字]]・[[小文字]]を区別する
[CODE(HTML)@en[<ol type>]] の両方の[[属性値]]を指定できることになっていました。
[21] [CODE(HTMLa)@en[autocomplete]] は、かつては[[列挙属性]]でしたが、
その後の拡張で独自の構文となりました。
[20] [CODE(HTML)@en[<link as>]] は、[[列挙属性]]に近いですが、
[[大文字]]と[[小文字]]を区別します。[[反映]]する[[IDL属性]]は
[[Web IDL]]の[[列挙型]] [CODE[RequestDestination]] として定義されています。
]HISTORY]
* 歴史
** 列挙型 (SGML)
[1] [[WebSGML]] では同じ[[要素型]]の複数の列挙型の[[属性]]で、選択肢として同じ[[名前字句]]が含まれていてもかまいません。
例 : (素の SGML では不当、 Web SGML では妥当)
[PRE[
<!ATTLIST block
align (left|center|right) #IMPLIED
valign (top|center|bottom) #IMPLIED>
]PRE]
しかしながら、この場合、重複した値が使われる[[属性指定]]では[[属性名]]の省略ができなくなります。
(K.4.4.2 参照。)
例 :
-○ [SAMP(SGML)[<block left/>]]
-○ [SAMP(SGML)[<block bottom/>]]
-× [SAMP(SGML)[<block center/>]]
-○ [SAMP(SGML)[<block left bottom/>]]
-× [SAMP(SGML)[<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]] では[[列挙型]]の[[属性]]や[[ブール型属性]]と呼ばれていたものがそれにふくまれました。
[REFS[
- [3] [[Web Forms 2.0]]
-- [CSECTION@en[2.3. Changes to existing controls]] <http://www.whatwg.org/specs/web-forms/current-work/#changes>
]REFS]
[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)[
<input type=" text ">
]PRE]
は[[不適合]]です。
** HTML5
[59]
[CODE(HTMLa)@en[[[contenteditable]]]] は[[空文字列]]も[[キーワード]]である点で [[HTML5]] より前の[[列挙属性]]の定義には合致しませんでした。
[CODE(HTMLa)@en[[[method]]]] や [CODE(HTMLa)@en[[[formmethod]]]] も「/」が[[キーワード]]に含まれているため
[[HTML5]] より前の[[列挙属性]]の定義には合致しませんでした。
[14] [CITE['''['''whatwg''']''' IDL attribute reflecting enumerated attributes not limited to only know values]]
([TIME[2010-08-07 19:04:28 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/027697.html>
[15] [CITE[''''''[''''''whatwg'''''']'''''' IDL attribute reflecting enumerated attributes not limited to only know values]]
( ([TIME[2010-08-27 06:22:34 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/028201.html>
[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]] 版))
<http://html5.org/tools/web-apps-tracker?from=5536&to=5537>
[17] [CITE@en-US[XBL 2.0]]
( ([TIME[2012-05-03 02:23:03 +09:00]] 版))
<http://dev.w3.org/2006/xbl2/Overview.html#attributes-containing-keywords>
[18] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#state>
[23] [CITE@en[Case-sensitive as="" for <link> is weird · Issue #1665 · whatwg/html]]
([TIME[2016-08-15 13:38:23 +09:00]])
<https://github.com/whatwg/html/issues/1665>
[24] [CITE@en[Do not repeat the referrer policies]]
([[domenic]]著, [TIME[2016-08-26 06:33:48 +09:00]])
<https://github.com/whatwg/html/commit/4c228d3fd9e61dee2c45ee0cd7722e1671f6ca9f>
[26] [CITE@en[Make <link>'s as="" attribute case-insensitive]]
([[domenic]]著, [TIME[2017-04-26 05:59:59 +09:00]])
<https://github.com/whatwg/html/commit/9c7da4998f005c1799b04f452cb6c4a618f2d42e>
[66] [CITE@en[Limit crossOrigin reflection to only known values]]
([[ayg]]著, [TIME[2017-08-21 22:07:53 +09:00]])
<https://github.com/whatwg/html/commit/d967dc0120c137d0eb22808d4eaac0726cd8ea78>
[67] [CITE@en[Editorial: always state invalid value default]]
([[GloverDonovan]]著, [TIME[2018-03-05 13:36:29 +09:00]])
<https://github.com/whatwg/html/commit/7e941ae96b264d4743ea0afac00c3b3209ab0cde>
[68] [CITE@en[Be explicit about missing value default & invalid value default · Issue #173 · whatwg/html]]
([TIME[2018-03-06 17:40:26 +09:00]])
<https://github.com/whatwg/html/issues/173>
[69] [CITE@en[Be explicit about missing value default and invalid value default by GloverDonovan · Pull Request #3526 · whatwg/html]]
([TIME[2018-03-06 17:40:37 +09:00]])
<https://github.com/whatwg/html/pull/3526>