W3C home > Mailing lists > Public > www-style@w3.org > September 2004

Re: [css3-syntax] Error handling within known at-rules

From: Ian Hickson <ian@hixie.ch>
Date: Sat, 4 Sep 2004 11:24:51 +0000 (UTC)
To: Christian Roth <roth@visualclick.de>
Cc: www-style Mailing List <www-style@w3.org>
Message-ID: <Pine.LNX.4.61.0409041120230.9548@dhalsim.dreamhost.com>

On Fri, 3 Sep 2004, Christian Roth wrote:
> Assuming the following stylesheet:
> @import "include.css" { color: red } print;
> .red { color: red; }
> 1) Should it include "include.css"?


> 2) Should it include "include.css" only for the print media type?


> 3) Should the @import rule be ignored completely?


> 4) Should elements of class "red" have red text?


> 1: MAYBE: The rule is neither unrecognized nor misplaced [1], so it may
> not be ignored. However, it cannot be parsed further starting with the
> open curly brace, so its remainder is ignored up to the ending semicolon,
> leaving us with
>   @import "include.css"
> plus the again recognized ';' since we know an @import rule ends with a
> semicolon.

The rule uses invalid syntax and thus must be ignored.

The rule consists of exactly:

   @import "include.css" { color: red }

...no more, no less. That's not valid.

> 2: MAYBE: Same reasoning like in (1), but { ... } is not allowed in
> @import. However, @import ends with a semicolon, so we skip the unknown
> part between braces and pick up again after it, giving us a print media type.

You can't combine different parts of the stylesheet after ignoring parts.  

> 3: MAYBE: It is neither unrecognized nor misplaced (-> NO), except for
> when "unrecognized" means "either unknown name or not valid according to
> the grammar" (-> YES). [1]

I agree that the spec should be clearer.

> 4: MAYBE: According to the rules for forming at-rules [1], the @import
> rule ends after the closing brace. The remaining stylesheet is
>   print; ...
> whereby this is no longer parseable according to the grammar, and
> therefore [1] applies, whereby we take the largest chunk of the
> stylesheet to be parsed from the beginning, discarding the rest from the
> place where we can no longer parse. This means the stylesheet would end
> after the closing brace in @import.

My interpretation is that the sheet consists of:

1. An invalid @rule: @import "include.css" { color: red }
2. An invalid rule: print; .red { color: red; }

Both are dropped.

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
Received on Saturday, 4 September 2004 11:24:53 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:27:15 UTC