-
Notifications
You must be signed in to change notification settings - Fork 4
/
14.txt
142 lines (97 loc) · 8.32 KB
/
14.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
[2] [DFN[ID[RUBYB[選択子]@en[selector]]]]は、指定された[[識別子]]を持つ[[要素]]に[[一致]]します。
* 仕様書
[REFS[
- [1] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/#id-selectors>
- [95] [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>
- [97] [CITE@en-US-x-hixie[WebVTT Standard]] ([TIME[2011-12-06 00:38:23 +09:00]] 版) <http://dev.w3.org/html5/webvtt/#pseudo-cue-selector>
- [181] [CITE@en[Selectors Level 4]] ([TIME[2014-05-06 18:55:03 +09:00]] 版) <http://dev.w3.org/csswg/selectors/#data-model>
]REFS]
* 意味
[4] [[ID選択子]]は[[識別子]]が一致する[[要素]]と[[一致]]します。
[5] [[識別子]]は[[文書]]中の唯一の[[要素]]に割り当てられた文字列です。
[[HTML]] では [CODE(HTMLa)@en[[[id]]]] [[属性]]によって指定できます。他の[[マーク付け言語]]では他の方法で指定できます。
[SRC[>>1]]
[8] 1つの[[要素]]に複数の[[識別子]]があるかもしれませんが、そのいずれもが[[識別子]]として扱われます。
[SRC[>>1]]
[98] [[WebVTT]] では[[WebVTT節点オブジェクトのリスト]]が [[cue]] の [[text track cue identifier]]
によって表される[[識別子]]を持つものとみなされます。 [SRC[>>97]]
;; [104] [[WebVTT節点オブジェクトのリスト]]は[[要素]]ではなく[[文書節点]]に相当するものであるように >>97
にはあります。 >>4 とは矛盾するかもしれませんが・・・。
* 構文
[3] [[ID選択子]]は、 [CODE(CSS)[[['''#''']]]] の直後に [[CSS]] [[識別子]]を続けたものです [SRC[>>1]]。
[16] [[CSS 2.1]] や[[選択子]]の仕様書上に示された文法では [[HASH]] [[字句]]であり、
[CODE(CSS)[[['''#''']]]] の後に[[名前文字]]を使える ([[識別子]]に使える[[文字]]で、先頭の文字の制約なし)
ということになっています。ですが仕様書本文で >>3 の通り[[識別子]]で[['''なければならない''']]とされているため、
やはり先頭に[[数字]]などを使うことはできません。実際に [[Webブラウザー]]もそのように実装しています。
[REFS[
- [17] <http://suika.fam.cx/gate/2007/cssom/viewer?c=%230123%20%7B%0A%20%20color%3A%20red%3B%0A%7D;h=%3Cp%20id%3D0123%3EThis%20paragraph%20must%20not%20be%20red.;p=n;x=style-element;i=html-div>
]REFS]
;; [18] にも関わらずそのように[[字句化]]されるのは、 [CODE(CSS)[[[<color>]]]] が [CODE(CSS)[[['''#''']]]]
の後に[[十六進数]]が続く構文を使っているためです。
* 識別子の指定
[6] [[選択子]]の仕様としては[[利用者エージェント]]がどのように[[識別子]]を知るかは規定しないとしています。
ハードコード、[[DTD]]、[[利用者]]にたずねるといった方法が例示されています。
また具体的な例として、 [[DOM3 Core]] ([CODE(DOMa)@en[[[isId]]]] など) や
[CODE(XMLa)@en[[[xml:id]]]] も挙げられています。 [SRC[>>1]]
[7] 従って、あるいは [[XML]] の [[DTD]] の[[処理]]が義務付けられていない故、
[[利用者エージェント]]は特定の[[属性]]が[[識別子]]であると知らないかもしれず、
その場合[[著者]]は[[ID選択子]]よりも[[属性選択子]]を使うべきかもしれません。 [SRC[>>1]]
* 大文字と小文字
[93] [[選択子]]仕様書は[[ID選択子]]の[[大文字]]と[[小文字]]について明確に言及していませんが、
[[属性値]]に関する[[選択子]]であり、[[属性値]]の[[大文字]]と[[小文字]]の区別は[[マーク付け言語]]依存との規定があります。
[94] [[奇癖モード]]での比較は[[ASCII大文字・小文字不区別]]です [SRC[>>181]]。
;; [182] それ以外、すなわち [[XML文書]]、[[無奇癖モード]]または[[限定奇癖モード]]について明記している仕様書はありませんが、
区別するものと解されています。
;; [183] [[HTML要素]]以外の[[要素]]も、[[奇癖モード]]では[[大文字]]と[[小文字]]は区別されません。
;; [184] 区別されないのは[[比較]]時点なので、[[CSSOM]] 上は指定されたとおりの[[大文字]]と[[小文字]]のままになります。
* 歴史
** CSS1
[REFS[
- [11] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-10-07 10:35:41 +09:00]] 版) <http://www.w3.org/Style/CSS/draft4.html#id>
- [13] [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>
- [14] [CITE[Cascading Style Sheets, level 1]] ([TIME[1999-02-05 02:57:01 +09:00]] 版) <http://www.w3.org/TR/WD-css1-951209.html#id>
- [10] [CITE[Cascading Style Sheets, level 1]] ([TIME[2008-04-10 02:23:32 +09:00]] 版) <http://www.w3.org/TR/CSS1/#id-as-selector>
]REFS]
[12] [[ID選択子]]は >>11 ではじめて言及されました。 >>13 で構文が定義されましたが、
これは[[属性選択子]]の[[部分集合]]でした。
[15] >>14 以後は現在と同じ構文になっています。
** CSS2 / 選択子3
[REFS[
- [9] [CITE@en[Selectors]] ([TIME[2011-06-07 22:09:52 +09:00]] 版) <http://www.w3.org/TR/CSS2/selector.html#id-selectors>
- [91] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/#id-selectors>
]REFS]
[92] [[CSS2]] 以降 [[XML]] にも対応しています。 [[CSS 2.1]] と[[選択子3]]は [[DOM3]] などによって複数の [[ID]]
が1つの[[要素]]に与えられ得ることにも言及しています (これは [[CR]] で [[at risk]] とされてましたが、
結局残っています)。
** HTML
[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]
[96] >>90 でこれまで明記されていなかった [[HTML]] と [[XML]] における
[[ID識別子]]の[[大文字]]と[[小文字]]の扱いが規定されました (>>94)。
** WebVTT (2010)
[REFS[
- [99] [CITE@en-US-x-hixie[WebVTT Standard]] ([TIME[2011-12-06 00:38:23 +09:00]] 版) <http://dev.w3.org/html5/webvtt/#pseudo-cue-selector>
]REFS]
[100] [[WebVTT]] 仕様書は[[ID選択子]]が [[WebVTT]] に適用される場合の解釈を規定しています。
** CSS Images
[101] [[CSS Images]] は [[ID選択子]]が [[ID]] だけでなく[[CSS要素参照識別子]]をも参照すると規定していましたが、
2012年3月に一旦該当する条項が削除されています。
;; [103] [[文書]]に挿入されていない[[要素]]すら参照できるとされていました。
[REFS[
- [102] [CITE@en-US[csswg: changeset 5153:8a651e76cd87]] ([TIME[2012-06-12 14:16:28 +09:00]] 版) <http://dvcs.w3.org/hg/csswg/rev/8a651e76cd87>
]REFS]
** 奇癖モード (2014)
[180] [[奇癖モード]]で[[ASCII大文字・小文字不区別]]なのは[[HTML要素]]に限らないため、
[[HTML Standard]] から [[Selectors]] へと規定が移動されました。
[REFS[
- [177] [CITE@en[Bug 23781 – id and class should be case-insensitive in quirks]] ([TIME[2014-05-09 12:05:36 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=23781>
- [178] [CITE[ID/class quirk moved to Selectors spec. Fixes https://www.w3.org/Bugs/Pu... · cfda1c1 · whatwg/quirks]] ([TIME[2014-05-09 12:05:47 +09:00]] 版) <https://github.com/whatwg/quirks/commit/cfda1c1f6d689072118b8e6a9a023f268d3c76be>
- [179] [CITE@en[Web Applications 1.0 r8610 The quirky class/id selector matching case logic moved to selectors]] ([TIME[2014-05-08 02:49:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=8609&to=8610>
]REFS]
* 関連
[185] [[ID選択子]]は[[素片識別子]]と似ています。おそらく敢えて似せた構文にしたのでしょうが、
両者に直接の関係はありません。[[ID選択子]]では [[CSS]] の[[エスケープ]]などの構文が適用され、
[[素片識別子]]には [[URL]] の[[パーセント符号化]]などの構文が適用されます。