- From: Benjamin Hawkes-Lewis <bhawkeslewis@googlemail.com>
- Date: Wed, 19 Mar 2008 14:54:15 +0000
- To: Douglas Perreault CPA* CITP <doug@perreault.us>
- CC: www-validator-css@w3.org, 'Yves Lafon' <ylafon@w3.org>
Douglas Perreault CPA* CITP wrote: > Now you all are confusing me <grin> ... It is confusing, no doubt about that. :) > I should think with > > p { color:red; color:; color:green } > > That the UA should report "color:red", especially because of the statement: > > "Lexical errors are handled with a skip to matching brace" Just to be clear, that's just a rule made up by the validator developers for validation purposes: it directly contradicts the handling mandated by the specification in: http://www.w3.org/TR/CSS21/conform.html#conformance http://www.w3.org/TR/CSS21/syndata.html#tokenization http://www.w3.org/TR/CSS21/grammar.html http://www.w3.org/TR/CSS21/syndata.html#parsing-errors To boil it down to the essentials: the spec says UAs should parse input CSS according to the core CSS grammar. If the input can't be parsed with that grammar, then how to handle the input (i.e. the whole stylesheet) is undefined in CSS 2.1. If the input can be parsed with that grammar, but isn't valid CSS 2.1 (either because it doesn't follow the more narrow CSS 2.1-specific grammar or because it uses unknown properties or illegal values), then the spec defines some forwards-compatible error handling rules, such as ignoring unknown properties and malformed declarations. The example in question was lifted directly from the CSS 2.1 spec, which specifies that UAs should treat it as equivalent to: p { color : red; color : green; } > It was always my understanding that the UA should read the styles up to the > point it first comes across an error. From that point on everything else > should be ignored up to the matching brace. I'm afraid you're mistaken. Hope that helps. -- Benjamin Hawkes-Lewis
Received on Wednesday, 19 March 2008 14:54:59 UTC