- From: Stewart Brodie <stewart.brodie@antplc.com>
- Date: Wed, 22 Aug 2007 15:37:46 +0100
- To: fantasai <fantasai.lists@inkedblade.net>
- Cc: public-css-testsuite@w3.org
fantasai <fantasai.lists@inkedblade.net> wrote:
> Stewart Brodie wrote:
> > References: <46B27134.9090406@inkedblade.net>
> >
> > CVS revision 1.4 of test case t040103-ident-03-c.xht
> >
> > I've been looking at this test that was recently much enhanced to test
> > valid and invalid class and ID selectors more thoroughly and fix issues
> > with the earlier revisions, but I believe that there is still a problem
> > with test case 4. This is the case of the selector that is:
> >
> > #-1ident, .four { color:red }
> >
> > The lexical scanners in the CSS2.1 (19 July 2007) and CSS3's Selectors
> > (15 December 2005) specifications both agree that this selector is
> > valid. This is because both of them define names the same way:
> >
> > name {nmchar}+
> > nmchar [_a-z0-9-]|{nonascii}|{escape}
> >
> > %%
> >
> > "#"{name} { return HASH;}
> >
> >
> > Is this an incorrect test case or are the specifications themselves not
> > describing the intended scanner? I'm not particularly bothered either
> > way, but the inconsistency needs to be resolved.
>
> In a lot of cases the grammar is more permissive than the prose. In these
> cases the prose takes precedence.
>
> According to
> http://www.w3.org/TR/CSS21/selector.html#id-selectors
> an ID selector is an identifier, and these are not allowed to start with a
> hyphen plus a number. I just checked with Bert, and he agrees the test is
> correct.
OK. Given that it must be an identifier, is there are reason why the rule
in the grammar (in both specifications) should not be corrected to:
"#"{ident} { return HASH;}
and delete the definition of 'name' completely? This would make the grammar
agree with the prose. Apart from preventing "#-<digit>" being a HASH token,
it would also prevent "#--" from generating a HASH token - also a correct
change, I believe.
On reflection, this would have a knock-on effect in parsers that expect a
HASH token for the value of a color property, of course. Is that the reason
why the grammar is still as it is? If it is, I think that inserting a
comment at the top of the lexical scanner would be a worthwhile addition.
--
Stewart Brodie
Software Engineer
ANT Software Limited
Received on Wednesday, 22 August 2007 14:37:48 UTC