- From: Mike Bremford <mike-css@bfo.co.uk>
- Date: Tue, 28 Mar 2006 12:00:49 +0100
- To: www-style@w3.org
Hi all The grammar for the @page rule in CSS3 (at http://www.w3.org/TR/2004/ CR-css3-page-20040225/#syntax-page-selector) is slightly incorrect. The @page block is defined to be: PAGE_SYM S* IDENT? pseudo_page? S* '{' S* [ declaration | margin ] [ ';' S* [ declaration | margin ]? ]* '}' S* and "margin" is margin_sym S* '{' declaration [ ';' S* declaration? ]* '}' S* However this won't match constructs like @page { @top-left { this:that } <--- size: A4 } because a semi-colon would be required after the inner "}", where I've arrowed. If I were to suggest a fix, I'd suggest ensuring the margin blocks came before any declarations, which would allow the rule to be rewritten as PAGE_SYM S* IDENT? pseudo_page? S* '{' S* margin* declaration? [ ';' S* declaration ]* '}' S* On a related note, in CSS2.1 the grammar doesn't allow for a @page rule inside a @media rule, ie. @media print { @page { size:A4 } } is disallowed. Is this deliberate? Cheers... Mike
Received on Tuesday, 28 March 2006 11:00:55 UTC