[6] 属性選択子は、それに一致する属性を持つ要素と一致します >>4。
[26] 属性がどのように与えられるかには依存しません。 DTD や XML Schema、 利用者エージェントに組み込まれた語彙の知識などで間接的に既定値として与えられた属性であっても、 文書木に反映されていれば選択子の適用対象となり得ます。 >>4
[27] しかし XML では外部部分集合を処理することが義務付けられていないなど、 必ずしも文書木にそのような属性が含まれているとは限りません。従って、 選択子は既定値に左右されないように書くべきです >>4。
[97] WebVTT ではWebVTT中間節点オブジェクトについて、 v
と
lang
は特定の属性だけが存在しているように、それ以外は属性が存在しないように扱うことになっています。
>>98
=
~=
[14] ~=
で属性値が指定されている場合、当該属性の値を空白区切りにしたときに、
そのいずれかと値が一致することを表します。空白区切りの結果のいずれかと比較されるため、
選択子で指定した値が空白を含んでいる場合は、何とも一致しません。
>>4
[15] 例えば、
[tokens~="hoge"]... は
<foo tokens="hoge fuga abc "/>... と一致します。しかし、
[tokens~="hoge fuga"]や
[tokens~=""]... とは一致しません。
[57] 選択子で指定した値が空文字列である場合には、何とも一致しません >>4。
[56] 値や属性値が空文字列の場合について以前は仕様書は明記していませんでしたが、 当時の規定も文字通り解釈すれば、空の値はどんな属性値とも一致しませし、 空の属性値はどんな値とも一致しません。
[59] Firefox 2.0 の空白に
U+000C
は含まれていないようです。
[60] Opera 9 の空白は ~=
では U+0020
だけ、
クラス選択子では通常の空白に加えて U+000B
も含まれるようです。
[61] Opera 9 はなぜか \a
を U+000B
と解釈します。
[62] 属性値の先頭や末尾の空白が無視されるのかどうか仕様書は明記していません。
[63] Firefox 2.0 も Opera 9 も無視するようです。
[64] テスト:
|=
[16] |=
の後に属性値が続く場合、その値と一致するか、またはその値の後に
-
が続くような属性値が指定されていることを表します。 >>4
[52] 仕様書には値が空文字列の場合について特に言及はありませんが、
文字通りに解釈すると、属性値が空文字列の場合や
-
から始まる場合に一致することになります。
[53] Firefox 2.0 は >>52 のように解釈しますが、 Opera 9 は何とも一致しないと解釈するようです。
[54] Firefox 2.0 でも Opera 9 でも、 値や属性値の中間の空白に関して比較の際に特に正規化は行われないようです。
[55] ただし Opera 9 では値の U+000A
がなぜか属性値の U+000B
と一致します。
[5]
Firefox 2.0 は属性値の先頭や末尾に零個以上の
U+0009
, U+000A
,
U+000D
の任意の組み合わせがあると、
無視して比較します。
むしろ値の先頭や末尾にこれらを明示しても一致しません。
^=
, *=
, $=
[18] ^=
, *=
, $=
の後に属性値が続く場合、
それぞれ属性値の先頭、任意の位置、末尾にその値が含まれていることを表します。 >>4
[8] 属性値を指定する場合は CSS の識別子または文字列として記述しなければなりません >>4。
[74] 属性値は数字からはじまると識別子ではなく数とみなされてしまうので、 非妥当になります。
[20] 属性選択子は既定名前空間を使いません。名前空間接頭辞と |
を省略すると、null名前空間を表します。 >>4
[21] 属性選択子の名前空間接頭辞が空文字列なら、null名前空間を表します。 >>4
[22] 属性選択子の名前空間接頭辞が *
なら、任意の名前空間を表します。
>>4 これにはnull名前空間も含まれます。
[9] 属性名の大文字と小文字を区別するかはマーク付け言語に依存します。 >>4
[10] HTML文書中のHTML要素では属性名の大文字と小文字を区別しません。 それ以外、すなわち HTML文書中の HTML 以外の要素や XML文書では区別します。 >>77
[76] 属性値の大文字と小文字を区別するかはマーク付け言語に依存します >>4。
[81] HTML文書では、一部のHTML要素でASCII大文字・小文字不区別となります。 それ以外は区別します。 >>77
[82] HTML Standard には type
属性のみ、
ul
要素や ol
要素のとき大文字と小文字を区別する旨の注記がありますが、
実際には Chrome も Firefox も、区別しないようにみえます。
[1] jQuery: CSS <http://jquery.com/docs/CSS/>
JavaScript による選択子の実装ですが、
属性名の前には @
をつけなければなりません。
(名無しさん 2006-06-06 11:55:35 +00:00)
[66] ここでは属性の存在を表す属性選択子と =
が提案されていましたが、
構文が少し違っていました。
[68] 次の >>67 では現在の構文になりますが、水準2に格下げ(?)されていました。
[70] その次の >>69 ではID選択子だけ水準1、それ以外は水準2となっています。 (この時はまだID選択子は属性選択子の一種でした。)
[42] STTS2 では属性選択子として属性の存在、 =
(完全一致)、
==
(現在の ~=
) が定義されていました。
[39] 属性選択子は CSS2 で正式に選択子に導入されました。当初は STTS2 (>>41) を引き継ぎ、 >>42 の3種類が定義されていました。
[43] また属性名の前に ^
をつけることでその属性を文書木から削除することを表していました。
STTS3 ではより一般的な形に拡張されています。
|=
の追加[49] >>50 の次の PR である >>51 で |=
が追加されました。
[38] CSS2 は名前空間の扱いを規定していませんでしたが、現実には属性選択子とXML名前空間の両方に対応している CSS2 世代の利用者エージェントはありませんでした。
[45] 名前空間接頭辞をつけて名前空間に対応することが >>44 で提案され、 >>46 以後の選択子仕様に取り込まれています。
[91] 選択子仕様書は大文字と小文字の区別はマーク付け言語によるとして具体的には規定していませんでしたが、 かわりに HTML 仕様書が HTML と XML の場合を規定しました。
[11] 以前 (>>90 までの Web Applications 1,0 仕様と Gecko、WebKit、Presto) は HTML名前空間の一部の要素では属性値の大文字と小文字を区別しないことにしていました。
[3]
Opera 9 は HTML で accesskey
の属性値の大文字・小文字を区別します。
Firefox 2.0 は HTML で accesskey
の属性値の大文字・小文字を区別しません。
[92] HTML5 は当初属性値についても特定の属性のみASCII大文字・小文字不区別とされていましたが、 >>90 によってすべて区別することになりました。
[95] 以前は HTML の利用者エージェント・スタイル・シートは大文字と小文字の区別について注釈を使った特別な注記によって表していましたが、
i
記法の導入でこれを選択子だけで表現できるようになりました。
[28] クラス選択子、ID選択子、:lang
のような特定用途に特化した属性選択子と言えるような選択子もあります。
[31] 型選択子には普遍選択子がありますが、 属性選択子にはそれに相当するものがありません。
[96] [whatwg] [Selectors4] case-insensitive attribute value matching (in XML) ( 版) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036284.html>
[101] IRC logs: freenode / #whatwg / 20121202 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20121202>
[102] Introduction to CSSOM (1) - DOM ECMAScripting ( ( 版)) <http://domes.lingua.heliohost.org/dom/intro-cssom1.html#note-21>
[103] Bug 24005 – Attribute values can't always be matched case-sensitively ( ( 版)) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=24005>
[104] Web Applications 1.0 r8253 Match reality better in terms of selector case-sensitivity ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=8252&to=8253>
[110] Web Applications 1.0 r8764 Try to clarify case matching rules for selectors ( ( 版)) <http://html5.org/r/8764>
[86] [selectors4] Spec for attribute value case-sensitivity is clearly to vague (Boris Zbarsky 著, 版) <https://lists.w3.org/Archives/Public/www-style/2016Jan/0166.html>
[87] Point out case-insensitivity of i in [foo=bar i] · w3c/csswg-drafts@498c104 ( 版) <https://github.com/w3c/csswg-drafts/commit/498c1042562fd7cb98065351c63b2620c3ddc7bf>
[88] Gloss the term "attribute selector" · whatwg/html@953b6f4 ( 版) <https://github.com/whatwg/html/commit/953b6f41dd1563a512195044d54b3c661293d2b6>
[89] [selectors] Remove the Selectors-specific tokens, rephrase in terms o… (tabatkins著, ) <https://github.com/w3c/csswg-drafts/commit/52554f80bac1d05be0067fff4a05d2ec126cb41f>
[111] Remove the Selectors-specific tokens, per WG resolution. (tabatkins著, ) <https://github.com/w3c/csswg-drafts/commit/177fc30c38029740a4dfdc4721fc3aa4a8273595>
[112] Selectors: attr name in any NS on HTML elements are case-insensitive (SimonSapin著, ) <https://github.com/whatwg/html/commit/822a91149c86f64ea86aaeb9f48d28ca75aa29ac>
[113] SVG should specify what CSS attribute selectors and class selectors match on · Issue #328 · w3c/svgwg () <https://github.com/w3c/svgwg/issues/328>