-
Notifications
You must be signed in to change notification settings - Fork 4
/
947.txt
456 lines (324 loc) · 33.7 KB
/
947.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
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
[5] [DFN[[RUBYB[[[属性選択子]]]@en[attribute selector]]]]は、[[要素]]の[[属性]]を表します
[SRC[>>4]]。
* 仕様書
[REFS[
- [4] '''[CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/#attribute-selectors>'''
- [77] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#selectors>
- [98] [CITE@en-US-x-hixie[WebVTT Standard]] ([TIME[2012-11-05 21:05:39 +09:00]] 版) <http://dev.w3.org/html5/webvtt/#pseudo-cue-selector>
]REFS]
* 意味
[6] [[属性選択子]]は、それに一致する[[属性]]を持つ[[要素]]と[[一致]]します [SRC[>>4]]。
[26] [[属性]]がどのように与えられるかには依存しません。 [[DTD]] や [[XML Schema]]、
[[利用者エージェント]]に組み込まれた[[語彙]]の知識などで間接的に[[既定値]]として与えられた[[属性]]であっても、
[[文書木]]に反映されていれば[[選択子]]の適用対象となり得ます。 [SRC[>>4]]
[27] しかし [[XML]] では[[外部部分集合]]を[[処理]]することが義務付けられていないなど、
必ずしも[[文書木]]にそのような[[属性]]が含まれているとは限りません。従って、
[[選択子]]は[[既定値]]に左右されないように書く[['''べきです''']] [SRC[>>4]]。
;; [37] 実際には[[Webブラウザー]]は [WEAK[([[XML]] 仕様上義務付けられている)]] [[内部部分集合]]内の[[既定値]]は
[WEAK[([[DOM]] に反映されるので)]] [[選択子]]の処理で考慮しますが、[[外部部分集合]]や[[引数実体]]内の[[既定値]]、
[[XML Schema]] その他の[[スキーマ言語]]の[[既定値]]は考慮しませんし、
また[[スキーマ]]以外の根拠を持つ[[既定値]]も使いません。
[97] [[WebVTT]] では[[WebVTT中間節点オブジェクト]]について、 [CODE@en[[[v]]]] と
[CODE@en[[[lang]]]] は特定の[[属性]]だけが存在しているように、それ以外は[[属性]]が存在しないように扱うことになっています。
[SRC[>>98]]
;; [99] [CODE@en[[[c]]]] は対応する[[属性]]が規定されておらず、存在しません。[[クラス選択子]]を使う必要があります。
;; [100] また [[WebVTT節点オブジェクトのリスト]]は[[ID選択子]]と[[一致]]しますが、
[[要素]]に相当するものでは無いようで、[[属性]]に相当するものも (明記されていませんが) 存在しないようです。
* 属性選択子の種類
[7] [[属性選択子]]には次の種類があります [SRC[>>4]]。
- [CODE(CSS)['''['''[VAR[attr]]''']''']]
- [CODE(CSS)['''['''[VAR[attr]]=[VAR[value]]''']''']]
- [CODE(CSS)['''['''[VAR[attr]]~=[VAR[value]]''']''']]
- [CODE(CSS)['''['''[VAR[attr]]|=[VAR[value]]''']''']]
- [CODE(CSS)['''['''[VAR[attr]]^=[VAR[value]]''']''']]
- [CODE(CSS)['''['''[VAR[attr]]*=[VAR[value]]''']''']]
- [CODE(CSS)['''['''[VAR[attr]]$=[VAR[value]]''']''']]
** 属性値なし
[12] [[属性名]]だけの指定の場合、[[属性]]が存在していることを表します [SRC[>>4]]。
** [CODE(CSS)[=]]
[13] [CODE(CSS)[[[=]]]] で[[属性値]]が指定されている場合、[[完全一致]]で等しい値が指定されていることを表します
[SRC[>>4]]。
** [CODE(CSS)[~=]]
[14] [CODE(CSS)[[[~=]]]] で[[属性値]]が指定されている場合、当該[[属性]]の値を[[空白]]区切りにしたときに、
そのいずれかと値が一致することを表します。[[空白]]区切りの結果のいずれかと比較されるため、
[[選択子]]で指定した値が[[空白]]を含んでいる場合は、何とも一致しません。
[SRC[>>4]]
[EG[
[15] 例えば、
[PRE(CSS example code)[
[tokens~="hoge"]
]PRE]
... は
[PRE(XML example code)[
<foo tokens="hoge fuga abc "/>
]PRE]
... と一致します。しかし、
[PRE(CSS example code)[
[tokens~="hoge fuga"]
]PRE]
や
[PRE(CSS example code)[
[tokens~=""]
]PRE]
... とは一致しません。
]EG]
;; [29] [[空白]]の定義はいろいろありますが、ここでの[[空白]]は[[空白 (CSS)]]
です。[[マーク付け言語]]によっては違った[[空白]]の定義を採用しているかもしれません。
;; [32] [CODE@en[[[class]]]] [[属性]]には[[クラス選択子]]があります。 [CODE(CSS)[[[~=]]]]
とほとんど同じですが[[詳細度]]が異なります。
*** 空文字列
[57] [[選択子]]で指定した値が[[空文字列]]である場合には、何とも一致しません [SRC[>>4]]。
[56] [[値]]や[[属性値]]が[[空文字列]]の場合について以前は仕様書は明記していませんでしたが、
当時の規定も文字通り解釈すれば、[[空]]の[[値]]はどんな[[属性値]]とも[[一致]]しませし、
[[空]]の[[属性値]]はどんな[[値]]とも[[一致]]しません。
[58] [[Firefox]] 2.0 も [[Opera]] 9 も、 >>56 の通りに実装しているようです。
*** 空白
[59] [[Firefox]] 2.0 の[[空白]]に
[CODE(char)[[[U+000C]]]] は含まれていないようです。
[60] [[Opera]] 9 の[[空白]]は [CODE(CSS)[[[~=]]]] では [CODE(char)[[[U+0020]]]] だけ、
[[クラス選択子]]では通常の[[空白]]に加えて [CODE(char)[[[U+000B]]]] も含まれるようです。
[61] [[Opera]] 9 はなぜか [CODE(CSS)[\a]] を [CODE(char)[[[U+000B]]]] と解釈します。
;; それ以外に[[改行]]の[[正規化]]は行っていないようです。
[62] [[属性値]]の先頭や末尾の[[空白]]が無視されるのかどうか仕様書は明記していません。
[63] [[Firefox]] 2.0 も [[Opera]] 9 も無視するようです。
[64] テスト:
[REFS[
- [CODE(CSS)[[[~=]]]]
--<http://suika.fam.cx/~wakaba/-temp/test/css/selectors/attr/includes/white-space-1.html>
--<http://suika.fam.cx/~wakaba/-temp/test/css/selectors/attr/includes/white-space-2.html>
- [[クラス選択子]]
-- <http://suika.fam.cx/~wakaba/-temp/test/css/selectors/class/white-space-1.html>
-- <http://suika.fam.cx/~wakaba/-temp/test/css/selectors/class/white-space-2.html>
]REFS]
** [CODE(CSS)[|=]]
[16] [CODE(CSS)[[[|=]]]] の後に[[属性値]]が続く場合、その値と一致するか、またはその値の後に
[CODE(CSS)[[[-]]]] が続くような[[属性値]]が指定されていることを表します。 [SRC[>>4]]
[EG[
[17] 例えば、
[PRE(CSS example code)[
[lang|=ja]
]PRE]
... は
[PRE(XML example code)[
<foo lang="ja"/>
]PRE]
... や
[PRE(XML example code)[
<foo lang="ja-JP"/>
]PRE]
... と一致します。
]EG]
;; [30] これは [[RFC 4647]] の[[基本濾過]]と似ていますが、 [CODE(lang)[[[*]]]]
が使えない点が異なります。
;; [33] [CODE(HTMLa)@en[[[lang]]]] [[属性]]には [CODE(CSS)@en[[[:lang]]]]
[[擬似クラス]]があります。
*** 空の値
[52] 仕様書には[[値]]が[[空文字列]]の場合について特に言及はありませんが、
文字通りに解釈すると、[[属性値]]が[[空文字列]]の場合や
[CODE(char)[[[-]]]] から始まる場合に[[一致]]することになります。
[53] [[Firefox]] 2.0 は >>52 のように解釈しますが、 [[Opera]] 9
は何とも[[一致]]しないと解釈するようです。
;;
[REFS[
- <http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=%5Blang%7C%3D%22%22%5D%20%7B%0A%20%20color%3A%20blue%3B%0A%7D;h=%3Cp%20lang%3D%22%22%3Elang%3D%22%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22-%22%3Elang%3D%22-%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22-X%22%3Elang%3D%22-X%22%3C%2Fp%3E;p=n;x=style-element>
]REFS]
*** 空白
[54] [[Firefox]] 2.0 でも [[Opera]] 9 でも、
[[値]]や[[属性値]]の中間の[[空白]]に関して[[比較]]の際に特に[[正規化]]は行われないようです。
[55] ただし [[Opera]] 9 では[[値]]の [CODE(char)[[[U+000A]]]]
がなぜか[[属性値]]の [CODE(char)[[[U+000B]]]]
と[[一致]]します。
;;
[REFS[
- <http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=.empty%20%5Blang%7C%3Dab%5D%2C%0A.u0009%20%5Blang%7C%3Da%5C9%20b%5D%2C%0A.u000a%20%5Blang%7C%3Da%5Ca%20b%5D%2C%0A.u000b%20%5Blang%7C%3Da%5Cb%20b%5D%2C%0A.u000c%20%5Blang%7C%3Da%5Cc%20b%5D%2C%0A.u000d%20%5Blang%7C%3Da%5Cd%20b%5D%2C%0A.u000du000a%20%5Blang%7C%3Da%5Cd%5Ca%20b%5D%2C%0A.u000du000b%20%5Blang%7C%3Da%5Cd%5Cb%20b%5D%2C%0A.u0020%20%5Blang%7C%3Da%5C%20b%5D%2C%0A.u0020u0020%20%5Blang%7C%3Da%5C%20%5C%20b%5D%20%7B%0A%20%20color%3A%20white%3B%0A%20%20background-color%3A%20blue%3B%0A%7D%0Atable%20%7B%0A%20%20border-collapse%3A%20collapse%3B%0A%7D%0Ath%2C%20td%20%7B%0A%20%20border%3A%201px%20solid%3B%0A%20%20text-align%3A%20center%3B%0A%7D;h=%3Ctable%3E%0A%3Cthead%3E%0A%3Ctr%3E%3Cth%3E%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22ab%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23x9%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23xa%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23xb%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23xc%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23xd%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23xd%3B%26amp%3B%23xa%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23xd%3B%26amp%3B%23xb%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23x20%3Bb%22%3C%2Fcode%3E%0A%3Cth%20scope%3Dcol%3E%3Ccode%3Elang%3D%22a%26amp%3B%23x20%3B%26amp%3B%23x20%3Bb%22%3C%2Fcode%3E%0A%3Ctbody%3E%0A%3Ctr%20class%3Dempty%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22ab%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du0009%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5C9%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du000a%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5Ca%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du000b%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5Cb%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du000c%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5Cc%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du000d%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5Cd%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du000du000a%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5Cd%5Ca%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du000du000b%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5Cd%5Ca%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du0020%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctr%20class%3Du0020u0020%3E%3Cth%20scope%3Drow%3E%3Ccode%3E%5Blang%3D%22a%5C%20%5C%20b%22%5D%3C%2Fcode%3E%0A%3Ctd%20lang%3D%22ab%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23x9%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xa%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xc%3Bb%22%3EXXXXXXXX%3Ctd%20lang%3D%22a%26%23xd%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xa%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23xd%3B%26%23xb%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3Bb%22%3EXXXXXXXX%0A%3Ctd%20lang%3D%22a%26%23x20%3B%26%23x20%3Bb%22%3EXXXXXXXX%0A%3C%2Ftable%3E%0A;p=n;x=style-element>
]REFS]
[5]
[[Firefox]] 2.0 は[[属性値]]の先頭や末尾に[[零]]個以上の
[CODE(char)[[[U+0009]]]], [CODE(char)[[[U+000A]]]],
[CODE(char)[[[U+000D]]]] の任意の組み合わせがあると、
無視して[[比較]]します。
むしろ[[値]]の先頭や末尾にこれらを明示しても[[一致]]しません。
;;
[REFS[
- <http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=%5Blang%7C%3Da%5D%20%7B%0A%20%20color%3A%20white%3B%0A%20%20background-color%3A%20blue%3B%0A%7D%0A;h=%3Cp%20lang%3D%22a%22%3Elang%3D%22a%22%3C%2Fp%3E%0A%3Chr%3E%0A%3Cp%20lang%3D%22%26%23x9%3Ba%22%3Elang%3D%22%26amp%3B%23x9%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23x9%3B%26%23x9%3Ba%22%3Elang%3D%22%26amp%3B%23x9%3B%26amp%3B%23x9%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23x9%3B%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23x9%3B%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xa%3B%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23xa%3B%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xa%3B%26%23xd%3Ba%22%3Elang%3D%22%26amp%3B%23xa%3B%26amp%3B%23xd%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xb%3Ba%22%3Elang%3D%22%26amp%3B%23xb%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xc%3Ba%22%3Elang%3D%22%26amp%3B%23xc%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xd%3Ba%22%3Elang%3D%22%26amp%3B%23xd%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xd%3B%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23xd%3B%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xd%3B%26%23xd%3Ba%22%3Elang%3D%22%26amp%3B%23xd%3B%26amp%3B%23xd%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23x20%3Ba%22%3Elang%3D%22%26amp%3B%23x20%3Ba%22%3C%2Fp%3E%0A%3Chr%3E%0A%3Cp%20lang%3D%22a%26%23x9%3B%22%3Elang%3D%22a%26amp%3B%23x9%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23x9%3B%26%23x9%3B%22%3Elang%3D%22a%26amp%3B%23x9%3B%26amp%3B%23x9%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23x9%3B%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23x9%3B%26amp%3B%23xa%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xa%3B%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23xa%3B%26amp%3B%23xa%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xa%3B%26%23xd%3B%22%3Elang%3D%22a%26amp%3B%23xa%3B%26amp%3B%23xd%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xb%3B%22%3Elang%3D%22a%26amp%3B%23xb%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xc%3B%22%3Elang%3D%22a%26amp%3B%23xc%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xd%3B%22%3Elang%3D%22a%26amp%3B%23xd%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xd%3B%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23xd%3B%26amp%3B%23xa%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xd%3B%26%23xd%3B%22%3Elang%3D%22a%26amp%3B%23xd%3B%26amp%3B%23xd%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23x20%3B%22%3Elang%3D%22a%26amp%3B%23x20%3B%22%3C%2Fp%3E%0A;p=n;x=style-element>
- <http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=%5Blang%7C%3D%5Ca%20a%5D%20%7B%0A%20%20color%3A%20white%3B%0A%20%20background-color%3A%20blue%3B%0A%7D%0A;h=%3Cp%20lang%3D%22a%22%3Elang%3D%22a%22%3C%2Fp%3E%0A%3Chr%3E%0A%3Cp%20lang%3D%22%26%23x9%3Ba%22%3Elang%3D%22%26amp%3B%23x9%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23x9%3B%26%23x9%3Ba%22%3Elang%3D%22%26amp%3B%23x9%3B%26amp%3B%23x9%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23x9%3B%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23x9%3B%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xa%3B%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23xa%3B%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xa%3B%26%23xd%3Ba%22%3Elang%3D%22%26amp%3B%23xa%3B%26amp%3B%23xd%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xb%3Ba%22%3Elang%3D%22%26amp%3B%23xb%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xc%3Ba%22%3Elang%3D%22%26amp%3B%23xc%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xd%3Ba%22%3Elang%3D%22%26amp%3B%23xd%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xd%3B%26%23xa%3Ba%22%3Elang%3D%22%26amp%3B%23xd%3B%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23xd%3B%26%23xd%3Ba%22%3Elang%3D%22%26amp%3B%23xd%3B%26amp%3B%23xd%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22%26%23x20%3Ba%22%3Elang%3D%22%26amp%3B%23x20%3Ba%22%3C%2Fp%3E%0A%3Chr%3E%0A%3Cp%20lang%3D%22a%26%23x9%3B%22%3Elang%3D%22a%26amp%3B%23x9%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23x9%3B%26%23x9%3B%22%3Elang%3D%22a%26amp%3B%23x9%3B%26amp%3B%23x9%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23x9%3B%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23x9%3B%26amp%3B%23xa%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23xa%3Ba%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xa%3B%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23xa%3B%26amp%3B%23xa%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xa%3B%26%23xd%3B%22%3Elang%3D%22a%26amp%3B%23xa%3B%26amp%3B%23xd%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xb%3B%22%3Elang%3D%22a%26amp%3B%23xb%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xc%3B%22%3Elang%3D%22a%26amp%3B%23xc%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xd%3B%22%3Elang%3D%22a%26amp%3B%23xd%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xd%3B%26%23xa%3B%22%3Elang%3D%22a%26amp%3B%23xd%3B%26amp%3B%23xa%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23xd%3B%26%23xd%3B%22%3Elang%3D%22a%26amp%3B%23xd%3B%26amp%3B%23xd%3B%22%3C%2Fp%3E%0A%3Cp%20lang%3D%22a%26%23x20%3B%22%3Elang%3D%22a%26amp%3B%23x20%3B%22%3C%2Fp%3E%0A;p=n;x=style-element>
]REFS]
** [CODE(CSS)[^=]], [CODE(CSS)[*=]], [CODE(CSS)[$=]]
[18] [CODE(CSS)[^=]], [CODE(CSS)[*=]], [CODE(CSS)[$=]] の後に[[属性値]]が続く場合、
それぞれ[[属性値]]の先頭、任意の位置、末尾にその値が含まれていることを表します。 [SRC[>>4]]
* 構文
[19] [[属性名]]は [[CSS修飾名]]です。 [SRC[>>4]]
[8] [[属性値]]を指定する場合は [[CSS]] の[[識別子]]または[[文字列]]として記述し[['''なければなりません''']]
[SRC[>>4]]。
[74] [[属性値]]は[[数字]]からはじまると[[識別子]]ではなく[[数]]とみなされてしまうので、
[[非妥当]]になります。
[REFS[
- [75] <http://suika.fam.cx/gate/2007/cssom/viewer?c=%5Ba%3D1%5D%20%7B%20%7D;h=;p=n;x=style-element;i=html-div>
]REFS]
** 名前空間接頭辞
[20] [[属性選択子]]は[[既定名前空間]]を使いません。[[名前空間接頭辞]]と [CODE(CSS)[[[|]]]]
を省略すると、[[null名前空間]]を表します。 [SRC[>>4]]
[21] [[属性選択子]]の[[名前空間接頭辞]]が[[空文字列]]なら、[[null名前空間]]を表します。 [SRC[>>4]]
[22] [[属性選択子]]の[[名前空間接頭辞]]が [CODE(CSS)[[[*]]]] なら、任意の[[名前空間]]を表します。
[SRC[>>4]] これには[[null名前空間]]も含まれます。
;; [23] [[null名前空間]]については明記されていませんが、含まれるのでしょう。
[24] その他の[[名前空間接頭辞]]は、[[宣言]]されている[[名前空間URL]]を表します。
[SRC[>>4]]
* 大文字と小文字
** 属性名
[9] [[属性名]]の[[大文字]]と[[小文字]]を区別するかは[[マーク付け言語]]に依存します。
[SRC[>>4]]
[10] [[HTML文書]]中の[[HTML要素]]では[[属性名]]の[[大文字]]と[[小文字]]を区別しません。
それ以外、すなわち [[HTML文書]]中の [[HTML]] 以外の[[要素]]や [[XML文書]]では区別します。 [SRC[>>77]]
[105] これは厳密には次のようにしなければ[['''ならない''']] [SRC[>>77]] と定義されています。
- [106] [[HTML文書]]の[[HTML要素]]の[[名前空間なし]]の[[属性]]の名前と比較する時は、
[[ASCII小文字]]に変換する。
- [107] それ以外では、そのままとする。
- [108] いずれにせよ、比較自体は大文字と小文字を区別して行う。
;; [109] すなわち、[[CSS]] 側の[[属性名]]の大文字と小文字の違いは無視されますが、 [[DOM]]
側の違いは無視されません。 (ただし [[HTML構文解析器]]によって作られた [[HTML]]
の[[属性]]はすべて小文字になっています。)
** 属性値
[76] [[属性値]]の[[大文字]]と[[小文字]]を区別するかは[[マーク付け言語]]に依存します [SRC[>>4]]。
[93] [[XML文書]]では[[大文字]]と[[小文字]]を区別''します''。
[81] [[HTML文書]]では、一部の[[HTML要素]]で[[ASCII大文字・小文字不区別]]となります。
それ以外は区別します。 [SRC[>>77]]
;; 歴史的には >>91 を参照。
[82] [[HTML Standard]] には [CODE(HTMLa)@en[[[type]]]] [[属性]]のみ、
[CODE(HTMLe)@en[[[ul]]]] [[要素]]や [CODE(HTMLe)@en[[[ol]]]]
[[要素]]のとき大文字と小文字を区別する旨の注記がありますが、
実際には [[Chrome]] も [[Firefox]] も、区別しないようにみえます。
[TIME[2015-11-23T11:08:53.200Z]]
** 名前空間接頭辞
[78] [[名前空間接頭辞]]は[[大文字]]と[[小文字]]を区別します。詳しくは[[CSS名前空間]]の項を参照してください。
* 妥当性
[25] [[宣言]]されていない[[名前空間接頭辞]]を使った[[属性選択子]]は[[非妥当]]です。 [SRC[>>4]]
* 変種
[1]
[CITE[jQuery: CSS]] <http://jquery.com/docs/CSS/>
[[JavaScript]] による[[選択子]]の実装ですが、
[[属性名]]の前には [CODE@en[@]] をつけなければなりません。
([[名無しさん]] [WEAK[2006-06-06 11:55:35 +00:00]])
* 歴史
** 前史
[REFS[
- [65] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-08-11 17:13:22 +09:00]] 版) <http://www.w3.org/Style/CSS/draft3.html#classes>
- [67] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-10-07 10:35:41 +09:00]] 版) <http://www.w3.org/Style/CSS/draft4.html#appendixa>
- [69] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-11-02 03:04:18 +09:00]] 版) <http://www.w3.org/Style/CSS/draft5.html#id>
- [71] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-11-02 03:04:18 +09:00]] 版) <http://www.w3.org/Style/CSS/draft5.html#appendixa>
]REFS]
[66] ここでは[[属性]]の存在を表す[[属性選択子]]と [CODE(CSS)[[[=]]]] が提案されていましたが、
構文が少し違っていました。
[68] 次の >>67 では現在の構文になりますが、[[水準2]]に格下げ(?)されていました。
[70] その次の >>69 では[[ID選択子]]だけ[[水準1]]、それ以外は[[水準2]]となっています。
(この時はまだ[[ID選択子]]は[[属性選択子]]の一種でした。)
[72] しかし >>71 の次の仕様案では [[CSS2]] は削除されています。かわりに >>73 が発行されています。
[REFS[
- [73] [CITE[NOTE-css-potential-19970819]]
( ([TIME[2000-03-13 23:37:56 +09:00]] 版))
<http://www.w3.org/TR/NOTE-css-potential-19970819#pgfId=1038612>
]REFS]
** 属性選択子の誕生
[REFS[
- [41] [CITE[STSS 2]] ([[Daniel Glazman]] 著, [TIME[2000-09-09 01:13:50 +09:00]] 版) <http://www.w3.org/TR/NOTE-stts2-971017#Attribut>
- [48] [CITE@en[Selectors]] ([TIME[1997-11-08 03:00:17 +09:00]] 版) <http://www.w3.org/TR/WD-CSS2-971104/selector.html#attribute-selectors>
- [50] [CITE@en[Selectors]] ([TIME[2001-01-16 00:22:58 +09:00]] 版) <http://www.w3.org/TR/1998/WD-css2-19980128/selector.html#attribute-selectors>
]REFS]
[42] [[STTS2]] では[[属性選択子]]として[[属性]]の存在、 [CODE(CSS)[[[=]]]] (完全一致)、
[DFN[[CODE(CSS)[[[==]]]]]] (現在の [CODE(CSS)[[[~=]]]]) が定義されていました。
[39] [[属性選択子]]は [[CSS2]] で正式に[[選択子]]に導入されました。当初は [[STTS2]] (>>41)
を引き継ぎ、 >>42 の3種類が定義されていました。
[43] また[[属性名]]の前に [DFN[[CODE(CSS)[[[^]]]]]] をつけることでその[[属性]]を[[文書木]]から削除することを表していました。
[[STTS3]] ではより一般的な形に拡張されています。
;; この機能は [[CSS]] には取り込まれていません。
** [CODE(CSS)[|=]] の追加
[REFS[
- [51] [CITE@en[Selectors]] ([TIME[1998-03-25 23:00:31 +09:00]] 版) <http://www.w3.org/TR/1998/PR-CSS2-19980324/selector.html#attribute-selectors>
- [34] [CITE@en[Selectors]] ([TIME[2011-06-07 22:09:52 +09:00]] 版) <http://www.w3.org/TR/CSS2/selector.html#attribute-selectors>
]REFS]
[49] >>50 の次の [[PR]] である >>51 で [CODE(CSS)[[[|=]]]] が追加されました。
[38] [[CSS2]] は[[名前空間]]の扱いを規定していませんでしたが、現実には[[属性選択子]]と[[XML名前空間]]の両方に対応している
[[CSS2]] 世代の[[利用者エージェント]]はありませんでした。
** 選択子3
[REFS[
- [44] [CITE[CSS Namespace Enhancements (Proposal)]] ([TIME[1999-06-26 07:15:29 +09:00]] 版) <http://www.w3.org/1999/06/25/WD-css3-namespace-19990625/#attr-selector>
- [46] [CITE@en[CSS3 module: W3C Selectors]] ([TIME[2000-04-11 01:57:05 +09:00]] 版) <http://www.w3.org/TR/2000/WD-css3-selectors-20000410#attrnmsp>
]REFS]
[45] [[名前空間接頭辞]]をつけて[[名前空間]]に対応することが >>44 で提案され、 >>46
以後の[[選択子]]仕様に取り込まれています。
[REFS[
- [47] [CITE@en[CSS3 module: W3C Selectors]] ([TIME[2000-10-06 02:05:50 +09:00]] 版) <http://www.w3.org/TR/2000/WD-css3-selectors-20001005/#attribute-substrings>
]REFS]
[36] >>47 で [CODE(CSS)[[[^=]]]], [CODE(CSS)[[[$=]]]], [CODE(CSS)[[[*=]]]] が追加されました。
** HTML
[91] [[選択子]]仕様書は[[大文字]]と[[小文字]]の区別は[[マーク付け言語]]によるとして具体的には規定していませんでしたが、
かわりに [[HTML]] 仕様書が [[HTML]] と [[XML]] の場合を規定しました。
[REFS[
- [90] [CITE@en[Web Applications 1.0 r6695 Update selector case-sensitivity matching rules, including dropping the list of magically case-insensitive values.]]
( ([TIME[2011-10-19 08:00:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6694&to=6695>
]REFS]
[11] 以前 (>>90 までの [[Web Applications 1,0]] 仕様と [[Gecko]]、[[WebKit]]、[[Presto]])
は [[HTML名前空間]]の一部の[[要素]]では[[属性値]]の[[大文字]]と[[小文字]]を区別しないことにしていました。
[2]
- [[Firefox]] 2.0, [[Opera]] 9 共、 [[XHTML]] や [[XML]] の[[属性値]]に対しては[[大文字]]・[[小文字]]を区別''します''。
- [DEL[[[WinIE 6]] は [[HTML]] の[[属性値]]に対しては[[大文字]]・[[小文字]]を区別''します''。]]
- [[Firefox]] 2.0、[[Opera]] 9 共、[[HTML]] の[[属性値]]について:
-- [CODE(HTMLa)@en[[[align]]]] ([[列挙型]]),
[CODE(HTMLa)@en[[[lang]]]] ([[言語札]])、
[CODE(HTMLa)@en[[[type]]]] ([[媒体型]]) は[[大文字]]・[[小文字]]を区別''しません''。
-- [CODE(HTMLa)@en[[[class]]]] ([[無奇癖モード]]、[[奇癖モード]]共)、[CODE(HTMLa)@en[[[compact]]]] ([[ブール型]])、
[CODE(HTMLa)@en[[[href]]]] ([[URI]])、
[CODE(HTMLa)@en[[[id]]]] ([[識別子]])、
[CODE(HTMLa)@en[[[name]]]]、
[CODE(HTMLa)@en[[[title]]]] ([[テキスト]]) は[[大文字]]・[[小文字]]を区別''します''。
[3]
[[Opera]] 9 は [[HTML]] で [CODE(HTMLa)@en[[[accesskey]]]] の[[属性値]]の[[大文字]]・[[小文字]]を区別''します''。
[[Firefox]] 2.0 は [[HTML]] で [CODE(HTMLa)@en[[[accesskey]]]] の[[属性値]]の[[大文字]]・[[小文字]]を区別''しません''。
[92] [[HTML5]] は当初[[属性値]]についても特定の[[属性]]のみ[[ASCII大文字・小文字不区別]]とされていましたが、
>>90 によってすべて区別''する''ことになりました。
[80] その後 >>79 で2015年に元の仕様に戻されています。
[REFS[
- [79] [CITE@en[Restore case-insensitive attribute value selector matching · whatwg/html@a4313d3]]
([TIME[2015-11-23 19:57:20 +09:00]] 版)
<https://github.com/whatwg/html/commit/a4313d39a35d94fcf0e660a0a86241233dafd142>
]REFS]
** 選択子4
[REFS[
- [94] [CITE@en[Web Applications 1.0 r6676 Update UA style sheet to use new selector syntax]] ([TIME[2011-10-13 04:46:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=6675&to=6676>
]REFS]
[95] 以前は [[HTML]] の[[利用者エージェント・スタイル・シート]]は[[大文字]]と[[小文字]]の区別について[[注釈]]を使った特別な注記によって表していましたが、
[CODE(CSS)@en[[[i]]]] 記法の導入でこれを[[選択子]]だけで表現できるようになりました。
* 実装
[40] [[IE7]] [[以下]]は[[属性選択子]]に対応していなかったため、[[Webサイト]]では長らく[[属性選択子]]は使えませんでした。
* 関連
[28] [[クラス選択子]]、[[ID選択子]]、[CODE(CSS)@en[[[:lang]]]] のような特定用途に特化した[[属性選択子]]と言えるような[[選択子]]もあります。
[31] [[型選択子]]には[[普遍選択子]]がありますが、
[[属性選択子]]にはそれに相当するものがありません。
[96] [CITE['''['''whatwg''']''' '''['''Selectors4''']''' case-insensitive attribute value matching (in XML)]]
([TIME[2012-06-06 09:05:01 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036284.html>
[101] [CITE[IRC logs: freenode / #whatwg / 20121202]]
( ([TIME[2012-12-12 09:05:40 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121202>
[102] [CITE[Introduction to CSSOM (1) - DOM ECMAScripting]]
( ([TIME[2012-02-18 20:10:11 +09:00]] 版))
<http://domes.lingua.heliohost.org/dom/intro-cssom1.html#note-21>
[103] [CITE@en[Bug 24005 – Attribute values can't always be matched case-sensitively]]
( ([TIME[2014-02-10 22:40:09 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=24005>
[104] [CITE@en[Web Applications 1.0 r8253 Match reality better in terms of selector case-sensitivity]]
( ([TIME[2013-11-07 04:38:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8252&to=8253>
[110] [CITE@en[Web Applications 1.0 r8764 Try to clarify case matching rules for selectors]]
( ([TIME[2014-09-13 02:48:00 +09:00]] 版))
<http://html5.org/r/8764>
[FIG(quote)[
[FIGCAPTION[
[35] [CITE@en[Safari 9.0]]
([TIME[2015-11-04 23:34:07 +09:00]] 版)
<https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW34>
]FIGCAPTION]
> The following CSS4 selectors are now fully supported by Safari.
> Case-insensitive attribute selectors
]FIG]