ID選択子

ID 選択子 (選択子)

[2] ID選択子 (selector) は、指定された識別子を持つ要素一致します。

仕様書

意味

[4] ID選択子識別子が一致する要素一致します。

[5] 識別子文書中の唯一の要素に割り当てられた文字列です。 HTML では id 属性によって指定できます。他のマーク付け言語では他の方法で指定できます。 >>1

[8] 1つの要素に複数の識別子があるかもしれませんが、そのいずれもが識別子として扱われます。 >>1

[98] WebVTT ではWebVTT節点オブジェクトのリストcuetext track cue identifier によって表される識別子を持つものとみなされます。 >>97

[104] WebVTT節点オブジェクトのリスト要素ではなく文書節点に相当するものであるように >>97 にはあります。 >>4 とは矛盾するかもしれませんが・・・。

構文

[3] ID選択子は、 # の直後に CSS 識別子を続けたものです >>1

[16] CSS 2.1選択子の仕様書上に示された文法では HASH 字句であり、 # の後に名前文字を使える (識別子に使える文字で、先頭の文字の制約なし) ということになっています。ですが仕様書本文で >>3 の通り識別子なければならないとされているため、 やはり先頭に数字などを使うことはできません。実際に Webブラウザーもそのように実装しています。

[18] にも関わらずそのように字句化されるのは、 <color># の後に十六進数が続く構文を使っているためです。

識別子の指定

[6] 選択子の仕様としては利用者エージェントがどのように識別子を知るかは規定しないとしています。 ハードコード、DTD利用者にたずねるといった方法が例示されています。 また具体的な例として、 DOM3 Core (isId など) や xml:id も挙げられています。 >>1

[7] 従って、あるいは XMLDTD処理が義務付けられていない故、 利用者エージェントは特定の属性識別子であると知らないかもしれず、 その場合著者ID選択子よりも属性選択子を使うべきかもしれません。 >>1

大文字と小文字

[93] 選択子仕様書はID選択子大文字小文字について明確に言及していませんが、 属性値に関する選択子であり、属性値大文字小文字の区別はマーク付け言語依存との規定があります。

[94] 奇癖モードでの比較はASCII大文字・小文字不区別です >>181

[182] それ以外、すなわち XML文書無奇癖モードまたは限定奇癖モードについて明記している仕様書はありませんが、 区別するものと解されています。
[183] HTML要素以外の要素も、奇癖モードでは大文字小文字は区別されません。
[184] 区別されないのは比較時点なので、CSSOM 上は指定されたとおりの大文字小文字のままになります。

歴史

CSS1

[12] ID選択子>>11 ではじめて言及されました。 >>13 で構文が定義されましたが、 これは属性選択子部分集合でした。

[15] >>14 以後は現在と同じ構文になっています。

CSS2 / 選択子3

[92] CSS2 以降 XML にも対応しています。 CSS 2.1選択子3DOM3 などによって複数の ID が1つの要素に与えられ得ることにも言及しています (これは CRat risk とされてましたが、 結局残っています)。

HTML

[96] >>90 でこれまで明記されていなかった HTMLXML における ID識別子大文字小文字の扱いが規定されました (>>94)。

WebVTT (2010)

[100] WebVTT 仕様書はID選択子WebVTT に適用される場合の解釈を規定しています。

CSS Images

[101] CSS ImagesID選択子ID だけでなくCSS要素参照識別子をも参照すると規定していましたが、 2012年3月に一旦該当する条項が削除されています。

[103] 文書に挿入されていない要素すら参照できるとされていました。

奇癖モード (2014)

[180] 奇癖モードASCII大文字・小文字不区別なのはHTML要素に限らないため、 HTML Standard から Selectors へと規定が移動されました。

関連

[185] ID選択子素片識別子と似ています。おそらく敢えて似せた構文にしたのでしょうが、 両者に直接の関係はありません。ID選択子では CSSエスケープなどの構文が適用され、 素片識別子には URLパーセント符号化などの構文が適用されます。

[186] Web Applications 1.0 r8764 Try to clarify case matching rules for selectors ( ( 版)) <http://html5.org/r/8764>

[19] Clarify case-sensitivity of ID and class attribute selectors (Zirro著, ) <https://github.com/whatwg/html/commit/942a9d5b9c0b50bf5bca275e866bb2319ebdca0c>