-
Notifications
You must be signed in to change notification settings - Fork 4
/
14.txt
119 lines (82 loc) · 6.7 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
[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>
]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] [[奇癖モード]]の[[HTML文書]]の[[HTML要素]]の [[ID]] は [[ASCII大文字・小文字不区別]]です。それ以外、
すなわち [[XML文書]]の [[ID]]、[[HTML]] 以外の[[要素]]の [[ID]]、[[無奇癖モード]]または[[限定奇癖モード]]の [[ID]]
は[[大文字]]と[[小文字]]を区別します。 [SRC[>>95]]
* 歴史
** 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]