More errors in the CSS2 specification

These are my rather unconnected remarks:

1. Grammar

> /* * simple selector cannot start with attrib selector */
> simple_selector
> : element_name [ HASH | class | attrib | pseudo ]* S*
>  | HASH [ HASH | class | attrib | pseudo ]* S*
>  | pseudo [ HASH | class | attrib | pseudo ]* S*
>  | class [ HASH | class | attrib | pseudo ]* S*  ;

1. This allows multiple IDs, which does not make sense because an
element can only contain one ID and not two simultaneously.
2. The fact that "simple selector" can't start with an attribute
selector
is contrary to part 5.3:


>The universal selector, written "*", matches the name of any element
>type. It matches any single element in the document tree.
>
>If the universal selector is not the only component of a simple
>selector, the '*' may be omitted. For example:
>
>*[LANG=fr] and [LANG=fr] are equivalent.
>*.warning and .warning are equivalent.
>*#myid and #myid are equivalent.

So according to this, simple selectors are allowed to start with an
attribute selector, and I don't really see why they should not be.

I think it should better be expressed as:
simple_selector
: [element_name | class | attrib | pseudo ]
    [class | attrib | pseudo ]*
    HASH?
    [class | attrib | pseudo ]* S*
| [element_name | class | attrib | pseudo ]?
    [class | attrib | pseudo ]*
    HASH
    [class | attrib | pseudo ]* S*;


2. It should be stated somewhere that @page is not allowed in @media,
which can only be deduced from the grammar.

3. From Section 4.1.9:
>CSS also allows the SGML comment delimiters ("<!--" and "-->") in
>certain places, but they do not delimit CSS comments.
It should be stated what these "certain places" are (i.e. between at
rules and rulesets (that are not within a @media rule); but only after
the @charset rule).

3. voice-family is allowed not to contain a generic voice-family. Is
this a mistake or intended?

4. In part 9.8.3 (Floating a box), in an example the clear property is
set on an (inline) SPAN element, but according to the description, clear
only applies to block elements.

5. This is based on my ignorance, but what are Unicode letters with 6
hex digits? As far as I understand, Unicode is a 16-bit encoding, but 6
hex letters make up 24 bit. Maybe this could also be explained somewhere
in the specification, or is this widely understood?

Christian Kaufhold

Received on Monday, 11 January 1999 12:44:26 UTC