- From: Bert Bos <Bert.Bos@sophia.inria.fr>
- Date: Fri, 9 Jul 1999 14:06:09 +0200 (MET DST)
- To: www-style@w3.org
Sue Sims writes: > > >>...id selectors > > >Both are perfectly legal CSS, as Peter explained. > > Appendix D is not written in my native language, and I admit to a > problem understanding it, even when 'optimized for human consumption'. > > >However, such > >selectors cannot match anything in a legal HTML document, since ID > >attributes in HTML must begin with a letter [1]. However, since HTML > >does not define error-handling rules, I think it's really up to the > >user-agent whether to allow this or not. > > When HTML has a normative definition for ID and name tokens (1), why > would CSS deliberately introduce this conflict with that definition? I'd > also posit that UAs decision(s) on whether to 'allow' this might well be > divergent, thereby introducing yet another layer^Wstratum of confusion > amongst authors. This issue has been discussed previously, and I'd > thought it was settled. (2) CSS sometimes allows things that cannot occur in HTML or XML, E.g., "#\20" (an ID selector consisting of a space) is legal in CSS, but cannot match anything in HTML or XML. The reason CSS does this is because you never know what HTML or XML or their successors may allow in the future. But about the digits at the start the spec indeed contradicts itself. People that read the grammar will reach a different conclusion than people that read the text. The spec should be fixed. Since CSS1 allowed digits, I think we should change the text in 4.1.3 to match the grammar (i.e., digits are allowed), rather than vice-versa. (That's the opposite conclusion from (2), where the spec also contradicted itself, but in contrast to ID selectors, class names cannot be made to start with digits because that would cause ambiguities: is ".12mile" a dimension or a class?) It doesn't matter for people writing style sheets: whether the browser allows "#123myid" or skips it, it will never match anything in XML or HTML anyway. But it does matter for people writing scripts using the DOM: "#123myid" either is a rule that you can change so that it matches something, or it is garbage that has been skipped by the parser and doesn't appear in the DOM at all. > [1] http://www.w3.org/TR/REC-html40/types.html#type-name > (2) http://lists.w3.org/Archives/Public/www-style/1998May/0066.html > http://lists.w3.org/Archives/Public/www-style/1998Apr/0049.html Bert -- Bert Bos ( W 3 C ) http://www.w3.org/ http://www.w3.org/people/bos/ W3C/INRIA bert@w3.org 2004 Rt des Lucioles / BP 93 +33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Friday, 9 July 1999 08:06:12 UTC