- From: Bert Bos <bert@w3.org>
- Date: Wed, 2 Apr 2008 19:23:45 +0200
- To: public-css-testsuite@w3.org
On Wednesday 02 April 2008 18:50, fantasai wrote: > Bert Bos wrote: > > This test: > > > > > > http://www.w3.org/Style/Examples/013/css3-selectors-0603-empty.html > > > > tries to test substring-matching attribute selectors ~=, |=, ^=, > > *=, $= (Selectors section 6.3[1]) with empty values, such as > > p[title^=""]. > > > > It assumes that such selectors are valid (i.e., not ignored) but > > match nothing. I think that is what we decided last week[2]. I'm > > not sure if we decided anything for |=, but it seems consistent to > > treat it the same way. > > > > This test: > > > > http://www.w3.org/Style/Examples/013/t050801-empty-attr-01.html > > > > is the same, except that it only tests ~= and |=, and is thus > > suitable for CSS level 2, section 5.8.1[3]. > > > > [1] http://www.w3.org/TR/css3-selectors/#attribute-selectors > > [2] http://www.w3.org/2008/03/28-css-irc.html#T00-52-44 > > [3] http://www.w3.org/TR/CSS21/selector.html#matching-attrs > > Bert, [attr|=""] is not an ambiguous (match everything or match > nothing) case. It is very clear from the existing definition that it > should match attr="" > attr="-foo" > attr="-" > and not > attr="foo--" > attr="foo" I would drop the "very" and probably the "clear," too :-) It's not any more clear than the other substring-matching attributes. None of them says that the right-hand side must be non-empty to have an effect, and yet that is what we decided it meant. It seems consistent to treat |= the same as ~=, except that the former uses white space as separators and the latter dashes. So if [foo~=""] does not match foo=" " then also [foo|=""] does not match foo="-" It's interesting that all browsers (at least those I tested: Konqueror, Opera 9.5 beta, iCab, Safari and Firefox) indeed treat [foo|=""] and [foo~=""] as matching nothing, although they treat [foo^=""] as matching always. Firefox also treats [foo*=""] as matching nothing. Konqueror is inconsistent, because [foo~=""] doesn't match, except when foo is itself empty (foo=""). I don't understand the logic of that. (Safari does the same, but not Webkit.) Bert -- Bert Bos ( W 3 C ) http://www.w3.org/ http://www.w3.org/people/bos W3C/ERCIM bert@w3.org 2004 Rt des Lucioles / BP 93 +33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Wednesday, 2 April 2008 17:24:27 UTC