W3C home > Mailing lists > Public > www-style@w3.org > February 2005

CSS core syntax: Why is selector optional?

From: Christian Roth <roth@visualclick.de>
Date: Tue, 8 Feb 2005 17:36:25 +0100
To: "www-style Mailing List" <www-style@w3.org>
Message-Id: <20050208163625.18646@mail.visualclick.de>

In the core syntax [1] (so this holds true for both CSS21 and CSS3), the
selector part of a ruleset is optional:

ruleset : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*;

However, none of the different specific grammars for selectors (i.e.
neither the one for  CSS21 [2] nor for CSS3 [3]) actually allow a
selector to be empty.

My question is whether the selector being optional is a deliberate
decision to sometime allow rulesets like like

{ color: red; }
{ width: 20cm; }

(with reasonable semantics to be defined) or the core grammar should
better be changed to 

ruleset : selector '{' S* declaration? [ ';' S* declaration? ]* '}' S*;

, i.e. require a selector. This would then be much more in line with the
textual description in CSS21, 4.1.7 [4]:

"A rule set (also called "rule") consists of a selector followed by a
declaration block."

  and

"A selector always goes together with a {}-block."

What is the WG's rationale behind making it optional?

[1] <http://www.w3.org/TR/CSS21/syndata.html#tokenization>
[2] <http://www.w3.org/TR/CSS21/grammar.html>
[3] <http://www.w3.org/TR/2003/WD-css3-syntax-20030813/#grammar0>
[4] <http://www.w3.org/TR/CSS21/syndata.html#q10>


Regards, Christian.
Received on Tuesday, 8 February 2005 16:37:27 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:35 GMT