[PR]ÕŒ‚!‚ ‚È‚œ‚Ì–{“–‚Ì— ‚ÌŠç!:ŽÀ‚Í‹M•û‚̓­ƒ¢Œ§og?‚±‚±‚Å•ª‚©‚é^ŽÀ

ようこそ。

仕様曞の芏範的なバヌゞョンはW3Cのサむトにある英語版である。翻蚳された文曞は翻蚳からの誀りが含たれおいるかもしれない。

このバヌゞョン:
http://isweb34.infoseek.co.jp/computer/zinganx/standards/2001/WD-css3-selectors-20011113.html
最新のバヌゞョン:
http://www.jtw.zaq.ne.jp/zing/spec/css3-selectors.html
前のバヌゞョン:
なし
翻蚳者:
鉄野正倫・平野貎仁

W3C

セレクタ

2001幎11月13日のW3Cの勧告候補

このバヌゞョン:
http://www.w3.org/TR/2001/CR-css3-selectors-20011113
最新のバヌゞョン:
http://www.w3.org/TR/css3-selectors
前のバヌゞョン:
http://www.w3.org/TR/2001/WD-css3-selectors-20010126
線集者:
Daniel Glazman (Netscape/AOL)
Tantek Çelik (Microsoft Corporation)
Ian Hickson
Peter Linss (former editor, formerly of Netscape/AOL)
John Williams (former editor, Quark, Inc.)

摘芁

CSS(カスケヌドを行うスタむルシヌト)は、HTMLおよびXMLの文曞の、画面䞊、玙面䞊、音声などでの描写法を蚘述するための蚀語である。スタむルのプロパティを文曞䞭の゚レメントに結び぀けるため、CSSは、ひず぀以䞊の゚レメントにマッチするパタヌンであるセレクタを甚いる。CSSの氎準3に掚薊されるセレクタに぀いお、この文曞は説明する。このセレクタはCSSの氎準2のセレクタを含み、拡匵する。

この文曞の地䜍

この文曞は来るCSS3の仕様曞の"モゞュヌル"のひず぀である。CSS1およびCSS2においおすでに存圚するセレクタに぀いお説明するだけでなく、CSS3ず、このセレクタを必芁ずするほかの蚀語の、䞡方に察する新しいセレクタを提案するこずも行う。CSSの策定団䜓は、CSS3のすべおの実装がすべおのセレクタを実装しなければならないだろうずいうこずを予期しおいない。その代わりずしお、いわゆる"プロフィヌル"である、CSS3のいく぀かの倉圢がおそらくできるだろう。たずえば、察話的なナヌザ゚ヌゞェントのためのひず぀のプロフィヌルだけが、提案されおいるセレクタのすべおを含む。

この仕様曞は、CSSの策定団䜓によっお勧告候補ずしお提案されおいる。この文曞は2001幎1月26日付け策定䞭の草案の改蚂版であり、ラストコヌルの再吟味、批評および、W3CのCSSの策定団䜓の曎なる議論の間に受け取られた提案を組み入れおいる。

勧告候補の期間は、おおよそ六ヶ月続く(2002幎5月終了)ず予期されおいる。すべおの人が、この仕様曞を再吟味および実装し、(蚘録された)公開のメヌリングリストwww-style(䜿甚説明曞を芋よ)に批評を返すように奚励される。たた、W3Cの䌚員はCSSの策定団䜓たで盎接に批評を送るこずもできる。

䞇䞀この仕様曞が実斜䞍可胜だずわかれば、策定団䜓は、この文曞を策定䞭の草案の地䜍に戻し、必芁な倉曎を行う。さもなければ、策定団䜓は、この文曞を勧告案に進めるこずをW3Cの理事に求めるこずを予期する。

これはただ草案の文曞であり、い぀でも、ほかの文曞によっお、曎新されたり、取っお代わられたり、時代遅れにされたりするかもしれない。W3Cの勧告候補を"策定進行䞭"ではないものずしお匕甚するこずは䞍適切である。珟圚の策定䞭の草案の䞀芧衚は、http://www.w3.org/TRで芋぀けられる。

この文曞は、翻蚳が利甚できるかもしれない。この仕様曞の英語のバヌゞョンが、唯䞀の芏範的なバヌゞョンである。

ほかのCSS3モゞュヌルぞの䟝存

目次

1. 状況

CSS+FPの策定団䜓の䌚員は、CSSの仕様曞をモゞュヌル化するこずを、Clamart䌚議の間に提案した。

このモゞュヌル化、およびCSSの䞀般的シンタックスの倖面化は、仕様曞のサむズを枛らし、セレクタおよび/あるいはCSSの䞀般的なシンタックスを新しい仕様曞が甚いるこずを可胜にする。たずえば、振る舞いやツリヌの倉換がある。

この文曞においお導入される構想ごずのテストである、詊隓事䟋をこの仕様曞は含む。そのテストは完党な適合詊隓ではないが、この仕様曞のある郚分が、最小限の皋床実装されおいるか、あるいはたったく実装されおいないか確認する方法を䜿甚者に提䟛する぀もりである。

1.1 CSS2からの倉曎

CSS2におけるセレクタず、セレクタにおけるものずの間の䞻芁な違いは、

である。

2. セレクタ

セレクタは構造を衚珟する。セレクタが文曞のツリヌの䞭でどの゚レメントにマッチするのか決定する(たずえば、CSSの芏則における)条件ずしお、あるいは、その構造ず䞀臎するHTMLたたはXMLの断片の均䞀な蚘述ずしお、この構造は䜿われる。

セレクタは単玔な芁玠から、高機胜な前埌の関係䞊の衚珟たで及びうる。

次に続く衚は、セレクタのシンタックスを手短に述べるものである。

型 意味 説明される項 最初に定矩されたCSSの氎準
* すべおの芁玠 普遍的なセレクタ 2
E 皮類Eの゚レメント 皮類のセレクタ 1
E[foo] "foo"ずいうアトリビュヌトのEずいう゚レメント アトリビュヌトのセレクタ 2
E[foo="bar"] "foo"ずいうアトリビュヌトの倀が厳密に"bar"ず等しいEずいう゚レメント アトリビュヌトのセレクタ 2
E[foo~="bar"] "foo"ずいうアトリビュヌトの倀がスペヌスで区切られた倀のリストであり、そのひず぀が厳密に"bar"ず等しいEずいう゚レメント アトリビュヌトのセレクタ 2
E[foo^="bar"] "foo"ずいうアトリビュヌトの倀が厳密に文字列"bar"から始たるEずいう゚レメント アトリビュヌトのセレクタ 3
E[foo$="bar"] "foo"ずいうアトリビュヌトの倀が厳密に文字列"bar"で終わるEずいう゚レメント アトリビュヌトのセレクタ 3
E[foo*="bar"] "foo"ずいうアトリビュヌトの倀が郚分文字列"bar"を含むEずいう゚レメント アトリビュヌトのセレクタ 3
E[hreflang|="en"] "hreflang"ずいうアトリビュヌトが、"en"で(巊から)始たる倀のハむフンで区切られたリストであるEずいう゚レメント アトリビュヌトのセレクタ 2
E:root 文曞のルヌトである、Eずいう゚レメント 構造䞊の擬䌌クラス 3
E:nth-child(n) その芪のn番目の子であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:nth-last-child(n) 最埌のから数えおその芪のn番目の子であるEずいう芁玠 構造䞊の擬䌌クラス 3
E:nth-of-type(n) その皮類のn番目の兄匟であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:nth-last-of-type(n) 最埌のから数えお、その皮類のn番目の兄匟であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:first-child その芪の最初の子であるEずいう゚レメント 構造䞊の擬䌌クラス 2
E:last-child その芪の最埌の子であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:first-of-type その皮類の最初の兄匟であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:last-of-type その皮類の最埌の兄匟であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:only-child その芪の唯䞀の子であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:only-of-type その皮類の唯䞀の兄匟であるEずいう゚レメント 構造䞊の擬䌌クラス 3
E:empty (テキストのノヌドを含めお)子䟛を持たないEずいう゚レメント 構造䞊の擬䌌クラス 3
E:link
E:visited
タヌゲットがただ蚪れおいない(:link)か、あるいはすでに蚪れおいる(:visited)ハむパヌリンク元のアンカヌであるEずいう゚レメント リンクの擬䌌クラス 1
E:active
E:hover
E:focus
䜿甚者がある行為をしおいる間のEずいう゚レメント 䜿甚者の行為の擬䌌クラス 1および2
E:target 参照しおいるURIのタヌゲットであるEずいう゚レメント タヌゲットの擬䌌クラス 3
E:lang(fr) 蚀語"fr"における皮類Eの゚レメント(その文曞蚀語は、蚀語が決定される方法を明瀺する) :lang()ずいう擬䌌クラス  2
E:enabled
E:disabled 
有効たたは無効にされおいるナヌザむンタフェヌス゚レメントE UIの゚レメントの状態の擬䌌クラス 3
E:checked
E:indeterminate 
チェックされおいるか、たたはチェックされおいない状態のナヌザむンタフェヌス゚レメントE(たずえばラゞオボタンやチェックボックス) UIの゚レメントの状態の擬䌌クラス 3
E:contains("foo") テキストの内容に郚分文字列"foo"を含むEずいう゚レメント 内容の擬䌌クラス 3
E::first-line Eずいう゚レメントの最初にフォヌマットされる行 :first-lineずいう擬䌌゚レメント 1
E::first-letter Eずいう゚レメントの最初にフォヌマットされる文字 :first-letterずいう擬䌌芁玠 1
E::selection 䜿甚者によっお珟圚遞択/匷調されおいる、Eずいう゚レメントの䞀郚 UIの゚レメントの断片の擬䌌゚レメント 3
E::before Eずいう゚レメントの前に生成される内容 :beforeずいう擬䌌゚レメント 2
E::after Eずいう゚レメントの埌に生成される内容 :afterずいう擬䌌゚レメント 2
E.warning クラスが"warning"であるEずいう芁玠(その文曞蚀語はクラスが決定される方法を明瀺する)。 クラスのセレクタ 1
E#myid IDが"myid"ず等しいEずいう゚レメント。 IDのセレクタ 1
E:not(s) 単玔なセレクタsにマッチしないEずいう゚レメント 打消しの擬䌌クラス 3
E F Eずいう゚レメントの子孫であるFずいう゚レメント 子孫の結合子 1
E > F Eずいう゚レメントの子であるFずいう゚レメント 子の結合子 2
E + F Eずいう゚レメントの盎埌に来るFずいう゚レメント 盎接隣接の結合子 2
E ~ F Eずいう゚レメントの埌に来るFずいう゚レメント 間接隣接の結合子 3

それぞれのセレクタの意味は、"意味"の瞊の列のそれぞれのセルの内容に察しお前に䜍眮する"マッチ"によっお䞊の衚から匕き出される。

3. 倧文字・小文字の区別

セレクタにおける、文曞蚀語の゚レメントの名前の倧文字・小文字の区別は、文曞蚀語に䟝存する。たずえば、HTMLの堎合においおは、゚レメントの名前は倧文字・小文字を区別しないが、XMLの堎合においおは倧文字・小文字を区別する。

たた、アトリビュヌトのセレクタにおける、アトリビュヌトの名前ずアトリビュヌトの倀の倧文字・小文字の区別も、文曞蚀語に䟝存する。

4. セレクタのシンタックス

セレクタは、結合子で区切られた、ひず぀以䞊の、単玔なセレクタの連続である。

単玔なセレクタの連続は、結合子で区切られおいない䞀続きの単玔なセレクタである。それは、垞に皮類のセレクタあるいは普遍的なセレクタから始たる。このほかには、皮類のセレクタあるいは普遍的なセレクタは、連続の䞭で蚱容されない。

単玔なセレクタは、皮類のセレクタ、普遍的なセレクタ、アトリビュヌトのセレクタ、IDのセレクタ、内容のセレクタたたは擬䌌クラスのいずれかである。単玔なセレクタの最埌の連続にひず぀の擬䌌゚レメントが远加されおもよい。

結合子は、空癜、"倧なりの蚘号"(>)、"プラスの蚘号"(+)および"チルダ"(~)である。空癜は、それを取り囲む結合子ず単玔なセレクタの間に珟れおもよい。文字"スペヌス"(Unicodeのコヌド32)、"タブ"(9)、"ラむンフィヌド"(10)、"キャリッゞリタヌン"(13)および"フォヌムフィヌド"(12)がだけ空癜に存圚しおよい。"半角のスペヌス"(8195)および"衚意文字のスペヌス"(12288)のような、ほかのスペヌスのような文字は、空癜の圹割はない。

セレクタによっお衚される文曞のツリヌの゚レメントは、セレクタの実䜓ず呌ばれる。単玔なセレクタのただひず぀の連続からなるセレクタは、必芁条件を満たすすべおの゚レメントを衚す。ある連続を、別の、単玔なセレクタの連続ず結合子に远加するず、付加的なマッチの制玄が課されるので、セレクタの実䜓は、垞に、単玔なセレクタのもっずも右の連続によっお衚される゚レメントのサブセットになる。

泚: 単玔なセレクタの連続も結合子も含たない空のセレクタは、無効なセレクタである。

5. セレクタの矀

いく぀かのセレクタが同じ宣蚀を共有するずき、コンマで区切られたリストに集められおもよい。

CSSの䟋:

この䟋においお、たったく同じ宣蚀を持぀䞉぀の芏則を導く。したがっお、

h1 { font-family: sans-serif }
h2 { font-family: sans-serif }
h3 { font-family: sans-serif }
は、
h1, h2, h3 { font-family: sans-serif }
ず等しい。

譊告: すべおのセレクタが有効なセレクタであるから、この䟋においお同等であるこずは正しい。そのセレクタのひず぀が無効であれば、セレクタの党䜓の矀が無効になるから、すべおの䞉぀の項目の゚レメントに察する芏則が無効になるが、䞉぀の個々の項目の芏則ならば、ただひず぀が無効になる。

6. 単玔なセレクタ

6.1 皮類のセレクタ

皮類のセレクタは、文曞蚀語の゚レメントの皮類の名前である。文曞のツリヌにおける゚レメントの皮類の事䟋を皮類のセレクタは衚す。

䟋:

文曞のツリヌにおけるh1ずいう゚レメントを、以䞋に続くセレクタは衚す。

h1

6.1.1 皮類のセレクタずネヌムスペヌス

皮類のセレクタは、任意のネヌムスペヌス([XML-NAMES])の構成芁玠を蚱容する。前もっお宣蚀されおいるネヌムスペヌスのプレフィックスに、ネヌムスペヌスのセパレヌタである"瞊線"(|)によっお区切られた゚レメントの名前が加えられる。宣蚀されたネヌムスペヌスを持たない゚レメントをセレクタが衚すこずを意図しおいるのを瀺すのに、ネヌムスペヌスの構成芁玠は空にしおおいおもよい。アスタリスクはネヌムスペヌスのプレフィックスに甚いおもよく、(ネヌムスペヌスを持たない゚レメントを含んで)すべおのネヌムスペヌスにおける゚レメントをそのセレクタが衚すこずを瀺す。デフォルトのネヌムスペヌスが宣蚀されおいなければ、ネヌムスペヌスの構成芁玠(ネヌムスペヌスのセパレヌタ)を持たない゚レメントの皮類のセレクタは、゚レメントのネヌムスペヌスにかかわらず゚レメントを衚す("*|"ず等しい)。この事䟋においおは、デフォルトのネヌムスペヌスにおける゚レメントをセレクタは衚す。

泚 : 前もっお宣蚀されおいないネヌムスペヌスのプレフィックスを含む皮類のセレクタは無効なセレクタである。ネヌムスペヌスのプレフィックスを宣蚀するための方法は、セレクタを実装しおいる蚀語にゆだねられる。CSSの堎合においおは、その方法は、䞀般的なシンタックスのモゞュヌルの䞭で定矩される。

もしセレクタにおいお甚いられおいるネヌムスペヌスのプレフィックスが前もっお宣蚀されおなければ、セレクタは無効だずみなされなければならず、暙準の゚ラヌの凊理芏則にしたがっお党䜓のセレクタが無芖されるこずに泚意するべきだ。

ネヌムスペヌスの認識のあるクラむアントにおいお、゚レメントの修食された名前のロヌカルの郚分だけに察比しお、゚レメントの皮類のセレクタがマッチするこずに泚意するべきだ。䜎氎準のクラむアントにおけるマッチの挙動に぀いおの泚釈は、䞋を芋よ。

抂しお:

ns|E
nsずいうネヌムスペヌスにおける名前がEの゚レメント
*|E
すべおのネヌムスペヌスにおける、名前がEの゚レメント。宣蚀されたネヌムスペヌスを持たないものも含む
|E
宣蚀されたネヌムスペヌスを持たない、名前がEの芁玠
E
もしデフォルトのネヌムスペヌスが明瀺されおいなければ、これは*|Eず等しい。そうでなければ、nsがデフォルトのネヌムスペヌスであるns|Eず等しい。

CSSの䟋:

@namespace foo url(http://www.example.com);

foo|h1 { color: blue }

foo|* { color: yellow }

|h1 { color: red }

*|h1 { color: green }

h1 { color: green }

"http://www.example.com"ずいうネヌムスペヌスにおけるh1ずいう゚レメントだけに最初の芏則はマッチする。

"http://www.example.com"ずいうネヌムスペヌスにおけるすべおの゚レメントに二番目の芏則はマッチする。

宣蚀されるネヌムスペヌスを持たないh1ずいう゚レメントだけに䞉番目の芏則はマッチする。

(宣蚀されたネヌムスペヌスを持たないものも含めお)すべおのネヌムスペヌスにおけるh1ずいう゚レメントに四番目の芏則はマッチする。

デフォルトのネヌムスペヌスが定矩されおいないから、最埌の芏則は四番目の芏則ず等しい。

6.2 普遍的なセレクタ

普遍的なセレクタである、曞かれた"アスタリスク"(*)は、すべおの゚レメントの皮類に適合する名前を衚す。もしデフォルトのネヌムスペヌスが明瀺されおいなければ、(宣蚀されおいるネヌムスペヌスを持たないものも含めお、)すべおのネヌムスペヌスにおける、文曞のツリヌのすべおの個々の゚レメントを、これは衚珟する。もしデフォルトのネヌムスペヌスが明瀺されおいれば、䞋の普遍的なセレクタずネヌムスペヌスを芋よ。

もし普遍的なセレクタが単玔なセレクタの連続の構成芁玠でしかなければ、*は省略されおもよい。たずえば、

泚: 普遍的なセレクタを衚す*は省かれないこずが掚奚される。

6.2.1 普遍的なセレクタずネヌムスペヌス

普遍的なセレクタは任意のネヌムスペヌスの構成芁玠を蚱容する。

ns|*
nsずいうネヌムスペヌスにおけるすべおの゚レメント
*|*
すべおの゚レメント
|*
宣蚀されたネヌムスペヌスを持たないすべおの゚レメント
*
もしデフォルトのネヌムスペヌスが明瀺されおいなければ、*|*ず等しい。そうでなければ、nsデフォルトのネヌムスペヌスであるns|*ず等しい。

泚: 前もっお宣蚀されおいないネヌムスペヌスのプレフィックスを含む普遍的なセレクタは無効なセレクタである。ネヌムスペヌスのプレフィックスを宣蚀するための方法は、セレクタを実装する蚀語にゆだねられる。CSSの堎合においおは、その方法は䞀般的なシンタックスのモゞュヌルの䞭で定矩される。

6.3 アトリビュヌトのセレクタ

セレクタぱレメントのアトリビュヌトの衚珟を可胜にする。

6.3.1 アトリビュヌトの存圚ず倀のセレクタ

CSS2は四぀のアトリビュヌトのセレクタを導入した。

[att]
どんなアトリビュヌトの倀であっおも、attずいうアトリビュヌトを衚す。
[att=val]
倀が厳密に"val"であるattずいうアトリビュヌトを衚す。
[att~=val]
倀がスペヌスで区切られた単語のリストであり、そのうちのひず぀が厳密に"val"であるattずいうアトリビュヌトを衚す。もしこのセレクタが甚いられれば、(スペヌスによっお区切られおいるから)倀における単語はスペヌスを含んではならない。
[att|=val]
倀が厳密に"val"であるか、"-"の盎前に来る"val"で始たっおいるかのいずれかであるattずいうアトリビュヌトを衚す。RFC3066([RFC3066])の䞭で説明されおいるように、蚀語のサブコヌドのマッチ(たずえば、HTMLの䞭でlinkずいう゚レメントにおけるhreflangずいうアトリビュヌト)を䞻ずしおこれは可胜にする぀もりである。泚:lang(あるいはxml:lang)の蚀語のサブコヌドのマッチのためには、:langずいう擬䌌クラスを芋おください。

アトリビュヌトの倀は、識別子か文字列でなければならない。セレクタにおけるアトリビュヌトの名前及び倀の倧文字・小文字の区別は文曞蚀語に䟝存する。

䟋:

たずえば、titleずいうアトリビュヌトをもっおいれば、どんな倀であっおも、h1ずいう゚レメントを、以䞋に続くアトリビュヌトのセレクタは衚す。

h1[title]

以䞋に続く䟋においおは、classずいうアトリビュヌトが厳密に倀"example"をも぀spanずいう゚レメントを、セレクタは衚す。

span[class=example]
゚レメントのいく぀かのアトリビュヌト、あるいは同じアトリビュヌトにおけるいく぀かの条件に、耇数のアトリビュヌトのセレクタが甚いられる。

ここでは、helloずいうアトリビュヌトが厳密に倀"Cleveland"を持ち、goodbyeずいうアトリビュヌトが厳密に倀"Columbus"を持っおいるspanずいう゚レメントを衚す。

span[hello="Cleveland"][goodbye="Columbus"]

以䞋に続くセレクタは、"="および"~="の間の違いを䟋蚌する。最初のセレクタは、たずえばrelずいうアトリビュヌトの倀"copyright copyleft copyeditor"を衚す。hrefずいうアトリビュヌトが厳密な倀"http://www.w3.org/"を持っおいるaずいう゚レメントを二番目のセレクタは衚す。

a[rel~="copyright"]
a[href="http://www.w3.org/"]

hreflangずいうアトリビュヌトが厳密に"fr"であるlinkずいう゚レメントを以䞋に続くセレクタは衚す。

link[hreflang=fr]

"en"、"en-US"および"en-cockney"を含めお、hreflangずいうアトリビュヌトの倀が"en"から始たるlinkずいう゚レメントを、以䞋に続くセレクタは衚す。

link[hreflang|="en"]

同様に、アトリビュヌトcharacterに察する二぀の異なる倀のうちのひず぀を持っおいるずきはい぀でも、DIALOGUEずいう゚レメントを以䞋に続くセレクタは衚す。

DIALOGUE[character=romeo] 

DIALOGUE[character=juliet]

6.3.2 アトリビュヌトのセレクタにマッチする郚分文字列

アトリビュヌトの倀における郚分文字列にマッチするのに䞉぀の付加的なアトリビュヌトのセレクタが提䟛される。

[att^=val]
倀が接頭蟞"val"から始たるattずいうアトリビュヌトを衚す
[att$=val]
倀が接尟蟞"val"で終わるattずいうアトリビュヌトを衚す
[att*=val]
郚分文字列"val"の少なくずもひず぀の事䟋を含むattずいうアトリビュヌトを衚す

アトリビュヌトの倀は、識別子か文字列でなければならない。セレクタにおけるアトリビュヌトの名前及び倀の倧文字・小文字の区別は文曞蚀語に䟝存する。

䟋:

画像を参照しおいる、HTMLのobjectを、以䞋に続くセレクタは衚す。

object[type^="image/"]

倀が".html"で終わるhrefずいうアトリビュヌトを持っおいる、HTMLのアンカヌであるaを、以䞋に続くセレクタを衚す。

a[href$=".html"]

倀が郚分文字列"hello"を含むtitleずいうアトリビュヌトを持っおいる、HTMLの段萜を、以䞋に続くセレクタは衚す。

p[title*="hello"] 

6.3.3 アトリビュヌトのセレクタずネヌムスペヌス

アトリビュヌトの名前に察する任意のネヌムスペヌスの構成芁玠をアトリビュヌトのセレクタは蚱容する。ネヌムスペヌスのプレフィックスは、ネヌムスペヌスのセパレヌタ"瞊線"(|)によっお区切られるアトリビュヌトの名前を、前もっお宣蚀されおいるネヌムスペヌスのプレフィックスに加えおもよい。XMLの勧告におけるネヌムスペヌスに盞応しお、デフォルトのネヌムスペヌスはアトリビュヌトを提䟛しないから、したがっお、宣蚀されおいるネヌムスペヌスを持たないアトリビュヌトにだけ、ネヌムスペヌスの構成芁玠を持たないアトリビュヌトのセレクタは適甚される("|attr"ず等しい)。アトリビュヌトのネヌムスペヌスにかかわらず、すべおのアトリビュヌトの名前ず、アスタリスクはマッチする。

泚 : 前もっお定矩されおいないネヌムスペヌスのプレフィックスをアトリビュヌトの名前が含んでいるアトリビュヌトのセレクタは、無効なセレクタである。ネヌムスペヌスのプレフィックスを宣蚀するための方法は、セレクタを実装する蚀語にゆだねられる。CSSの堎合においおは、その方法は䞀般的なシンタックスのモゞュヌルの䞭で定矩される。

CSSの䟋:

@namespace foo "http://www.example.com";

[foo|att=val] { color: blue }

[*|att] { color: yellow }

[|att] { color: green }

[att] { color: green }
倀が"val"である"http://www.example.com"ずいうネヌムスペヌスの䞭にアトリビュヌトattがある゚レメントにだけ最初の芏則はマッチする。

(宣蚀されおいないネヌムスペヌスも含めお)アトリビュヌトのネヌムスペヌスにかかわらずアトリビュヌトattを持぀゚レメントにだけマッチする。

最埌の二぀の芏則は同等で、あるネヌムスペヌスの䞭にあるこずをアトリビュヌトが宣蚀されおいないアトリビュヌトattを持぀゚レメントにだけマッチする。

6.3.4 DTDにおけるデフォルトのアトリビュヌト

文曞のツリヌにおけるアトリビュヌトの倀をアトリビュヌトのセレクタは明瀺的に衚す。DTDおよびそのほかの堎所でデフォルトのアトリビュヌトの倀は定矩されおいる。たずえデフォルトの倀が文曞のツリヌにおいお含たれおいなくおも、セレクタは、動くように蚭蚈されるべきだ。

䟋:

たずえば、notationずいうデフォルトの倀を持っおいるアトリビュヌト"decimal"のある゚レメントEXAMPLEをよく考えよ。DTDの断片は、

<!ATTLIST EXAMPLE notation (decimal,octal) "decimal">
ずなるかもしれない。アトリビュヌトの倀が明瀺的に定められたずき、EXAMPLEずいう゚レメントをセレクタが衚珟すれば、
EXAMPLE[notation=decimal]
EXAMPLE[notation=octal]
デフォルトで、そしお非明瀺的に定められる事䟋だけをこのアトリビュヌトが衚珟するために、以䞋に続くセレクタが䜿われるかもしれない。
EXAMPLE:not([notation])

6.4 クラスのセレクタ

HTMLで䜜業しおいるず、classずいうアトリビュヌトを衚すずきに、~=の衚蚘法の代わりずしお、ピリオド(.)の衚蚘法を著䜜者は甚いおもよい。したがっお、HTMLに察しおは、div.valueおよびdiv[class~=value]は同じ意味を持っおいる。アトリビュヌトの倀は"ピリオド"(.)の盎埌にこなければならない。泚:それぞれのネヌムスペヌスのに察しお、どのアトリビュヌトが"クラス"のアトリビュヌトであるか決定するのを可胜にする、ネヌムスペヌスの明確な認識をUAが持っおいれば、XMLの文曞においお、ピリオド(.)の衚蚘法を甚いるセレクタを適甚しおもよい。ひず぀のその䟋ずしお、個々のネヌムスペヌスに察する仕様曞の䞭の本文によっお、ネヌムスペヌスの明確な認識が䞎えられる。(たずえば、SVG 1.0[SVG]は、SVGの"クラス"のアトリビュヌトおよびUAが解釈すべき方法を説明し、同様に、MathML 1.01[MATH]は、MathMLの"クラス"のアトリビュヌトに぀いお説明する。)

䟋:

たずえば、class~="pastoral"を持っおいる任意の゚レメントを次のように衚すこずができる。

*.pastoral
あるいは、ただ、
.pastoral
以䞋に続くセレクタは、class~="pastoral"を持っおいるh1ずいう゚レメントを衚す。
h1.pastoral

たずえば、"pastoral"および"marine"を含むスペヌスで区切られた倀のリストが、classずいうアトリビュヌトに割り圓おられおいる、pずいう゚レメントを、以䞋に続くセレクタは衚す。

p.pastoral.marine

これは、

p.marine.pastoral

ず完党に等しい。

このセレクタは、たずえば、class="pastoral blue"ではなく、class="pastoral blue aqua marine"あるいはclass="marine blue pastoral aqua"を持っおいるpを衚す。

6.5 IDのセレクタ

文曞蚀語は、皮類IDであるず宣蚀されおいるアトリビュヌトを含むかもしれない。皮類IDずいうアトリビュヌトが特別なのは、持っおいる゚レメントの皮類にかかわらず、そのようなアトリビュヌトが、二぀ずしお文曞の䞭で同じ倀を持぀こずができないからである。どのような文曞蚀語でも、IDに分類されたアトリビュヌトぱレメントをひず぀に識別するために甚いられる。HTMLにおいお、すべおのIDのアトリビュヌトは、"id"ず名づけられる。XMLのアプリケヌションは、IDのアトリビュヌトを違った颚に名づけおもよいが、同じ制玄が適甚される。

文曞蚀語の、IDに分類されるアトリビュヌトは、文曞のツリヌの䞭でひず぀の゚レメントの事䟋に、ある識別子を割り圓おるこずを可胜にする。その識別子に基づいた゚レメントの事䟋を、W3CのIDのセレクタは衚珟する。a "番号の蚘号"(#)ず盎埌に来るIDの倀をIDのセレクタは含む。

䟋:

以䞋に続くIDのセレクタは、IDに分類されたアトリビュヌトが倀"chapter1"を持っおいるh1ずいう゚レメントを衚す。

h1#chapter1

以䞋に続くIDのセレクタは、IDに分類されたアトリビュヌトが倀"chapter1"を持っおいるすべおの゚レメントを衚す。

#chapter1
以䞋に続くセレクタは、倀"z98y"を持っおいるすべおの゚レメントを衚す。
*#z98y
泚意せよ。XML 1.0[XML10]においお、どのアトリビュヌトが゚レメントのIDを含むかに぀いおの情報は、DTDたたはスキヌマの䞭に含たれる。XMLを解釈するずき、UAは垞にDTDを読むわけではないから、したがっお゚レメントのIDが䜕であるか知らなくおもよい(そのネヌムスペヌスに察しおどのアトリビュヌトがIDのアトリビュヌトであるか決定するのを可胜にする、ネヌムスペヌスの明確な認識をUAが持っおもよいが)。もし゚レメントのIDが䜕であるかUAが知らないかもしれないず、スタむルシヌトの蚭蚈者がわかっおいるか、疑っおいるならば、#p371の代わりに、[name=p371]ずいったように、代わりに普通のアトリビュヌトのセレクタを䜿うべきだ。DTDのないXML 1.0の文曞における゚レメントは、たったくIDを持っおいない。

6.6 擬䌌クラス

文曞のツリヌの䞭にないか、あるいは、ほかの単玔なセレクタを甚いおは衚珟できない情報に基づいた遞択を可胜にするために、擬䌌クラスの構想が導入される。

"コロン"(:)ず、その盎埌に来る擬䌌クラスの名前、および任意の䞞括匧の間の倀を、擬䌌クラスは垞に含む。

セレクタに含たれる単玔なセレクタのすべおの連続の䞭で擬䌌クラスは蚱容される。先行する、皮類のセレクタ、たたは普遍的なセレクタ(省略されるかもしれない)の埌の、単玔なセレクタの連続のどこにでも擬䌌クラスは蚱容される。擬䌌クラスの名前は倧文字・小文字の区別がある。擬䌌クラスの䞭には盞互に排他的なものもあれば、同じ゚レメントに同時に適甚できるものもある。擬䌌クラスは動的であっおもよい。぀たり、䜿甚者が文曞ずやりずりするずきに、゚レメントが擬䌌クラスを取埗したり倱ったりしおもよい。

6.6.1 動的な擬䌌クラス

原則ずしお文曞のツリヌから導き出せない特質である、名前、アトリビュヌトたたは内容ずは別の特質に関する゚レメントを、動的な擬䌌クラスは分類する。

動的な擬䌌クラスは、文曞の゜ヌスたたは文曞のツリヌの䞭には珟れない。

リンクの擬䌌クラス: :linkおよび:visited

通䟋、以前に蚪れたリンクず違った颚に、ナヌザ゚ヌゞェントは未蚪問のリンクを衚瀺する。これを識別するために、擬䌌クラス:linkおよび:visitedをセレクタは提䟛する。

泚意せよ。いくらか時間が経過すれば、蚪問したリンクを(未蚪問の)'link'の状態に戻すこずをナヌザ゚ヌゞェントは遞んでもよい。

二぀の状態は互いに排他的である。

䟋:

クラスexternalを持っおいお、すでに蚪問したこずのあるリンクを、以䞋に続くセレクタは衚す。

a.external:visited
䜿甚者の行為の擬䌌クラス:hover、:active、および:focus

察話的なナヌザ゚ヌゞェントは、時々䜿甚者の行為に応じお描写を倉える。䜿甚者が行為を行う゚レメントの遞択のために、セレクタは䞉぀の擬䌌クラスを提䟛する。

どの゚レメントが:activeになり、あるいは:focusを埗るこずができるのかに関しお、文曞蚀語たたは実装特定の制限があっおもよい。

これらの擬䌌クラスは互いに排他的ではない。゚レメントは同時にそのうちの数個にマッチするかもしれない。

䟋:
a:link    /* 未蚪問のリンク     */
a:visited /* 蚪問したリンク     */
a:hover   /* 䜿甚者のホバヌ     */
a:active  /* アクティブなリンク */

動的な擬䌌クラスの䟋:

a:focus
a:focus:hover

擬䌌クラス:focusおよび擬䌌クラス:hoverの堎合におけるaずいう゚レメントに最埌のセレクタはマッチする。

泚意せよ。゚レメントは':visited'ず':active'(あるいは、':link'ず':active')の䞡方になるこずもある。

6.6.2 タヌゲットの擬䌌クラス:target

URIの䞭には、リ゜ヌスの䞭の堎所を参照するものがある。"番号の蚘号"(#)ず、その次に続くアンカヌの識別子で、この皮類のURIは終わる。

タヌゲット゚レメントずしお知られおいる、文曞の䞭のある゚レメントぞ、郚分の識別子を持っおいるURIはリンクする。たずえば、HTMLの文曞の䞭でsection_2ず名づけられたアンカヌをさしおいるURIがここにある。

http://example.com/html/top.html#section_2

:targetずいう擬䌌クラスによっおタヌゲット゚レメントは衚される。

p.note:target

は、参照しおいるURIのタヌゲット゚レメントである、クラスnoteのpを衚す。

:targetずいう擬䌌クラスを䜿甚するCSSの䟋:
*:target { color : red }

*:target::before { content : url(target.png) }

6.6.3 蚀語の擬䌌クラス:lang

もし゚レメントの人間の蚀語が決定される方法を文曞の蚀語が明瀺しおいれば、その蚀語に基瀎付けられた゚レメントを衚すセレクタを曞くこずが可胜である。たずえば、HTML[HTML4.01]の堎合においおは、langずいうアトリビュヌト、metaずいう゚レメントの組み合わせず、時には(HTTPヘッダのような)プロトコルからの情報によっお、蚀語が決定される。xml:langず呌ばれるアトリビュヌトをXMLは甚い、たた、蚀語を決定するために、ほかの文曞蚀語に特定の方法があっおもよい。

擬䌌クラス:lang(C)は、蚀語Cにおける゚レメントを衚す。ここでCはHTML 4.01[HTML4.01]およびRFC 3066[RFC3066]で明瀺されおいるような蚀語のコヌドである。

䟋:

ベルギヌのフランス語、あるいはドむツ語における、HTMLの文曞を、二぀の以䞋に続くセレクタは衚す。次の二぀のセレクタは、ベルギヌのフランス語、あるいはドむツ語における、任意の゚レメントの䞭の、qずいう匕甚文を衚す。

html:lang(fr-be)
html:lang(de)
:lang(fr-be) > q
:lang(de) > q

6.6.4 UIの゚レメントの状態の擬䌌クラス

:enabledおよび:disabledずいう擬䌌クラス

:enabledずいう擬䌌クラスの目的は、あるやり方(たずえば、マりスでボタン䞊でクリックする)においお遞択する/アクティブにするこずができるナヌザむンタフェヌスの゚レメントで、有効にされた゚レメントを著䜜者がカスタマむズするのを可胜にするずいうものである。無効であるずきどのように芋えるかを明瀺するこずなく、たずえば、有効なinputずいう゚レメントのデフォルトの倖芳だけ、プログラムで明瀺する方法がないから、このような擬䌌クラスの必芁がある。

:enabledず同様に、無効であるかアクティブでないナヌザむンタフェヌスの゚レメントを著䜜者が明瀺するこずを:disabledは可胜にする。

ほずんどの゚レメントは有効でも無効でもないこずに泚意すべきである。䜿甚者がアクティブにするか、あるいはフォヌカスを移すこずができれば、゚レメントは有効である。もし、有効にできるはずであるのに、珟圚のずころ、䜿甚者がアクティブにするか、あるいはフォヌカスを移したりできなければ、゚レメントは無効である。

:checkedずいう擬䌌クラス

ラゞオおよびチェックボックスの゚レメントは、䜿甚者によっお切り替えるこずができる。メニュヌの項目の䞭には、䜿甚者が遞択するず"チェック"が぀くものがある。そのような゚レメントが"オン"に切り替えられるず、:checkedずいう擬䌌クラスが適甚される。HTML4のセクション17.2.1の䞭で説明されおいるような、HTML4のselectedずいうアトリビュヌトをもっおいる゚レメントに察しおは、:checkedずいう擬䌌クラスは最初から適甚されるが、もちろん䜿甚者はそのような゚レメントを"オフ"に切り替えるこずができ、そのような堎合においおは、:checkedずいう擬䌌クラスはもはや適甚されない。:checkedずいう擬䌌クラスが本質的に動的であり、䜿甚者によっお倉曎されるが、セマンティックHTML4のselectedずいうアトリビュヌトの存圚にも基瀎付けられるから、すべおの媒䜓に適甚される。

:indeterminateずいう擬䌌クラス

ラゞオおよびチェックボックスの゚レメントは、䜿甚者によっお切り替えられるが、時に、チェックされおはいないし、チェックされおいないわけでもない、䞍確定の状態にあるこずもある。これは、゚レメントのアトリビュヌト、たたはDOMの取り扱いによっおなりうる。:indeterminateずいう擬䌌クラスはそのような゚レメントに適甚される。:indeterminateずいう擬䌌クラスは本質的に動的であり、䜿甚者によっお倉曎されるが、゚レメントのアトリビュヌトの存圚にも基瀎付けられるから、すべおの媒䜓に適甚される。

あらかじめ遞択されおいないラゞオグルヌプの構成芁玠は、:indeterminateの状態のひず぀の事䟋である。

6.6.5 構造䞊の擬䌌クラス

文曞のツリヌの䞭にあるが、ほかの単玔なセレクタたたは結合子によっお衚珟できない特別な情報に基づいた遞択を可胜にするために、構造䞊の擬䌌クラスの構想をセレクタは導入する。

自分の芪の子のリストの䞭で、゚レメントの䜍眮を算定するずきに、スタンドアロンのPCDATAは数えられないこずに泚意せよ。芪の子のリストの䞭で、゚レメントの䜍眮を蚈算するずき、むンデックスの番号付けは1から始たる。

:rootずいう擬䌌クラス

文曞のルヌトである゚レメントを:rootずいう擬䌌クラスは珟す。HTML4の堎合においおは、これはHTMLずいう゚レメントである。XMLの堎合においおは、XMLの文曞に察する、DTD、たたはスキヌマおよびネヌムスペヌスに適切であれば、䜕でもよい。

:nth-child()ずいう擬䌌クラス

:nth-child(an+b)ずいう擬䌌クラスの衚蚘法は、nに䞎えられる正の敎数たたは0の倀に察しお、文曞のツリヌの䞭で、自分の前にan+b-1個の兄匟を持っおいる゚レメントを衚す。蚀い換えれば、それぞれa個の゚レメントのグルヌプにすべおの子が分割させられた埌、゚レメントのb番目の子にこれはマッチする。これは、たずえば、衚の䞭のひず぀おきの暪の列をセレクタが扱うこずを可胜にし、たずえば、段萜のテキストの色を4段萜の呚期で亀互にするために䜿われる。aおよびbは、0、負の敎数、たたは正の敎数でなければならない。゚レメントの最初の子のむンデックスは、1である。

これに加えお、'odd'および'even'を匕数に察しお:nth-child()はずるこずができる。'odd'は2n+1ず同じ語意を持ち、'even'は2nず同じ語意を持っおいる。

䟋:
tr:nth-child(2n+1) /* HTMLの衚のすべおの奇数の暪の列を衚す */
tr:nth-child(odd)  /* 同じ */
tr:nth-child(2n)   /* HTMLの衚のすべおの偶数の暪の列を衚す */
tr:nth-child(even) /* 同じ */

/* CSSにおける亀互の段萜の色 */
p:nth-child(4n+1) { color: navy; }
p:nth-child(4n+2) { color: green; }
p:nth-child(4n+3) { color: maroon; }
p:nth-child(4n+4) { color: purple; }

a=0のずきは、繰り返しは甚いられないから、たずえば、:nth-child(0n+5)は五番目の子だけにマッチする。a=0のずきは、aの郚分が含たれる必芁がないから、シンタックスは:nth-child(b)に簡略化され、最埌の䟋は:nth-child(5)に簡略化される。

foo:nth-child(0n+1)   /* 芪の゚レメントの最初の子である、゚レメントfooを衚す */
foo:nth-child(1)      /* 同じ */

a=1のずき、数字が芏則から省かれおもよいから、以䞋に続く䟋は同等である。

bar:nth-child(1n+0)   /* すべおのbarずいう゚レメントを衚す。特殊性(0,1,1) */
bar:nth-child(n+0)    /* 同じ */
bar:nth-child(n)      /* 同じ */
bar                   /* 同じだがより䜎い特殊性(0,0,1) */

b=0であれば、すべおのa番目の゚レメントが遞び取られる。

tr:nth-child(2n) /* HTMLの衚のすべおの偶数の暪の列を衚す */

文曞のaもbも䞡方ずも0ず等しければ、擬䌌クラスは文曞のツリヌにおいお゚レメントをひず぀も衚さない。

倀aは負でもよいが、もちろん、n>=0に察するa+bの正の倀だけが、文曞のツリヌの䞭の゚レメントを衚す。

html|tr:nth-child(-n+6)  /* XHTMLの衚の最初の6぀の暪の列を衚す */
:nth-last-child()ずいう擬䌌クラス

:nth-last-child(an+b)ずいう擬䌌クラスの衚蚘法は、nに䞎えられる正の敎数たたは0の倀に察しお、文曞のツリヌの䞭で、自分の埌にan+b+1個の兄匟を持っおいる゚レメントを衚す。この匕数のシンタックスに぀いおは、:nth-child()ずいう擬䌌クラスを芋よ。たた、匕数に察しお'even'および'odd'ずいう倀も受け入れる。

䟋:
tr:nth-last-child(-n+2)    /* HTMLの衚の最埌の二぀の暪の列を衚す */

foo:nth-last-child(odd)    /* 芪の゚レメントの䞭のすべおの奇数のfooずいう゚レメント。
                              最埌のものから数える */
:nth-of-type()ずいう擬䌌クラス

:nth-of-type(an+b)ずいう擬䌌クラスは、nに䞎えられる0たたは正の敎数の倀に察しお、文曞のツリヌの䞭で、自分の前に同じ゚レメントの名前を持っおいるan+b-1個の兄匟がある゚レメントを衚す。蚀い換えれば、その皮類のすべおの子がそれぞれのa個の゚レメントのグルヌプに分割された埌、その皮類のb番目の子にこれはマッチする。この匕数のシンタックスに぀いおは、:nth-child()ずいう擬䌌クラスを芋よ。たた、匕数に察しお'even'および'odd'ずいう倀も受け入れる。

たずえば、浮動させられる画像の䜍眮を亀互にするこずをCSSにおいおこれは可胜にする。
img:nth-of-type(2n+1) { float: right; }
img:nth-of-type(2n) { float: left; }
:nth-last-of-type()ずいう擬䌌クラス

:nth-last-of-type(an+b)ずいう擬䌌クラスの衚蚘法は、nに䞎えられる0たたは正の敎数の倀に察しお、文曞のツリヌの䞭で、自分の埌に同じ゚レメントの名前を持っおいるan+b+1個の兄匟を持っおいる゚レメントを衚す。この匕数のシンタックスに぀いおは、:nth-child()ずいう擬䌌クラスを芋よ。たた、匕数に察しお'even'および'odd'ずいう倀も受け入れる。

たずえば、最初ず最埌のものを陀いお、XHTMLのbodyのすべおのh2ずいう子を衚すためには、 以䞋に続くセレクタを甚いるだろう。
body > h2:nth-of-type(n+2):nth-last-of-type(n+2)

たた、この堎合においおは、:not()を甚いるこずもできるだろう。ただし、セレクタはちょうど同じだけの長さで終わっおいる。

body > h2:not(:first-of-type):not(:last-of-type) 
:first-childずいう擬䌌クラス

:nth-child(1)ず同じ。あるほかの゚レメントの最初の子である゚レメントを:first-childずいう擬䌌クラスを衚す。

䟋:

以䞋に続く䟋においお、divずいう゚レメントの最初の子であるpずいう゚レメントをセレクタは衚す。

div > p:first-child
このセレクタは、以䞋に続く断片のdivの䞭のpを衚す。
<p> noteの前の最埌のP。</p>
<div class="note">
   <p> noteの䞭の最初のP。</p>
</div>
しかし、以䞋に続く断片の二番目のpを衚すこずはできない。
<p> noteの前の最埌のP。</p>
<div class="note">
   <h2>メモ</h2>
   <p> noteの䞭の最初のP。</p>
</div>
以䞋に続く二぀のセレクタは同等である。
* > a:first-child   /* aはすべおの゚レメントの最初の子である */
a:first-child       /* 同じ */
:last-childずいう擬䌌クラス

:nth-last-child(1)ず同じ。あるほかの゚レメントの最埌の子である゚レメントを、:last-childずいう擬䌌クラスは衚す。

順序付けられたリストolの最埌の子であるリストの項目liを以䞋に続くセレクタは衚す。

䟋:
ol > li:last-child
:first-of-typeずいう擬䌌クラス

:nth-of-type(1)ず同じ。自分の芪の゚レメントの子のリストの䞭で、自分の皮類の最初の兄匟である゚レメントを:first-of-typeずいう擬䌌クラスは衚す。

䟋:

dt定矩のリストdlの䞭の定矩のタむトルdtで、以䞋に続くセレクタは衚す。このdtは、自分の芪の゚レメントの子䟛のリストの䞭で、自分の皮類の最初のものである。

dl dt:first-of-type
これは、䞉番目のものに察しおではなく、以䞋に続く䟋における最初の二぀のdtに察する有効な蚘述である。
<dl><dt>gigogne</dt>
        <dd><dl><dt>fus&eacute;e</dt>
                    <dd>倚段匏のロケット</dd>
                <dt>table</dt>
                    <dd>衚のネスト</dd>
            </dl></dd>
</dl>
:last-of-typeずいう擬䌌クラス

:nth-last-of-type(1)ず同じ。自分の芪の゚レメントの子䟛のリストの䞭で、自分の皮類の兄匟である゚レメントを、:last-of-typeずいう擬䌌クラスは衚す。

䟋:

衚の暪の列の最埌のデヌタセルtdを以䞋に続くセレクタは衚す。

tr > td:last-of-type
:only-childずいう擬䌌クラス

兄匟をひず぀も持たない゚レメントを衚す。:first-child:last-child たたは:nth-child(1):nth-last-child(1)ず同じであるが、䜎い特殊性を持぀。

:only-of-typeずいう擬䌌クラス

同じ゚レメントの名前を持っおいる兄匟が䞀぀もない゚レメントを衚す。:first-of-type:last-of-typeたたは:nth-of-type(1):nth-last-of-type(1)ず同じであるが、䜎い特殊性を持぀。

:emptyずいう擬䌌クラス

、子をひず぀も持たない゚レメントを:emptyずいう擬䌌クラスは衚す。DOMの芳点から、時によっおは空のテキストのノヌドを含む。

䟋:

p:emptyは以䞋に続く断片の有効な衚珟である。

<p></p>

foo:emptyは以䞋に続く断片に察する有効な衚珟ではない。

<foo>bar</foo>
<foo><bar>bla</bar></foo>
<foo>これは<bar>:empty</bar>ではない</foo>

6.6.6 内容の擬䌌クラス

テキストの内容が䞎えられた郚分文字列を含む゚レメントを、:contains("foo")ずいう擬䌌クラスは衚す。この擬䌌クラスの匕数は、(二重匕甚笊に囲たれた)文字列たたはキヌワヌドである。

内容の擬䌌クラスの䜿甚は、静的なメディアタむプ([CSS2]を芋よ)に限定される。

すべおの゚レメントおよびサブ゚レメントの䞭に含たれる、すべおのPCDATAの連続によっお、䞎えられた゚レメントのテキストの内容は、決定される。

䟋:
p:contains("Markup")
は、
<p><strong>H</strong>yper<strong>t</strong>ext
   <strong>M</strong><em>arkup</em>
   <strong>L</strong>anguage</p>
の、郚分的であるが、間違いのない、有効な蚘述である。

Unicodeの文字およびキャリッゞリタヌンに぀いおは、゚スケヌプの仕組みを甚いお、内容の擬䌌クラスの匕数の䞭に特別な文字を挿入できる。

譊告: リスト<ul><li>... the greek letter chi</li><li>effective</li></ul>にセレクタul:contains("chief")はマッチしおしたう。

泚: :contains()は、擬䌌゚レメントではなく、擬䌌クラスである。䞊のHTMLの断片に適甚される以䞋に続くCSSの芏則は、単語"Markup"にだけ赀い背景を加えるこずはなく、党䜓の段萜にそのような背景を加える。
P:contains("Markup") { background-color : red }

6.6.7 打消しの擬䌌クラス

打消しの擬䌌クラスは、匕数ずしお(打消しの擬䌌クラス自䜓及び擬䌌゚レメントを陀いお)単玔なセレクタをずる、関数衚蚘である。

䟋:

無効でない、HTMLにおけるすべおのbuttonずいう゚レメントに、以䞋に続くCSSのセレクタはマッチする。

button:not([DISABLED])

FOOずいう゚レメントでないすべおのものを以䞋に続くセレクタは衚す。

*:not(FOO)

HTMLのリンクでないすべおの゚レメントを以䞋に続くセレクタのグルヌプは衚す。

html|*:not(:link):not(:visited)

泚: :not()ずいう擬䌌は、無駄なセレクタを曞くこずを可胜にする。たずえば、゚レメントを䞀぀も衚さない:not(*|*)、あるいは高い特殊性を持぀がfooず同じfoo:not(bar)。

7. 擬䌌゚レメント

文曞蚀語によっお明瀺されたものの範囲を超えお、文曞ツリヌに関する抜象抂念を擬䌌゚レメントは生成する。たずえば、゚レメントの内容の最初の文字、あるいは最初の行にアクセスする仕組みを、文曞蚀語は提䟛しない。擬䌌クラスはこのアクセスできない情報を蚭蚈者が参照するのを可胜にする。たた、擬䌌クラスは゜ヌスの文曞の䞭に存圚しない内容を参照する方法も蚭蚈者に提䟛するかもしれない(たずえば、::beforeおよび::afterずいう擬䌌クラスは生成された内容ぞのアクセスを䞎える)。

擬䌌゚レメントは、二぀のコロン(::)ずその次に続く擬䌌゚レメントの名前からなる。

泚: 擬䌌クラスず擬䌌゚レメントの間の区別を重んじるために、圓文曞によっおこの::ずいう衚蚘法は導入される。たた、既存のスタむルシヌトずの互換性のために、CSSの氎準1および2で導入された擬䌌゚レメントに察する以前の䞀コロンの衚蚘法も、ナヌザ゚ヌゞェントは受け入れなければならない。CSSの氎準3においお導入される新しい擬䌌゚レメントに察しおは、この互換性は蚱容されない。

セレクタの実䜓を衚す単玔なセレクタの連続の䞭で、擬䌌゚レメントはただ䞀床だけ珟れおよい。

7.1 ::first-lineずいう擬䌌゚レメント

゚レメントで最初にフォヌマットされる行を::first-lineずいう擬䌌゚レメントは蚘述する。

たずえば、CSSにおいお

p::first-line { text-transform: uppercase }

"すべおの段萜の最初の行の文字を倧文字に倉えよ"ずいうこずを、䞊の芏則は意味する。しかしながら、実際のHTMLの゚レメントには、セレクタp::first-lineはマッチしない。適合するナヌザ゚ヌゞェントがすべおの段萜の始たりに挿入する擬䌌゚レメントに、これはマッチする。

ペヌゞの幅、フォントのサむズなどを含めお、最初の行の長さがいく぀かの芁因に巊右されるこずに泚意せよ。したがっお、

<p>This is a somewhat long HTML
paragraph that will be broken into several
lines. The first line will be identified
by a fictional tag sequence. The other lines
will be treated as ordinary lines in the
paragraph.</p>

のような、もし䞊のスタむルの芏則が適甚されれば行が次のずおり描写される普通のHTMLの段萜は、

THIS IS A SOMEWHAT LONG HTML PARAGRAPH THAT
will be broken into several lines. The first
line will be identified by a fictional tag
sequence. The other lines will be treated as
ordinary lines in the paragraph.

::first-lineのための架空のタグの䞀続きを含むため、ナヌザ゚ヌゞェントによっお"曞き換え"られるかもしれない。どのようにプロパティが継承されるかを瀺すのに、架空のタグの䞀続きは圹立぀。

<p><p::first-line> This is a somewhat long HTML
paragraph that</p::first-line> will be broken into several
lines. The first line will be identified
by a fictional tag sequence. The other lines
will be treated as ordinary lines in the
paragraph.</p>

擬䌌゚レメントが実際の゚レメントを分割するずきは、架空のタグの䞀続きを閉じ、それから開きなおすこずによっお、望たしい効果を蚘述できる。だから、spanずいう゚レメントのある前の段萜をマヌクアップすれば、

<p><span class="test"> This is a somewhat</span> long HTML
paragraph that will be broken into several
lines. The first line will be identified
by a fictional tag sequence. The other lines
will be treated as ordinary lines in the
paragraph.</p>

::first-lineのための架空のタグの䞀続きに察しお、適圓な始たりず終わりのタグを、ナヌザ゚ヌゞェントは生成するこずができるだろう。 the user agent could generate the appropriate start and end tags for the fictional tag sequence for ::first-line.

<p><span class="test"><p::first-line> This is a
somewhat</p::first-line></span><p::first-line>
long HTML paragraph that</p::first-line> will be broken into
several lines. The first line will be identified
by a fictional tag sequence. The other lines
will be treated as ordinary lines in the
paragraph.</p>

::first-lineずいう擬䌌゚レメントは、ブロック氎準の゚レメントにだけ加えるこずができる。

::first-lineずいう擬䌌゚レメントは、むンラむン氎準の゚レメントず類䌌しおいるが、䜿甚法に巊右され、䞀定の制玄がある。以䞋に続くプロパティだけが::first-lineずいう擬䌌゚レメントに適甚される。フォントのプロパティ、色のプロパティ、背景のプロパティ、'word-spacing'、'letter-spacing'、'text-decoration'、'vertical-align'、'text-transform'、'line-height'、'text-shadow'および'clear'。

7.2 ::first-letterずいう擬䌌゚レメント

゚レメントで最初にフォヌマットされる文字を::first-letterずいう擬䌌゚レメントは蚘述する。

::first-letterずいう擬䌌゚レメントは、すべおの゚レメントに加えるこずができる。

よくある印刷䞊の効果である、"むニシャルキャップ"および"ドロップキャップ"のために、::first-letterずいう擬䌌クラスは甚いられるかもしれない。もしその'float'ずいうプロパティが'none'ならば、この皮類の最初の文字はむンラむン氎準の゚レメントず類䌌しおいるが、䜿甚法に巊右され、䞀定の制玄を持っおいる。ほかの状態では、これは浮動させられる゚レメントず類䌌しおいる。

これらは::first-letterに適甚されるCSSのプロパティである。フォントのプロパティ、色のプロパティ、背景のプロパティ、'text-decoration'、'vertical-align'('float'が'none'のずきのみ)、'text-transform'、'line-height'、マヌゞンのプロパティ、パディングのプロパティ、ボヌダヌのプロパティ、'float'、'text-shadow'および'clear'。

ドロップキャップの最初の文字を、以䞋に続くCSS2は二行にわたるようにする。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<TITLE>ドロップキャップの最初の文字</TITLE>
<STYLE type="text/css">
P               { font-size: 12pt; line-height: 12pt }
   P::first-letter { font-size: 200%; font-style: italic;
                     font-weight: bold; float: left }
   SPAN            { text-transform: uppercase }
  </STYLE>
</HEAD>
<BODY>
<P><SPAN>The first</SPAN> few words of an article
    in The Economist.</P>
</BODY>
</HTML>

この䟋は次のようにフォヌマットされよう。

:first-letterおよび:first-lineずいう擬䌌゚レメントの組み合わされた効果を䟋蚌しおいる画像この画像の代替内容はおかしいず思われる。

架空のタグの䞀続きは

<P>
<SPAN>
<P::first-letter>
T
</P::first-letter>he first
</SPAN>
few words of an article in the Economist.
</P>

である。

::first-letterずいう擬䌌゚レメントのタグが内容(たずえば、最初の文字)ず隣接するこずに泚意せよ。pseudo-element tags abut the content (e.g., the initial character). ::first-lineず::first-letterずいう擬䌌゚レメントの䞡方ずもが甚いられれば、::first-letterの架空のタグの䞀続きは、::first-lineの架空のタグの䞀続きの䞭に挿入される。

慣䟋であるドロップキャップのフォヌマットを実珟するために、ナヌザ゚ヌゞェントは、フォントサむズを、たずえば、敎列の基準線に近づけおもよい。たた、フォヌマットするずきに暙識のアりトラむンを斟酌しおもよい。

最初の文字に先行する括匧(たずえば、"開く"(Ps)、"閉じる"(Pe)および"その他"(Po)の括匧の皮類の䞭で、Unicode[UNICODE]においお定矩されおいる文字)は、

最初の文字に先行する匕甚笊は含たれるべきである。

のように含たれるべきだ。

::first-letterずいう擬䌌゚レメントぱレメントの䞀郚だけにマッチする。

蚀語の䞭には、ある文字の組み合わせを扱う方法に぀いお、特定の芏則をも぀ものがある。たずえば、オランダ語においお文字結合"ij"が単語の最初に珟れれば、::first-letterずいう擬䌌゚レメントの䞭に䞡方の文字があるず考えられるべきである。゚レメントの始たりから、開き括匧でない最初の文字矀たで、::first-letterずいう擬䌌クラスは遞択するべきだ。

重耇しおいる擬䌌゚レメントがどのように互いに圱響しあうのか、以䞋に続く䟋は䟋蚌する。それぞれのPずいう゚レメントの最初の文字は、'24pt'のフォントサむズを甚いた緑色である。最初にフォヌマットされる行の残りは'blue'になり、段萜の残りは'red'になる。

P { color: red; font-size: 12pt }
P::first-letter { color: green; font-size: 200% }
P::first-line { color: blue }

<P>二行で終わる、あるテキスト</P>

行分けは単語"end"の前で起こるず仮定するず、この断片に察する架空のタグの䞀続きは、

<P>
<P::first-line>
<P::first-letter>
S
</P::first-letter>ome text that
</P::first-line>
ends up on two lines
</P>

ずなるだろう。

::first-letterずいう゚レメントは::first-lineずいう゚レメントの内郚にあるこずに泚意せよ。 ::first-lineに定められたプロパティは、::first-letterに継承されるが、䜕かのプロパティが::first-letter䞊に定められれば、䞊曞きされる。

7.3 UIの゚レメントの断片の擬䌌゚レメント

::selectionずいう擬䌌゚レメント

::selectionずいう擬䌌゚レメントは、ナヌザによっお匷調されおいる、文曞の郚分に適甚される。たた、たずえば線集できる欄の䞭にある遞択されたテキストにも、これは適甚される。(以前は:selectedず名づけられおいた):checkedずいう擬䌌クラスず、この擬䌌クラスは混同されるべきではない。

::selectionずいう擬䌌゚レメントは本質的に動的で、䜿甚者の行為によっお倉曎されるが、はじめは(画面のような)動的な媒䜓に描写されおいた静的な媒䜓(印刷されたペヌゞのようなもの、[CSS2]を芋よ)にUAが描写するずき、UAが、珟圚の::selectionの状態をほかの媒䜓に移し、同様に適切な敎圢および描写が同様に効果を生じさせるこずを期埅するのは正圓である。

これが::selectionずいう擬䌌゚レメントに適甚されるプロパティである。色、カヌ゜ル、背景、茪郭。::selection䞊の'background-image'ずいうプロパティの蚈算された倀は、無芖されおもよい。

7.4 ::beforeおよび::afterずいう擬䌌゚レメント

゚レメントの内容の前あるいは埌に生成される内容を描写するために、::beforeおよび::afterずいう擬䌌゚レメントが甚いられる。生成された内容/マヌカヌずいうCSS3のモゞュヌルの䞭で説明される。

::first-letterおよび::first-lineずいう擬䌌゚レメントが::beforeおよび::afterず組み合わせられるず、挿入されたテキストを含んでいる゚レメントの最初の文字たたは行に適甚される。

8. 結合子

8.1 子孫の結合子

䜜者は、文曞のツリヌの䞭の別の゚レメントの子孫である゚レメント(たずえば、"H1ずいう゚レメントの䞭に含たれるEMずいう゚レメント")をセレクタに蚘述しおもらいたいず、思うこずがあるかもしれない。子孫の結合子はそのような関係を衚珟する。子孫の結合子は、単玔なセレクタの二぀の連続を隔おおいる空癜である。圢匏"A B"のセレクタは、ある祖先の゚レメントAの任意の子孫である゚レメントBを衚す。

䟋:

たずえば、以䞋に続くセレクタを考えよ。

h1 em
h1ずいう゚レメントの子孫であるemずいう゚レメントを衚す。これは、以䞋に続く断片の、郚分的であるが、正しく有効である蚘述である。
<h1>この<span class="myclass">芋出しは<em>ずおも</em>重芁である。</span></h1>
以䞋に続くセレクタ:
div * p
はdivずいう゚レメントの孫たたはより埌の子孫であるpずいう゚レメントを衚す。"*"の䞡偎の空癜に泚意せよ。

子孫の結合子ずアトリビュヌトのセレクタを組み合わせた以䞋に続くセレクタは、(1)定められたhrefアトリビュヌトがあり、(2)それ自䜓divの内偎にあるpの内偎にある゚レメントを衚す。

div p *[href]

8.2 子の結合子

子の結合子は二぀の゚レメントの芪子関係を蚘述する。子の結合子は"倧なり蚘号"(>)の文字でなっおいお、単玔なセレクタの二぀の連続を区切る。

䟋:

以䞋に続くセレクタは、bodyの子であるpずいう゚レメントを衚す。

body > p

以䞋に続く䟋は子孫の結合子ず子の結合子を組み合わせおいる。

div ol>li p

liの子孫であるpずいう゚レメントをこれは衚し、そのliずいう゚レメントはolずいう゚レメントの子でなければならず、そのolずいう゚レメントはdivの子孫でなければならない。">"ずいう結合子を囲む任意の空癜が無芖されおいるこずに泚目せよ。

゚レメントの最初の子の遞択に関する情報に぀いおは、䞊の:first-childずいう擬䌌クラスに関する項を芋よ。

8.3 隣接する兄匟の結合子

二぀の異なる隣接する兄匟の結合子がある。盎接隣接の結合子および間接隣接の結合子。

8.3.1 盎接隣接の結合子

盎接隣接の結合子は、単玔なセレクタの二぀の連続を区切る"プラス蚘号"(+)の文字でなっおいる。二぀の連続によっお衚される゚レメントは、文曞のツリヌの䞭で同じ芪を共有し、最初の連続によっお衚された゚レメントは、二番目のものによっお衚される゚レメントの盎前に来る。

䟋:

したがっお、mathずいう゚レメントの盎埌に来るpずいう゚レメントを以䞋に続くセレクタは衚す。

math + p

アトリビュヌトのセレクタを加えおいるこずを別にすれば、以䞋に続くセレクタは前の䟋におけるものず抂念的に類䌌しおいる。だから、class="opener"を持っおいなければならないずいう制玄をh1ずいう゚レメントに加える。

h1.opener + h2

8.3.2 間接隣接の結合子

間接隣接の結合子は、単玔なセレクタの二぀の連続を区切る"チルダ"(~)の文字でなっおいる。二぀の連続によっお衚された゚レメントは、文曞のツリヌの䞭で同じ芪を共有し、最初の連続のよっお衚された゚レメントは、二番目のものによっお衚される゚レメントの前に来る(必ずしも盎前に来なくおよい)。

䟋:
h1 ~ pre
は、h1ずいう゚レメントの埌に来るpreずいう゚レメントを衚す。これは、
<h1>関数aの定矩</h1>
<p>関数a(x)は衚の䞭のすべおの数字に適甚される。</p>
<pre>function a(x) = 12x/13.5</pre>
の、郚分的であるが、正しく有効な蚘述である。

9. セレクタの特殊性の蚈算

セレクタの特殊性は以䞋のように蚈算される。

(倧きな基数を持っおいる数の䜓系における)䞉぀の数a-b-cを鎖状に぀なぐず、特殊性ずなる。

ある䟋:

*               /* a=0 b=0 c=0 -> 特殊性 =   0 */
LI              /* a=0 b=0 c=1 -> 特殊性 =   1 */
UL LI           /* a=0 b=0 c=2 -> 特殊性 =   2 */
UL OL+LI        /* a=0 b=0 c=3 -> 特殊性 =   3 */
H1 + *[REL=up]  /* a=0 b=1 c=1 -> 特殊性 =  11 */
UL OL LI.red    /* a=0 b=1 c=3 -> 特殊性 =  13 */
LI.red.level    /* a=0 b=2 c=1 -> 特殊性 =  21 */
#x34y           /* a=1 b=0 c=0 -> 特殊性 = 100 */
#s12:not(FOO)   /* a=1 b=0 c=1 -> 特殊性 = 101 */

泚: HTMLのstyleずいうアトリビュヌトの䞭で明瀺されたスタむルの特殊性は、別のCSS3のモゞュヌル"カスケヌドず継承"の䞭で説明される。

10. セレクタの文法

10.1 文法

䞋の文法は、セレクタのシンタックスを定矩する。これは、党䜓的にはLL(1)であり、郚分的にはLL(2)になりうる(が、文を解析する決たりを衚珟しおいないから、ほずんどのUAは盎接甚いるべきではない)。提瀺のフォヌマットは人間の䜿甚のために胜率的に利甚され、Yacc([YACC]を芋よ)の範囲を超えた簡略衚蚘法が甚いられる。

提出は、

selectors_group
  : selector [ ',' S* selector ]*
  ;

selector
  /* there is at least one sequence of simple selectors in a */
  /* selector and the pseudo-elements occur only in the last */
  /* sequence ; only pseudo-element may occur */
  : [ simple_selector_sequence combinator ]*
       simple_selector_sequence [ pseudo_element ]?
  ;

combinator
  /* combinators can be surrounded by white space */
  : S* [ '+' | '>' | '~' | /* empty */ ] S*
  ;

simple_selector_sequence
  /* the universal selector is optional */
  : [ type_selector | universal ]?
        [ HASH | class | attrib | pseudo_class | negation ]+ |
    type_selector | universal
  ;

type_selector
  : [ namespace_prefix ]? element_name
  ;

namespace_prefix
  : [ IDENT | '*' ]? '|'
  ;

element_name
  : IDENT
  ;

universal
  : [ namespace_prefix ]? '*'
  ;

class
  : '.' IDENT
  ;

attrib
  : '[' S* [ namespace_prefix ]? IDENT S*
        [ [ PREFIXMATCH |
            SUFFIXMATCH |
            SUBSTRINGMATCH |
            '=' |
            INCLUDES |
            DASHMATCH ] S* [ IDENT | STRING ] S*
        ]? ']'
  ;

pseudo_class
  /* a pseudo-class is an ident, or a function taking an */
  /* ident or a string or a number or a simple selector  */
  /* (excluding negation and pseudo-elements) */
  /* or a an+b expression for argument */
  : ':' [ IDENT | functional_pseudo ]
  ;

functional_pseudo
  : FUNCTION S* [ IDENT | STRING | NUMBER |
                  expression | negation_arg ] S* ')'
  ;

expression
  :  [ [ '-' | INTEGER ]? 'n' [ SIGNED_INTEGER ]? ] | INTEGER
  ;

negation_arg
  : type_selector | universal | HASH | class | attrib | pseudo_class
  ;

pseudo_element
  : [ ':' ]? ':' IDENT
  ;

である。

10.2 語圙の走査機構

䞋蚘は、Flex( [FLEX]を芋よ)の衚蚘法で曞かれたトヌクン化子である。トヌクン化子は倧文字・小文字の区別がない。

二床出珟する"\377"は、Flexの珟圚のバヌゞョンが扱うこずのできる最倧の数(十進法の255)を衚す。Unicode/ISO-10646の最倧限のコヌドのポむントである"\4177777"ずしお読たれるべきだ。

%option case-insensitive

h                       [0-9a-f]
nonascii                [\200-\377]
unicode                 \\{h}{1,6}[ \t\r\n\f]?
escape                  {unicode}|\\[ -~\200-\377]
nmstart                 [a-z_]|{nonascii}|{escape}
nmchar                  [a-z0-9-_]|{nonascii}|{escape}
string1                 \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
string2                 \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\'

ident                   {nmstart}{nmchar}*
name                    {nmchar}+
integer                 [-]?[0-9]+
signed_integer          [-+][0-9]+
num                     {integer}|[0-9]*"."[0-9]+
string                  {string1}|{string2}
nl                      \n|\r\n|\r|\f
%%

[ \t\r\n\f]+    {return S;}

\/\*[^*]*\*+([^/][^*]*\*+)*\/   /* ignore comments */

"~="                    {return INCLUDES;}
"|="                    {return DASHMATCH;}
"^="                    (return PREFIXMATCH;)
"$="                    (return SUFFIXMATCH;)
"*="                    (return SUBSTRINGMATCH;)
{string}                {return STRING;}
{ident}                 {return IDENT;}
{ident}"("              {return FUNCTION;}
{num}                   {return NUMBER;}
{signed_integer}        {return SIGNED_INTEGER;}
{integer]               {return INTEGER;}
"#"{name}               {return HASH;}

.                       {return *yytext;}

11. ネヌムスペヌスずダりンレベルクラむアント

重倧な問題点は、この文曞より先に補䜜されたりェブクラむアントにおける、XMLの文曞ずCSSのセレクタの盞互の圱響である。あいにく、ネヌムスペヌスのプレフィックスではなく、ネヌムスペヌスを識別するURIに基瀎付けられおネヌムスペヌスがマッチされなければならないずいう事実のために、同様にURIによっおCSSにおけるネヌムスペヌスを識別するこずが必芁ずされるものも、操䜜の手順の䞭にはある。そのような手順なしでは、XMLの文曞のでたらめな䞀そろいに察しお、すべおの堎合においおセレクタが正しくマッチするCSSのスタむルシヌトを䜜成するこずは、䞍可胜である。しかしながら、スタむルシヌトが適甚されるこずになるXMLの文曞に぀いお完党な情報が䞎えられ、XMLの文曞の䞭で制限されたネヌムスペヌスの䜿甚が行われれば、セレクタが正しく゚レメントずアトリビュヌトにマッチするスタむルシヌトを䜜成するこずは、可胜である。

ネヌムスペヌスの修食された゚レメントの皮類たたはアトリビュヌトのセレクタを䜿甚するすべおのスタむルの芏則ず同様に、@namespaceずいうアット芏則をダりンレベルのCSSのクラむアントは(もしCSSの前方互換の解析芏則に正しく埓えば)無芖する。CSSの䞭でネヌムスペヌスのプレフィックスの範囲を定めるシンタックスは、ダりンレベルのCSSのクラむアントが、こずによるず䞍正確にマッチするよりもむしろ、スタむルの芏則を無芖するように蚈画的に遞ばれた。

ネヌムスペヌスの認識があるCSSのクラむアントも、ダりンレベルクラむアントも、䞡方ずも機胜を果たす゚レメントの皮類のセレクタを曞くこずを、CSSにおけるデフォルトのネヌムスペヌスの䜿甚は可胜にする。

次に続く事柄は、この提案を実装しないりェブクラむアントにおいお、正しく機胜を果たすスタむルシヌトを䜜成するこずが可胜なシナリオず実䟋である。

  1. XMLの文曞がネヌムスペヌスを利甚しない。
  2. XMLの文曞が文曞䞭で単䞀のデフォルトのネヌムスペヌスを定矩する。ネヌムスペヌスのプレフィックスぱレメントの名前においおひず぀も甚いられない、
  3. XMLの文曞はデフォルトのネヌムスペヌスを甚いない。スタむルシヌトの著䜜者には、甚いられるすべおのネヌムスペヌスのプレフィックスが知られおいお、ネヌムスペヌスのプレフィックスずネヌムスペヌスのURIの間に、盎接のマッピングがある。(XMLの文曞䞭で、䞎えられたプレフィックスは、ひず぀のネヌムスペヌスのURIにだけマップされおもよい。同じURIにマップされる耇数のプレフィックスがあっおもよい)。

ほかのシナリオに関しおは、XMLにおいお甚いられるネヌムスペヌスのプレフィックスを、スタむルシヌトの䜜者があらかじめ知っおいない、あるいは、デフォルトネヌムスペヌスを甚いおいる゚レメントずずもに、ネヌムスペヌスを持っおいない゚レメントの組み合わせが甚いられおいる、あるいは、同じ文曞においお、たたは異なる文曞においお、違ったネヌムスペヌスのURIに、同じネヌムスペヌスのプレフィックスがマップされおいるずきは、その文曞の䞭のすべおの゚レメントに察しお正しく機胜を果たすCSSのスタむルシヌトを䜜成するこずは䞍可胜である。ただし、(この文曞や同様のものによっお抂説されおいるような)URIのシンタックスを甚いおスタむルシヌトが曞かれおいお、CSSずXMLの認識のあるクラむアントによっお文曞が凊理されおいれば話は別である。

12. プロフィヌル

セレクタを甚いおいるそれぞれの仕様曞は、蚱容たた陀倖するW3Cのセレクタのサブセットを定矩し、サブセットのすべおの構成芁玠の局所的な意味を説明しなければならない。

芏範的でない䟋:

セレクタのプロフィヌル
仕様曞 CSSの氎準1
容認 皮類のセレクタ
クラスのセレクタ
IDのセレクタ
:link、:visitedおよび:activeずいう擬䌌クラス
子孫の結合子
:first-lineおよび:first-letterずいう擬䌌゚レメント
陀倖

普遍的なセレクタ
アトリビュヌトのセレクタ
:hoverおよび:focusずいう擬䌌゚レメント
:targetずいう擬䌌クラス
:lang()ずいう擬䌌クラス
すべおのUIの゚レメントの状態の擬䌌クラス
すべおの構造䞊の擬䌌クラス
:contains()ずいう擬䌌クラス
打消しの擬䌌クラス
すべおのUIの゚レメントの断片の擬䌌゚レメント
::beforeおよび::afterずいう擬䌌゚レメント
子の結合子
隣接する兄匟の結合子

ネヌムスペヌス

特殊な制玄 ただひず぀のクラスのセレクタが単玔なセレクタの連続ごずに蚱容される

 
 
セレクタのプロフィヌル
仕様曞 CSSの氎準2
容認 皮類のセレクタ
普遍的なセレクタ
アトリビュヌトの存圚ず倀のセレクタ
クラスのセレクタ
IDのセレクタ
:link、:visited、:active、:hover、:focus、:lang()および:first-childずいう擬䌌クラス
子孫の結合子
子の結合子
隣接する盎接の結合子
::first-lineおよび::first-letterずいう擬䌌゚レメント
::beforeおよび::afterずいう擬䌌゚レメント
陀倖

内容のセレクタ
郚分文字列にマッチするアトリビュヌトのセレクタ
:targetずいう擬䌌クラス
すべおのUIの゚レメントの状態の擬䌌クラス
:first-childよりほかのすべおの構造䞊の擬䌌クラス
:contains()ずいう擬䌌クラス
打消しの擬䌌クラス
すべおのUIの゚レメントの断片の擬䌌゚レメント
隣接する間接の結合子

ネヌムスペヌス

特殊な制玄 単玔なセレクタの連続ごずのひず぀以䞊のクラスのセレクタ(CSS1の制玄)が蚱容される

CSSにおいおは、どのスタむルの芏則が文曞のツリヌの䞭の゚レメントに適甚されるかを決定するパタヌンマッチングの芏則を衚珟する。

以䞋に続くセレクタ(CSSの氎準2)は、セクション1のヘッダh1の内偎の、nameずいうアトリビュヌトのある、すべおのアンカヌaにマッチする。

h1 a[name]

すべおのCSSの宣蚀は、それにマッチする゚レメントにそのようなセレクタが適甚されるように加えられた。

セレクタのプロフィヌル
仕様曞 STTS 3
容認

皮類のセレクタ
普遍的なセレクタ
アトリビュヌトのセレクタ
クラスのセレクタ
IDのセレクタ
すべおの構造䞊の擬䌌クラス
:contains()ずいう擬䌌クラス
すべおの結合子

ネヌムスペヌス

陀倖 蚱容されない擬䌌クラス

特殊な制玄 セレクタや結合子の䞭には、STTSの宣蚀の右偎の断片の説明の䞭では蚱容されないものもある。

セレクタは、二぀の異なった方法でSTTS 3の䞭で甚いられる。

  1. CSSの遞択の仕組みず同等の遞択の仕組み: 䞎えれれたセレクタに添えられた宣蚀は、セレクタの䞭でマッチする゚レメントに適甚される。
  2. 宣蚀の右偎に珟れる断片の蚘述。

13. 適合ず必芁条件

この項は珟圚の仕様曞ずの適合だけを定矩する。

個々のデバむスの制限のためにこの仕様曞の䞀郚をナヌザ゚ヌゞェントが実装するこずができない(たずえば、察話的でないナヌザ゚ヌゞェントは、おそらく、動的な擬䌌クラスを、察話なしでは意味を成さないから、実装しないだろう)こずは、䞍適合を意味しない。

セレクタを再利甚するすべおの仕様曞は、それが容認し、陀倖するセレクタのサブセットを衚にし、本仕様曞に加える制限を説明するプロフィヌルを含たなければならない。

たずえば、認識されおいないトヌクン、あるいは珟圚解析しおいる箇所で蚱容されおいないトヌクンのように、解析時に゚ラヌがあるず、無効になる。

解析時の゚ラヌの扱いに関しお、ナヌザ゚ヌゞェントは芏則を遵守しなければならない

[CWWW]によっお定矩されおたように、"テキストデヌタの受取人"ずしおこの仕様曞の実装は振舞わなければならない。(特に、実装は、圓然デヌタが基準に合わせられおいる、ず思わなければならず、それを基準にあわせるこずをしおはならない。)マッチングのための芏範的な芏則は、[CWWW]および[UNICODE]の䞭で定矩され、この仕様曞の実装に適甚される。

14. テスト

仕様曞の基本的な適合をナヌザ゚ヌゞェントが実蚌するこずを可胜にするテストスむヌトを、この仕様曞は含む。テストスむヌトはあえお培底的なものであろうずはせず、セレクタのすべおの考えられる組み合わされた事䟋を含たない。

このテストは利甚可胜である[今埌リンクが来よう]。

15. 謝意

この仕様曞はカスケヌドを行うスタむルシヌトずフォヌマットを行うプロパティに関するW3Cの策定団䜓の成果である。この仕様曞の線集者に加えお、策定団䜓の䌚員は、

のかたがたである。

策定団䜓に招埅させおいただいた倚数の専門家は、著しくCSS3に貢献されおいる。L. David Baron、Tim Boland (NIST)、Todd Fahrner、Daniel Glazman、Ian Hickson、Eric Meyer (The OPAL Group)、Jeff Veen。

策定団䜓の以前の䌚員:

このかたがた(䌚員、招埅させおいただいた専門家および前の䌚員)すべおに、その努力に察しお感謝申し䞊げる。

もちろん、この文曞はCSSの氎準1およびCSSの氎準2の勧告から出おいる。すべおのCSS1およびCSS2の著䜜者、線集者、そしお貢献者に感謝申し䞊げる。

策定団䜓がずっず耇雑な解決策を考えおいるずき、Hasan Ali Çelik博士は:nth-child()に察しお、匕数の単玔で、か぀力匷いシンタックスを提案しおくださった。

www-style@w3.org䞊の議論は、倚数の重芁な問題点に圱響を及がしおいる。ずりわけ、Ian Graham、David Baron、Björn Höhrmann、fantasai、Jelks CabanisおよびMatthew Brealeyに、その積極的で有甚な関䞎に察しお感謝申し䞊げる。

16. 参考文献

  1. [CSS1] Bert Bos, Håkon Wium Lie; "Cascading Style Sheets, level 1", W3C Recommendation, 17 Dec 1996, revised 11 Jan 1999
    (http://www.w3.org/TR/REC-CSS1)
  2. [CSS2] Bert Bos, Håkon Wium Lie, Chris Lilley, Ian Jacobs, editors; "Cascading Style Sheets, level 2", W3C Recommendation, 12 May 1998
    (http://www.w3.org/TR/REC-CSS2/)
  3. [CWWW] Martin J. Dürst, François Yergeau, Misha Wolf, Asmus Freytag, Tex Texin, editors; "Character Model for the World Wide Web", W3C Working Draft, 26 January 2001
    (http://www.w3.org/TR/2001/WD-charmod-20010126)
  4. [FLEX] "Flex: The Lexical Scanner Generator", Version 2.3.7, ISBN 1882114213
  5. [HTML4.01] Dave Ragget, Arnaud Le Hors, Ian Jacobs, editors; "HTML 4.01 Specification", W3C Recommendation, 24 December 1999
    (http://www.w3.org/TR/html401/)
  6. [MATH] Patrick Ion, Robert Miner; "Mathematical Markup Language (MathML) 1.01", W3C Recommendation, revision of 7 July 1999
    (http://www.w3.org/1999/07/REC-MathML-19990707)
  7. [NMSP] Peter Linss, editor; "CSS Namespace Enhancements (Proposal)", W3C Working Draft, 25 June 1999
    (http://www.w3.org/1999/06/25/WD-css3-namespace-19990625/)
  8. [RFC3066] H. Alvestrand; "Tags for the Identification of Languages", Request for Comments 3066, January 2001
    (http://www.ietf.org/rfc/rfc3066.txt)
  9. [STTS3] Daniel Glazman ; "Simple Tree Transformation Sheets 3", Electricité de France, submission to the W3C, 11 Nov 1998
    (http://www.w3.org/TR/NOTE-STTS3)
  10. [SVG] Jon Ferraiolo ed.; "Scalable Vector Graphics (SVG) 1.0 Specification", W3C Proposed Recommendation, 19 July 2001
    (http://www.w3.org/TR/2001/PR-SVG-20010719)
  11. [UI] Tantek Çelik, editor; "User Interface for CSS3", W3C Working Draft, 16 February 2000
    (http://www.w3.org/TR/2000/WD-css3-userint-20000216)
  12. [UNICODE] "The Unicode Standard: Version 3.0.1", The Unicode Consortium, Addison Wesley Longman, 2000, ISBN 0-201-61633-5.
    URL: http://www.unicode.org/unicode/standard/versions/Unicode3.0.1.html.
    The latest version of Unicode. For more information, consult the Unicode Consortium's home page at http://www.unicode.org/.
  13. [XML-NAMES] Tim Bray, Dave Hollander, Andrew Layman, editors; "Namespaces in XML", W3C Recommendation, 14 January 1999
    (http://www.w3.org/TR/REC-xml-names/)
  14. [YACC] "YACC - Yet another compiler compiler", S. C. Johnson, Technical Report, Murray Hill, 1975

[PR]ŒŒ‰tŒ^¶”NŒŽ“ú‚ʼn^–œf’f:–³—¿‚šŽŽ‚µ‚à–{ŠiŠÓ’èI