- From: Paul Duffin <pduffin@volantis.com>
- Date: Fri, 17 Sep 2010 14:38:06 -0600 (MDT)
- To: Bjoern Hoehrmann <derhoermi@gmx.net>
- Cc: Peter Linss <peter.linss@hp.com>, www-style <www-style@w3.org>
----- Original Message -----
> * Paul Duffin wrote:
> >I don't dispute the initial motivation for adding it but it seems to
> >me
> >that the language used in the specification indicates that
> >considerable
> >thought went into making it suitable for use as a general mechanism
> >for
> >namespacing CSS identifiers in general.
>
> The character `|` is not allowed as an (unescaped) part of
> identifiers;
> something like `example { example|example: example }` is not parsable
> as
> style sheet under the supposedly set-in-stone core language syntax.
That is a good point. I guess that you are basing that on CSS 2 syntax http://www.w3.org/TR/CSS2/syndata.html#tokenization.
ruleset : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*;
selector : any+;
declaration : property S* ':' S* value;
property : IDENT;
value : [ any | block | ATKEYWORD S* ]+;
any : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING
| DELIM | URI | HASH | UNICODE-RANGE | INCLUDES
| DASHMATCH | ':' | FUNCTION S* any* ')'
| '(' S* any* ')' | '[' S* any* ']' ] S*;
I guess the | used in selectors must be matched by DELIM.
Ok, so based on that syntax we can identify the places where they could be used:
* at-rule name - not allowed because the name is an IDENT
* property name - not allowed because the name is an IDENT
* pseudo class name - allowed as it is a selector and selectors can contain |.
* pseudo element name - allowed as it is a selector and selectors can contain |.
* property value - allowed because a value can contain DELIM
However, I think that a conforming CSS parser that implements the http://www.w3.org/TR/CSS2/syndata.html#parsing-errors rules properly should simply ignore a | in a property name or at-rule and skip over to the end of the declaration / at-rule respectively. So from that perspective a "CSS qualified name" could be used as a property name or at-rule name.
Received on Friday, 17 September 2010 20:38:39 UTC