[2]
[DFN[[RUBY[選択子] [せんたくし] @en[Selectors]]]] ([DFN[[[セレクター]]]]) は、 [[CSS]]
の[[文書木]]モデルにおける処理対象を選択するための[[式]]、
あるいはその仕様です。

;; より正確に言えば、 [[W3C]]
[RUBYB[[[選択子]]] @en[Selectors]]仕様によって[[選択子]]言語の[[構文]]と、
[[選択子]][[式]]および[[要素]]から[Q[[[一致]]か否か]]を決定する方法が規定されています。

[3]
[[選択子]]は、元々 [[CSS]] で[[特性]]の指定対象を記述するために設計されましたが、
現在では [[CSS]] 以外でも使われています。そのため、 [[CSS 3]]
の[[選択子]]仕様は、 [[CSS 3]] の[[モジュール]]かつ単独の仕様とみなされています。

[50] 近年では多くの [[JavaScriptフレームワーク]]で [CODE(DOMm)@en[[[querySelectorAll]]]]
やそれに類するものが実装されています。

* 仕様書

[REFS[
- [163] [CITE@en[Selectors Level 4]], [TIME[2020-09-07T03:47:52.000Z]], [TIME[2020-09-07T03:51:53.714Z]] <https://drafts.csswg.org/selectors/>
]REFS]

* 構文

[6]
:[DFN[[[選択子の群]]]]:[[読点]]で区切った[[選択子]]の[[並び]]です。
[[読点]]は[Q[または]]の意味で、いずれかと[[一致]]すれば全体が[[一致]]と考えられます。
[PRE(CSS example)[
element1, element2, element3
  /* 要素型が element1, element2, element3 のいずれかなら一致 */
]PRE]
:[DFN[[[選択子]]]]:[[結合子]]で区切った[[単純選択子列]]の[[並び]]です。
[[結合子]]は各[[単純選択子列]]と[[一致]]する[[要素]]の位置関係を表します。
[PRE(CSS example)[
element1 > element2
  /* element1 要素の子供の element2 要素と一致 */
]PRE]
:[DFN[[[単純選択子列]]]]:[[区切子]]なしで綴られた[[単純選択子]]の[[並び]]です。
先頭の[[単純選択子]] (だけ) は、[[型選択子]]または[[全称選択子]]とします。
2つ目以降の[[単純選択子]]は、その他の種類で幾つでも指定できます。
すべての条件に[[一致]]するものが[[単純選択子列]]全体と[[一致]]します。
[PRE(CSS example)[
element1.class1:active
  /* 要素型が element1 で、クラス class1 に属し、活性状態の要素と一致 */
]PRE]
:[DFN[[[単純選択子]]]]:
[[型選択子]]、[[全称選択子]]、[[属性選択子]]、[[クラス選択子]]、
[[識別子選択子]]、[[擬似クラス]]があります。また、
[[単純選択子列]]の最後に限り、[[擬似要素]]を指定できます。
:[DFN[[[@規則]]]]:[[選択子]]ではありませんが、[[@規則]]によっては、
[[@鍵語]]が[[選択子]]と同じような形で使われることがあります。
特に [CODE(CSS)@en[@[[page]]]] では[[頁選択子]]と呼ばれています。

;; 
[[CSS 1]] や [[CSS 2]] では、用語が異なっており、
ここに挙げた語が別の意味で使われていることがあります。
詳しくはそれぞれの項をご覧下さい。

[FIG(short list)[
[HISTORY[
- [CODE[^][^ (Selectors)]]
]HISTORY]
]FIG]

** 単純選択子

[1]
- [[型選択子]]
-- [CODE(CSS)@en[[VAR[E]]]] ([CODE(CSS)@en[[VAR[E]]]] は[[要素型名]]):
[[要素型名]] (文脈から得られる[[名前空間URI]] と[[局所名]]の組)
で[[一致]]を判定します。
-- [CODE(CSS)@en[[VAR[P]]|[VAR[L]]]] ([CODE(CSS)@en[[VAR[P]]]]
は[[名前空間接頭辞]]または [CODE(CSS)[[[*]]]]、 [CODE(CSS)@en[[VAR[L]]]] 
は[[局所名]]): [[要素型名]] ([CODE(CSS)@en[[VAR[P]]]] 
から得られる[[名前空間URI]] と[[局所名]]の組) で[[一致]]を判定します。
- [[全称選択子]]
-- [CODE(CSS)@en[[[*]]]]:
文脈から得られる[[名前空間URI]] で[[一致]]を判定します。
-- [CODE(CSS)@en[[VAR[P]]|*]] ([CODE(CSS)@en[[VAR[P]]]]
は[[名前空間接頭辞]]または [CODE(CSS)[[[*]]]]):
[CODE(CSS)@en[[VAR[P]]]] から得られる[[名前空間URI]] 
で[[一致]]を判定します。
- [[属性選択子]]
-- [[属性名]]を表す [CODE(CSS)@en[[VAR[N]]] の部分は、]]
[[要素型名]]と同じように指定します。
-- [CODE(CSS)@en['''['''[VAR[N]]''']''']]:
[[属性]]が[[存在]]すれば[[一致]]します。
-- [CODE(CSS)@en['''['''[VAR[N]] [VAR[op]] [VAR[V]]''']''']]:
[[属性値]]が指定した値 (の一部) と等しければ[[一致]]します。
[CODE(CSS)@en[[VAR[op]]]] は、次の種類があります。
--- [CODE(CSS)[[[=]]]]: [[完全一致]]
--- [CODE(CSS)[[[^=]]]]: [[前方一致]]
--- [CODE(CSS)[[[$=]]]]: [[後方一致]]
--- [CODE(CSS)[[[*=]]]]: 部分一致
--- [CODE(CSS)[[[~=]]]]: 間隔区切並び中の一項目と一致
--- [CODE(CSS)[[[|=]]]]: [CODE[-]] の手前までの前方一致
- [[クラス選択子]]
-- [CODE(CSS)@en[.[VAR[C]]]] ([CODE(CSS)@en[[VAR[C]]]] 
は[[クラス]]の名前): [[クラス属性]]の間隔区切並び中の一項目と[[一致]]
- [[識別子選択子]]
-- [CODE(CSS)@en[#[VAR[ID]]]] ([CODE(CSS)@en[[VAR[ID]]]]
は[[識別子]]の名前): [[識別子]]と[[一致]]
- [[擬似クラス]]
-- [CODE(CSS)@en[:[VAR[C]]]] または
[CODE(CSS)@en[:[VAR[C]] ([VAR[A]])]]
([CODE(CSS)@en[[VAR[C]]]] は[[擬似クラス]]の[[名前]]、
[CODE(CSS)@en[[VAR[A]]]] は[[引数]]):
[[擬似クラス]]の条件を満たせば[[一致]]
- [[擬似要素]]
-- [CODE(CSS)@en[::[VAR[E]]]] または
[CODE(CSS)@en[:[VAR[E]] ([VAR[A]])]]
([CODE(CSS)@en[[VAR[E]]]] は[[擬似要素]]の[[名前]]、
[CODE(CSS)@en[[VAR[A]]]] は[[引数]]):
指定した名前の[[擬似要素]]
-- [CODE(CSS)@en[:[VAR[E]]]] ([CODE(CSS)@en[[VAR[E]]]]
は [[CSS 2]] までに導入された[[擬似要素]]の[[名前]]):
指定した名前の[[擬似要素]]

詳しくは[[単純選択子]]の項を参照。


** 結合子

[2]
- [CODE(CSS)@en[[VAR[S]] [VAR[T]]]]: 
[[単純選択子]] [CODE(CSS)@en[[VAR[S]]]] と[[一致]]する[[要素]]の''[[子孫]]''の、
[[単純選択子]] [CODE(CSS)@en[[VAR[T]]]] と[[一致]]する[[要素]]と[[一致]]
- [CODE(CSS)@en[[VAR[S]] > [VAR[T]]]]: 
[[単純選択子]] [CODE(CSS)@en[[VAR[S]]]] と[[一致]]する[[要素]]の''[[子供]]''の、
[[単純選択子]] [CODE(CSS)@en[[VAR[T]]]] と[[一致]]する[[要素]]と[[一致]]
- [CODE(CSS)@en[[VAR[S]] + [VAR[T]]]]: 
[[単純選択子]] [CODE(CSS)@en[[VAR[S]]]] と[[一致]]する[[要素]]の''直接隣接する[[弟]]''の、
[[単純選択子]] [CODE(CSS)@en[[VAR[T]]]] と[[一致]]する[[要素]]と[[一致]]
- [CODE(CSS)@en[[VAR[S]] ~ [VAR[T]]]]: 
[[単純選択子]] [CODE(CSS)@en[[VAR[S]]]] と[[一致]]する[[要素]]の''[[弟]]''の、
[[単純選択子]] [CODE(CSS)@en[[VAR[T]]]] と[[一致]]する[[要素]]と[[一致]]

詳しくは[[結合子]]の項を参照。

** 大文字と小文字

[9] [[選択子]]では[[大文字]]と[[小文字]]は原則として区別され''ません''が、
[[要素名]]などは当該[[マーク付け言語]]の解釈に依存します。

- [84] 一般に[[選択子]]の構文では [[ASCII大文字・小文字不区別]]です。 [SRC[>>66 3.]]
- [85] [[要素名]]、[[属性名]]、[[属性値]]については[[マーク付け言語]]に拠ります。 [SRC[>>66 3.]]
- [86] [[名前空間接頭辞]]は [[CSS名前空間]]仕様によります。 [SRC[>>66 3.]]
-- [87] [[CSS名前空間]]仕様によれば区別すると規定されています。 [SRC[[[CSS名前空間]] 3.3.]]

[EG[
[10] 例えば次の例を考えましょう。
[PRE(CSS example code)[
hoge|abbr[fuga|title="Cascading Style Sheets"].class#id:hover::after
]PRE]

- [68] [CODE(CSS)@en[abbr]] は使用する[[マーク付け言語]]で[[要素名]]の[[大文字]]と[[小文字]]を区別するかに依存します。
-- [69] [[HTML]] では区別''しません''。
-- [70] [[XML]] では区別''します''。
- [71] [CODE(CSS)@en[title]] は使用する[[マーク付け言語]]で[[属性名]]の[[大文字]]と[[小文字]]を区別するかに依存します。
-- [72] [[HTML]] では区別''しません''。
-- [73] [[XML]] では区別''します''。
- [74] [CODE(CSS)@en[Cascading Style Sheets]] は使用する[[マーク付け言語]]で[[属性値]]の[[大文字]]と[[小文字]]を区別するかに依存します。
-- [75] [[HTML名前空間]]の[[要素]]では、[[要素]]と[[属性]]の組み合わせによっては[[大文字]]と[[小文字]]を区別しません。
-- [76] その他の[[要素]]では、一般には[[大文字]]と[[小文字]]を区別します。
- [77] [CODE(CSS)@en[class]] の部分は、使用する[[マーク付け言語]]で[[クラス名]]の[[大文字]]と[[小文字]]を区別するかに依存します。
-- [78] [[奇癖モード]]では[[大文字]]と[[小文字]]を区別しません。
-- [79] [[無奇癖モード]]では[[大文字]]と[[小文字]]を区別します。
- [80] [CODE(CSS)@en[id]] の部分は、使用する[[マーク付け言語]]で[[識別子]]の[[大文字]]と[[小文字]]を区別するかに依存します。
-- [81] [[HTML]] でも [[XML]] でも[[大文字]]と[[小文字]]を区別します。
- [67] [[擬似クラス]]や[[擬似要素]]は純粋に[[選択子]]の一部なので、 
[CODE(CSS)@en[hover]] と [CODE(CSS)@en[after]] は、[[大文字]]でも[[小文字]]でも構いません。
- [82] [CODE(CSS)@en[hoge]] や [CODE(CSS)@en[fuga]] のような[[名前空間接頭辞]]は[[大文字]]と[[小文字]]を区別します。
]EG]

;; [153] 詳しくは[[型選択子]]、[[属性選択子]]、[[CSS名前空間]]、[[クラス選択子]]、
[[ID選択子]]の項を参照してください。

*** 歴史

[83] [[名前空間接頭辞]]の[[大文字]]と[[小文字]]について、以前は[[選択子]]の利用場面によって[[大文字]]と[[小文字]]を無視するかが定められるとされており、
[[CSS]] では無視、[[XBL]] と[[選択子API]] では区別するとされていました。しかし実装が複雑になるため、
現在では一律で区別しないこととされています。

[REFS[
- [35]
[CITE@en[Re: '''['''css3-selectors''']''' Namespace name lookup mechanisms]] ([[fantasai]] 著, [CODE[2007-06-20 02:11:27 +09:00]] 版) <http://lists.w3.org/Archives/Public/www-style/2007Jun/0097.html>
([[名無しさん]] [WEAK[2007-06-24 10:09:52 +00:00]])
]REFS]

** Escape

[88] [[CSS]] と同じ方式の [[escape]] を使うことができます [SRC[>>66 4.]]。

** メモ

[91] [[選択子]]仕様書には [[Yacc]]/[[Flex]] 形式の文法の定義がありますが、仕様書本文の規定よりはだいぶ緩くなっていて、
また[[非妥当]]な[[選択子]]の処理が文法には記述できないため、これをそのまま実装しても仕様には適合しませんし、
この文法に適合するからといって正しい[[選択子]]であるとは限りません。

* 名前空間接頭辞

[89] [[型選択子]]、[[普遍選択子]]、[[属性選択子]]では[[名前空間接頭辞]]や[[既定名前空間]]を使えます。
[[名前空間接頭辞]]は[[宣言]]されていなければなりません。[[宣言]]の方法は[[選択子]]を使う場面によります
[SRC[>>66 4.]]。 [[CSS]] では [CODE(CSS)@en[[[@namespace]]]] [[@規則]]を使います。 [[XBL2]]
では [CODE(XMLa)@en[[[xmlns]]]] [[属性]]を使います。

* 妥当性

[103] [RUBYB[[[構文解析誤り]]]@en[parsing error]]、例えば認識できない[[字句]]や文脈上認められていない[[字句]]の出現などがあると、
[[選択子]]は[RUBYB[[[非妥当]]]@en[invalid]]となります。 [SRC[>>66 12.]]

[104] [[利用者エージェント]]は次の[[構文解析誤り]]を正しく処理しなければ[['''なりません''']]。
[SRC[>>66 12.]]
- [105] [[宣言]]されていない[[名前空間接頭辞]]を含む[[単純選択子]]を[[非妥当]]として扱う
- [106] [[非妥当]]な[[単純選択子]]、[[結合子]]、[[字句]]を含む[[選択子]]を[[非妥当]]として扱う
- [107] [[非妥当]]な[[選択子]]を含む[[選択子群]]を[[非妥当]]として扱う

[108] [[選択子]]を再利用する仕様書は[[構文解析誤り]]の扱いを定義しなければ[['''なりません''']]。
[SRC[>>66 12.]]

[109] [[CSS]] では[[非妥当]]な[[選択子]]を使っている[[規則]]は[[無視]]されます。

* 選択子を使う仕様

[8]
:[[CSS]]:[[CSS]] は[[特性]]の適用対象を指定するために[[選択子]]を使っています。
:[[STTS]]:[[STTS]] は変換対象や処理内容を記述するために[[選択子]]を使っています。
:[[XBL 2.0]]:[[XBL 2.0]] では[[束縛]]対象や[[影木]]の[[内容]]の記述のために[[選択子]]を使っています。
:[[選択子API]]:[[選択子API]] は、[[節点]]を選択するために[[選択子]]を使うことができる
[[DOM]] の[[メソッド]]群です。
:[[HTML5]]:[[HTML5]] 勧告案にかつて含まれていた[[データ雛形]]機能は[[要素]]の選択に[[選択子]]を使っていましたが、
この機能自体が削除されました。

[101] [[選択子]]を再利用する仕様は、利用を認める、または認めない[[部分集合]]を列挙し、
仕様に追加する制約を説明する[[プロファイル]]を含めなければ[['''なりません''']]。
[SRC[>>66 12.]]

;; [102] この規定は各仕様の定義は直交するべきという現在の考え方にはそぐわない気がしますね。
実際そんな[[プロファイル]]なんて定義している仕様書は無いような。

* 拡張

[51] [[選択子]]は、採用する仕様や実装によって独自に拡張されていることがあります。

- [[STTS]] の拡張については、 [[STTS]] の項を参照してください。
- [[SAC]] の拡張については、 [[SAC]] の項をご覧ください。
- [[擬似クラス]]や[[擬似要素]]の拡張については、それぞれの項を参照してください。
- [[JavaScriptフレームワーク]]の[[選択子]]の実装は独自の拡張や制限が含まれていることがよくあります。

* 派生

[164] [[Emmet]]

* 利用者エージェント適合性

[100] [[装置]]の制限によって[[選択子]]の一部を実装できないとしても、それによってただちに不適合となるものではありません。
例えば[[対話的利用者エージェント]]以外では[[動的擬似クラス]]は意味が無いので実装しなくて構いません。
[SRC[>>66 12.]]

* 歴史

** CSS1

[REFS[
- [4] [CITE[Cascading Style Sheets, level 1]] ([TIME[2008-04-10 02:23:32 +09:00]] 版) <http://www.w3.org/TR/CSS1/#basic-concepts>
]REFS]

[116] [[選択子]]は [[CSS]] の最も重要で本質的な構成要素の一つであり、当然ながら既に [[CSS1]]
でいろいろな機能が含まれていました。

[117] [[CSS1]] は [[HTML]] 専用の[[スタイル言語]]でした。

** CSS2

[REFS[
- [114] [CITE@en[Selectors]] ([TIME[2011-06-07 22:09:52 +09:00]] 版) <http://www.w3.org/TR/CSS2/selector.html>
]REFS]

[118] [[CSS2]] で [[XML]] に対応しました。

[119] [[属性選択子]]や[[普遍選択子]]など多くの機能が [[CSS2]] で追加されています。

[131] [[CSS2]] では[[単純選択子]]の個数の制約が撤廃されています。

** STTS

[REFS[
- [130] [CITE[STSS 2]] ([[Daniel Glazman]] 著, [TIME[2000-09-09 01:13:50 +09:00]] 版) <http://www.w3.org/TR/NOTE-stts2-971017>
- [129] [CITE[STSS 3]] ([TIME[2000-03-13 23:38:54 +09:00]] 版) <http://www.w3.org/TR/1998/NOTE-STTS3-19981111>
]REFS]

[99] [[STTS]] は[[選択子]]を独自に拡張していました。そのうちのいくつかは[[選択子3]]仕様に取り込まれています。

** 選択子3

[REFS[
- [121] [CITE[CSS3 module: W3C selectors]] ([TIME[2000-03-13 23:37:32 +09:00]] 版) <http://www.w3.org/TR/1999/WD-CSS3-selectors-19990803>
- [122] [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>
- [123] [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/>
- [124] [CITE@en[CSS3 module: W3C Selectors]] ([TIME[2001-01-29 23:57:00 +09:00]] 版) <http://www.w3.org/TR/2001/WD-css3-selectors-20010126/>
- [125] [CITE@en[Selectors]] ([TIME[2001-11-15 23:36:43 +09:00]] 版) <http://www.w3.org/TR/2001/CR-css3-selectors-20011113/>
- [126] [CITE@en[Selectors]] ([TIME[2005-12-15 00:49:29 +09:00]] 版) <http://www.w3.org/TR/2005/WD-css3-selectors-20051215/>
- [127] [CITE@en[Selectors Level 3]] ([TIME[2009-03-10 22:17:53 +09:00]] 版) <http://www.w3.org/TR/2009/WD-css3-selectors-20090310/>
- [128] [CITE@en[Selectors Level 3]] ([TIME[2009-12-15 08:41:18 +09:00]] 版) <http://www.w3.org/TR/2009/PR-css3-selectors-20091215/>
- [62] [CITE@en[Selectors Level 3 Implementation Report]] ([TIME[2009-12-15 05:12:33 +09:00]] 版) <http://www.w3.org/Style/CSS/Test/CSS3/Selectors/20091025/reports/CR-ImpReport.html>
- [63] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/2011/REC-css3-selectors-20110929/>
- [64] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/>
]REFS]

;; [65] >>64 は現時点では ([[選択子4]]の[[WD]]が既に出ていますが) >>63 を指しています。
[TIME[2011-10-23T05:58:35.900Z]]

[115] [[CSS3]] 世代から、[[選択子]]は [[CSS]] の一部でありながらも単独の仕様でもあるという扱いになりました。

[120] [[選択子3]]では[[擬似クラス]]が多く追加されたり、用語が整理されたりしています。

[110] [[選択子3]]以降[[擬似要素]]は [CODE(CSS)[[[:]]]] からはじまるものから
[CODE(CSS)[[[::]]]] からはじまるものに変更されています。詳しくは[[擬似要素]]の項を参照してください。

*** プロファイル

[92] [[選択子3]]では幾つかの[[プロファイル]]が定義されています。それぞれ、[[選択子3]]を過去の仕様で規定されていた範囲に限定したものとなっています。

;; [93] 今となってはほとんど意味はありませんが、昔は [[CSS]] の[[プロファイル]]を定義することが重要と考えていた人達もいましたw

- [94] [[CSS水準1]]
- [95] [[CSS水準2]]
- [96] [[STTS3]]

;; [98] [[STTS3]] [[プロファイル]]は[[選択子3]]のうち[[STTS3]]に相当する機能を含んだものですが、
[[STTS3]] には[[選択子3]]に含まれていない機能もあり、それはこの[[プロファイル]]に含まれていません。

;; [97] なぜか[[選択子3]]全体という[[プロファイル]]はありません。

*** 選択子3からの削除

[132] 次の機能は[[選択子3]]の初期の案に含まれていましたが、実装経験の不足などの理由で最終版には含まれていません。
- [CODE(CSS)@en[[[:subject]]]]
- [CODE(CSS)@en[[[::menu]]]]
- [CODE(CSS)@en[[[:indeterminate]]]]
- [CODE(CSS)@en[[[:contains()]]]]
- [CODE(CSS)@en[[[::selection]]]]

* テスト・ケース

[REFS[
- [113] [CITE[CSS3 Selectors Test Suite Index]] ([TIME[2009-10-26 15:03:52 +09:00]] 版) <http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/>
]REFS]

* 関連

[111] [[選択子]]はしばしば [[XPath]] と対比されます。 [[XPath]] はかなり強力な[[式言語]]であり、
[[選択子]]よりも細かく[[一致]]する[[要素]]を指定できます。また[[要素]]以外のものを[[一致]]させたり、
[[文字列]]や[[数値]]の演算を行ったりもできます。

[112] しかし [[XPath]] は[[擬似クラス]]や[[擬似要素]]に相当するものがありません。また[[選択子]]とは違って
[[CSS]] を [[HTML]] に動的に適用するような用途も考慮していないので、仮に [[CSS]] 
のようなものを実装しようとすると性能上[[選択子]]の方がずっと有利でしょう。

* メモ

[12]
[CITE[hxxk.jp - IE 7 正式版を含む各種ブラウザの CSS Selectors testsuite の検証結果のまとめ]] <http://hxxk.jp/2006/10/20/0357>
([[名無しさん]] [WEAK[2006-10-20 15:32:01 +00:00]])

[13]
[CITE[Playing with CSS selectors]] <http://www.maujor.com/tutorial/isel-en.php>
([[名無しさん]] [WEAK[2006-11-16 00:08:26 +00:00]])

[14]
[CITE@en[Prototype JavaScript framework: Utility Methods.$$]] ([CODE[2007-03-10 12:39:19 +09:00]] 版) <http://prototypejs.org/api/utility/dollar-dollar>
([[名無しさん]] [WEAK[2007-03-11 01:09:56 +00:00]])

[29]
[CITE@ja[IE7 の隣接セレクタで気が付いたこと | WWW WATCH]] ([CODE[2007-04-21 11:56:35 +09:00]] 版) <http://hyper-text.org/archives/2007/04/ie7_adjacent_sibling_combinator.shtml>
([[名無しさん]] [WEAK[2007-04-21 03:08:29 +00:00]])

[30]
[CITE[WEBTECH - webtech:vantguarde]] ([CODE[2007-04-21 11:56:37 +09:00]] 版) <http://web.g.hatena.ne.jp/vantguarde/20070421#1177098311>
([[名無しさん]] [WEAK[2007-04-21 03:09:02 +00:00]])

[31]
>>29-30

これも IE8 の真標準モードでは修正するけど新奇癖モード
(旧標準モード) では修正しないとかいいだすのか??
([[名無しさん]] [WEAK[2007-04-21 03:10:33 +00:00]])

[32]
[CITE@ja[Shishimushi - Wii Opera のCSSセレクタ対応状況]] ([CODE[2007-04-23 09:04:06 +09:00]] 版) <http://kawatarou.info/note/opera/wii_opera_css_selectors.htm>
([[名無しさん]] [WEAK[2007-04-23 00:07:17 +00:00]])

[33]
[CITE@ja[Lucky bag::blog: こんなセレクタが CSS にあれば便利なのにと思うセレクタ]] ([[e-luck]] 著, [CODE[2007-04-23 09:20:35 +09:00]] 版) <http://www.lucky-bag.com/archives/2007/04/thinking-about-content-pseudo-class.html>

[[FAQ]] 嫁だな。
([[名無しさん]] [WEAK[2007-04-23 00:24:02 +00:00]])

[34]
[CITE@en[SlickSpeed Selectors Test]] ([CODE[2007-06-24 17:16:08 +09:00]] 版) <http://mootools.net/slickspeed/>
([[名無しさん]] [WEAK[2007-06-24 09:48:18 +00:00]])

[36]
[CITE@ja[あったらいいのに CSS セレクタ | WWW WATCH]] ([CODE[2007-07-13 22:32:58 +09:00]] 版) <http://hyper-text.org/archives/2007/07/delusion_css_electors.shtml>
([[名無しさん]])

[37]
[CITE@ja[Taken SPC : Web 標準の日々]] ([CODE[2007-07-22 14:56:32 +09:00]] 版) <http://taken.s101.xrea.com/blog/article.php?id=772>
([[名無しさん]])

[38]
[CITE[Bug 75375 &#8211; support for :nth-*() pseudo-classes]] ([CODE[2007-07-22 14:56:46 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=75375>
([[名無しさん]])

[39]
[CITE[Bug 65133 &#8211; implement CSS3 selectors]] ([CODE[2007-07-22 14:56:47 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=65133>
([[名無しさん]])

[40]
[CITE[seamonkey mozilla/layout/style/nsCSSRuleProcessor.cpp]] ([CODE[2007-07-13 05:10:23 +09:00]] 版) <http://mxr.mozilla.org/seamonkey/source/layout/style/nsCSSRuleProcessor.cpp>
([[名無しさん]])

[41]
[CITE[Latest topics > selector.js改 - outsider reflex]] ([[Piro(SHIMODA Hiroshi)]] 著, [CODE[2007-08-04 11:26:26 +09:00]] 版) <http://piro.sakura.ne.jp/latest/blosxom/webtech/javascript/2007-07-31_selectorjs.htm>
([[名無しさん]] [WEAK[2007-08-04 02:29:16 +00:00]])

[42]
[CITE@en[Dust-Me Selectors]] ([CODE[2007-08-04 12:09:02 +09:00]] 版) <http://www.sitepoint.com/dustmeselectors/>
([[名無しさん]])

[43]
<http://suika.fam.cx/gate/2007/cssom/viewer?c=a%20%2F**%2F%20%2B%20b%20%7B%7D%0A;h=;p=n;x=style-element>

これは[[選択子]]仕様書の[[文法]]的には認められないような。。。

([[名無しさん]])

[44]
[CITE[Latest topics > CSS3セレクタとXPathでの表現の対応表 - outsider reflex]] ([[Piro(SHIMODA Hiroshi)]] 著, [CODE[2007-09-13 21:17:21 +09:00]] 版) <http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-09-13_selector-to-xpath.htm>
([[名無しさん]])

[45]
[CITE@en[rikkertkoppes.com &#10020; thoughts - css syntax in graph]] ([CODE[2007-10-23 20:26:41 +09:00]] 版) <http://www.rikkertkoppes.com/thoughts/css-syntax/>
([[名無しさん]])

[46]
[CITE@en[Selectors]] ([CODE[2006-10-11 08:57:04 +09:00]] 版) <http://damowmow.com/temp/csswg/selectors/Overview.html>
([[名無しさん]])

[47]
[CITE@en[Selectors]] ([CODE[2008-06-28 08:01:06 +09:00]] 版) <http://dev.w3.org/cvsweb/~checkout~/csswg/selectors3/Overview.html?content-type=text/html;%20charset=utf-8>

[48] [CITE[CSSセレクタで属性だけじゃなく、スタイルもクエリーできちゃうとすごく便利(かも) - uupaaの開発日記]] ([TIME[2009-01-26 10:33:51 +09:00]] 版) <http://d.hatena.ne.jp/uupaa/20090116/1232093381>

[49] [CITE[ブラウザがネイティブに実装しているCSSセレクタ(querySelectorAll)で良くわからないところ - latest log]] ([TIME[2009-02-10 20:25:38 +09:00]] 版) <http://d.hatena.ne.jp/uupaa/20090209/1234168098>

[52] [CITE[Bug 65133 – implement CSS3 selectors]] ([TIME[2009-02-21 20:59:38 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=65133>

[53] [CITE@en[Selectors Level 3]] ([TIME[2009-03-10 22:17:53 +09:00]] 版) <http://www.w3.org/TR/2009/WD-css3-selectors-20090310/>

[54] [CITE@en[Selectors Level 3]]
([TIME[2009-12-15 08:41:18 +09:00]] 版)
<http://www.w3.org/TR/2009/PR-css3-selectors-20091215/>

[55] [CITE[IRC logs: freenode / #whatwg / 20101029]]
( ([TIME[2010-11-08 23:38:21 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20101029#l-788>

[56] [CITE@en[Selectors Level 4 ''''''[''''''CSS Working Group Wiki'''''']'''''']]
( ([TIME[2011-06-16 08:26:17 +09:00]] 版))
<http://wiki.csswg.org/spec/selectors4>

[57] [CITE[IRC logs: freenode / #whatwg / 20110616]]
( ([TIME[2011-06-24 23:47:15 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110616>

[58] [CITE@en[Selectors Level 4]]
( ([TIME[2011-09-29 17:32:00 +09:00]] 版))
<http://www.w3.org/TR/2011/WD-selectors4-20110929/>

[59] <http://www.w3.org/TR/selectors/> は現時点で Selectors3 [[勧告]]を指しています。
[TIME[2011-10-01T04:42:44.600Z]]


[60] [CITE@en[Selectors Level 3]]
( ([TIME[2011-09-29 22:16:17 +09:00]] 版))
<http://www.w3.org/TR/2011/REC-css3-selectors-20110929/>

[61] [CITE@en[Errata in REC-css3-selectors-20110929]]
( ([TIME[2011-09-28 00:32:19 +09:00]] 版))
<http://www.w3.org/Style/2011/REC-css3-selectors-20110929-errata.html>

[133] [[Selectors3]]、[[CSS2]] から切り出してきた時に構文とかの規定が完全には移植されずに曖昧な感じになってます。
[[YACC]]/[[Flex]] 文法は載っているんだけど、[[注釈]]とか [[<!--]] とかの semantics が明記されていないとか。

[134] [CITE[IRC logs: freenode / #whatwg / 20111029]]
( ([TIME[2011-10-31 07:52:02 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20111029>

[135] [[選択子]]仕様書は[[大文字]]と[[小文字]]の区別や[[擬似クラス]]の意味を[[マーク付け言語]]に委ねていますが、
実際にそれを定義しているのは [[HTML]] 仕様書くらいです。 [[XForms]] と [[XLink]]
の仕様書にも若干言及がありますが[[規定]]でなく[[参考]]で、また不完全です。 [[XML]]
についての規定は [[XML]] 系の仕様書に本来あるべきでしょうが、実際には [[HTML]]
の仕様書の規定に含まれています。

[136] [CITE[SMIL Timesheets 1.0]]
( ([TIME[2012-03-29 03:27:58 +09:00]] 版))
<http://www.w3.org/TR/2012/NOTE-timesheets-20120328/#adef-timesheetsSelect>

[137] [CITE[SMIL Timesheets 1.0]]
( ([TIME[2012-03-29 03:27:58 +09:00]] 版))
<http://www.w3.org/TR/2012/NOTE-timesheets-20120328/#smilTimesheetsNS-Elements-Item-Functions-Index>

[138] [CITE@en-US[CSS Selectors as Fragment Identifiers Community Group]]
( ([TIME[2012-04-24 07:33:15 +09:00]] 版))
<http://www.w3.org/community/cssselfrags/>

[139] [CITE@en[''''''[''''''selectors3'''''']'''''' WIP: a selector parser based on css3-syntax]]
( ([[Simon Sapin]] 著, [TIME[2012-06-10 02:19:00 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2012Jun/0159.html>

[140] [CITE@en[Selectors Level 4]]
( ([TIME[2012-08-22 18:13:47 +09:00]] 版))
<http://www.w3.org/TR/2012/WD-selectors4-20120823/>

[141] [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-selectors>

[142] [CITE@en-US[XBL 2.0]]
( ([TIME[2012-05-03 02:23:03 +09:00]] 版))
<http://dev.w3.org/2006/xbl2/Overview.html#allow-selectors-through>

[143] [CITE@en-US[XBL 2.0]]
( ([TIME[2012-05-03 02:23:03 +09:00]] 版))
<http://dev.w3.org/2006/xbl2/Overview.html#selectors-and-shadow-scopes>

[144] [CITE[CSS Print Profile]]
( ([TIME[2013-03-14 20:50:03 +09:00]] 版))
<http://www.w3.org/TR/2013/NOTE-css-print-20130314/#section-selectors>

[145] [CITE@en[Selectors Level 4]]
( ([TIME[2013-05-02 05:49:37 +09:00]] 版))
<http://www.w3.org/TR/2013/WD-selectors4-20130502/>

[146] [CITE@en[Making selectors first-class citizens]]
( ([[Anne van Kesteren]] 著, [TIME[2013-09-11 22:33:42 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2013Sep/0194.html>

[147] [CITE[IRC logs: freenode / #whatwg / 20131029]]
( ([TIME[2013-10-30 20:25:08 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131029#l-699>

[148] [CITE@en[Bug 23781 – id and class should be case-insensitive in quirks]]
( ([TIME[2013-11-10 18:15:38 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23781>

[149] [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/#attributes>

[150] [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/#selectors>

[151] [CITE@en[''''''[''''''selectors-nonelement'''''']'''''' First draft of a new spec for selecting non-element  nodes]]
( ([[Jirka Kosek]] 著, [TIME[2014-02-13 17:59:05 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-style/2014Feb/0464.html>

[152] [CITE@en[Non-element Selectors]]
( ([TIME[2014-02-18 14:10:00 +09:00]] 版))
<http://dev.w3.org/csswg/selectors-nonelement/>

[154] [CITE[Surfin' Safari - Blog Archive » Little overview of WebKit’s CSS JIT Compiler]]
( ([TIME[2014-04-18 09:10:48 +09:00]] 版))
<https://www.webkit.org/blog/3271/webkit-css-selector-jit-compiler/>

[155] [CITE[IRC logs: freenode / #whatwg / 20140422]]
( ([TIME[2014-04-23 23:18:39 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140422>

[156] [CITE@en-US[Internationalization Tag Set (ITS) Version 2.0]]
( ([TIME[2013-10-27 19:39:43 +09:00]] 版))
<http://www.w3.org/TR/its20/#def-css-selector>

[157] [CITE@en-US[Internationalization Tag Set (ITS) Version 2.0]]
( ([TIME[2013-10-27 19:39:43 +09:00]] 版))
<http://www.w3.org/TR/its20/#css-selectors>

[5] [CITE@en[''''''[''''''selectors-4'''''']'''''' bikeshed on profiles]]
([[Brian Kardell]] 著, [TIME[2015-04-08 07:40:12 +09:00]] 版)
<https://lists.w3.org/Archives/Public/www-style/2015Apr/0070.html>

[7] [CITE@en-US[DOM Event I/O Processor for SCXML]]
( ([TIME[2015-08-06 00:51:18 +09:00]] 版))
<http://www.w3.org/TR/2015/NOTE-dom-iop-20150806/>

[FIG(quote)[
[FIGCAPTION[
[11] [CITE@en[Pointer Methods in RDF 1.0]]
([TIME[2017-02-01 07:42:20 +09:00]])
<https://www.w3.org/TR/2017/NOTE-Pointers-in-RDF10-20170202/>
]FIGCAPTION]

> 2.3.1.2 CSSSelectorPointer Class
> CSS Selector Pointer - an expression pointer that points out parts of a document by means of a CSS expression.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[15] [CITE@en[Web Annotation Data Model]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/model/wd2/#h-css-selector>
]FIGCAPTION]

> CSS Selectors allow for a wide variety of well supported ways to describe the path to an element in a web page, and thus cover many of the basic use cases for Web Annotation. Results are not defined for when a CSS Selector is applied to a representation that does not conform to the Document Object Model.

]FIG]

[16] 「DOM に適合しない[[表現]]」とは意味がよくわかりませんが、
[[Webブラウザー]]で [[DOM]] で表されない[[MIME型]]、というようなことなのでしょうか。
[[媒体文書]]や[[プラグイン文書]]がどう扱われるのかよくわかりませんし、
結果は未定義と書いてあるので、どこまでが正しい動作なのか検証するのも難しそうですね。
([[相互運用性]]とは (哲学))

[17] 後の方に表があって、そこでは [[HTML]] と [[XML]] と [[SVG]] は[[選択子]]
(や [[XPath 1.0]]) が該当することになっています。[[テキスト文書]]すら該当しないようです。
しかし [[EPUB]] も該当しないことになっています。「[[DOM]] に適合」
の意味はかなり難解なようです。

[18] [CITE@en[Web Annotation Vocabulary]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/vocab/wd/#h-cssselector>

[FIG(quote)[
[FIGCAPTION[
[19] [CITE@en[Selectors and States]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/selector-note/#h-cssselector_def>
]FIGCAPTION]

> Instance
> An element of a group of Resources represented by a particular Class.

]FIG]


[20] [CITE@en[Non-element Selectors Module Level 1]]
([TIME[2017-04-28 16:30:44 +09:00]])
<https://drafts.csswg.org/selectors-nonelement/>

[21] [CITE@en[Errata in REC-css3-selectors-20110929]]
([TIME[2017-03-27 22:37:09 +09:00]])
<https://www.w3.org/Style/2011/REC-css3-selectors-20110929-errata.html>

[FIG(quote)[
[FIGCAPTION[
[22] [CITE@en[Creating Safari Content-Blocking Rules]]
([TIME[2017-06-06 17:08:25 +09:00]])
<https://developer.apple.com/library/content/documentation/Extensions/Conceptual/ContentBlockingRules/CreatingRules/CreatingRules.html#//apple_ref/doc/uid/TP40016265-CH2-SW1>
]FIGCAPTION]

> selector
> A string that defines a selector list. This value is required when the action type is css-display-none. If the action type is not css-display-none, the selector field is ignored. Use CSS identifiers as the individual selector values, separated by commas. All selectors that are supported by Safari and WebKit are supported by Safari content-blocking rules. Compound selectors, shown in Listing 3 and defined in the W3C Selectors Level 4 draft, are also supported.

]FIG]


[23] [CITE@en['''['''selectors''']''' Rewrite selector matching algorithms to describe matching…]]
([[dbaron]]著, [TIME[2017-07-24 14:22:01 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/7dc262a4832f3285a9280618ea7f669392299ce6>

[24] [CITE@en[selectors4 API hooks section (was Re: Proposed agenda)]]
([[L. David Baron]]著, [TIME[2017-07-27 06:20:20 +09:00]])
<https://lists.w3.org/Archives/Public/www-style/2017Jul/0022.html>

[25] [CITE@en['''['''selectors-4''']''' Rename “dynamic” profile to “live” and “static” to “sna…]]
([[fantasai]]著, [TIME[2017-12-31 19:12:31 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/fa1389534b5d07c5426f5bc44745d409952a5a02>

[26] [CITE@en[More intuitive names for selector performance profiles · Issue #1694 · w3c/csswg-drafts]]
([TIME[2018-01-01 12:59:06 +09:00]])
<https://github.com/w3c/csswg-drafts/issues/1694>

[27] [CITE@en['''['''CSSWG''']''''''['''selectors-4''']''' Updated WD of Selectors Level 4]]
([[fantasai]]著, [TIME[2018-02-02 09:31:14 +09:00]])
<https://lists.w3.org/Archives/Public/www-style/2018Feb/0001.html>

[28] [CITE@en[Selectors Level 4]]
([TIME[2018-02-03 08:40:53 +09:00]])
<https://www.w3.org/TR/2018/WD-selectors-4-20180202/>

[90] [CITE@en[Do not throw for query() and queryAll() · Issue #39 · whatwg/dom]]
([TIME[2018-03-15 16:13:09 +09:00]])
<https://github.com/whatwg/dom/issues/39>

[158] [CITE@en[Selectors Level 3]]
([TIME[2018-01-26 04:47:23 +09:00]])
<https://www.w3.org/TR/2018/CR-selectors-3-20180130/>

[159] [CITE@en['''['''selectors-4''']''' Rename “dynamic” profile to “live” and “static” to “sna…]]
([[fantasai]]著, [TIME[2017-12-31 19:12:31 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/fa1389534b5d07c5426f5bc44745d409952a5a02>

[160] [CITE@en['''['''selectors''']''' More intuitive names for selector performance profiles · Issue #1694 · w3c/csswg-drafts]]
([TIME[2018-05-05 11:55:05 +09:00]])
<https://github.com/w3c/csswg-drafts/issues/1694>

[161] [CITE@en['''['''CSSWG''']''''''['''selectors-4''']''' Updated WD of Selectors Level 4]]
([[fantasai]]著, [TIME[2018-02-02 09:31:14 +09:00]])
<https://lists.w3.org/Archives/Public/www-style/2018Feb/0001.html>

[162] [CITE@en[Selectors Level 4]]
([TIME[2018-02-03 08:40:53 +09:00]])
<https://www.w3.org/TR/2018/WD-selectors-4-20180202/>

- [66] [CITE@en[Selectors]] 
<http://www.w3.org/TR/selectors/>
