- From: Alan Gresley <alan@css-class.com>
- Date: Fri, 01 Apr 2011 22:46:36 +1100
- To: Bjoern Hoehrmann <derhoermi@gmx.net>
- CC: Peter Moulder <peter.moulder@monash.edu>, www-style@w3.org, CSS-testsuite <public-css-testsuite@w3.org>
CC CSS test suite mailing list.
On 27/03/2011 11:40 AM, Bjoern Hoehrmann wrote:
> * Peter Moulder wrote:
>> On Fri, Mar 25, 2011 at 07:59:07AM +0100, Bjoern Hoehrmann wrote:
>>
>>> The ["\2a"] selectors would match elements with node name `*`.
>>
>> That's what I would expect to happen, but if WebKit or any other UA
>> treats it as universal selector, then I can't say that the spec is
>> completely clear about it.
>
> Well, there is no reason to treat `\2a` differently from `\*` as both
> are IDENT tokens identifying the same identifier, and there is no reason
> to treat `\*` the same as `*` as the backslash is supposed to remove any
> special meaning the `*` may have and because there would otherwise be no
> way to match an element named `*` even though you can match pretty much
> every other name.
Where in the spec does it define that a backslash is supposed to remove
any special meaning for `*`? I do see this.
| Second, it cancels the meaning of special CSS characters.
| Any character (except a hexadecimal digit, linefeed, carriage
| return, or form feed) can be escaped with a backslash to remove
| its special meaning. For example, "\"" is a string consisting
| of one double quote. Style sheet preprocessors must not remove
| these backslashes from a style sheet since that would change
| the style sheet's meaning.
I think that maybe having '*' as a universal selector wasn't the best
thing to do in CSS.
[snip]
> The place for such clarifications is the test suite. As "escaped special
> character" is among the most obvious test cases, I would expect this to
> be covered there already (be that WebKit's or W3C's or whoever's).
The current test suite [1] does not have any test with escapes like my
recent test. I plan to submit such test but I do believe that CSS2.1 - 4
syntax and data needs a look over. I do not know quite what to put in
the meta asserts.
Here are some additional test.
<http://css-class.com/test/css21testsuite/escapes-029.xht>
<http://css-class.com/test/css21testsuite/escapes-030.xht>
<http://css-class.com/test/css21testsuite/escapes-036.xht>
In WebKit, the first line in 'escapes-029' only is red.
escapes-029 body \* { background: red; }
escapes-030 body \\* { background: red; }
escapes-036 body \
* { background: red; }
Here are some additional tests where a stray escape may be present '
class="ڰ" '.
<http://css-class.com/test/css21testsuite/escapes-039.xht>
<http://css-class.com/test/css21testsuite/escapes-040.xht>
This time WebKit ignores a string like this '.\06B0 \*' but this is the
same nature as 'body \*'.
escapes-039 .\06B0 \* { background: red; }
escapes-040 .\06B0 \
* { background: red; }
In FF3.6.16 and FF4b the line is red for 'escapes-040'. This I find
usual since when does '*' overrule 'div *' in specificity?
div * { background: green; }
.\06B0 \
* { background: red; }
1.
<http://test.csswg.org/suites/css2.1/20110323/html4/chapter-4.html#s4.1.3>
--
Alan http://css-class.com/
Armies Cannot Stop An Idea Whose Time Has Come. - Victor Hugo
Received on Friday, 1 April 2011 11:47:11 UTC