RE: New WD: CSS3 selectors

Jelks Cabaniss writes:
 > > A new working draft was just published:
 > >
 > >     CSS3 module: W3C selectors
 > >     http://www.w3.org/TR/1999/WD-CSS3-selectors-19990803
 > 
 > It's good to see this.
 > 
 > Question: there's a caveat under the example "E.warning" that says "HTML only".
 > XML, unlike with IDs, has no "built-in" notation of *class*.  But is there any
 > real reason for CSS *excluding* recognition of class in XML, in other words --
 > providing automatic recognition of class (or CLASS) regardless of the semantics
 > of the markup language in question?

The text you quote is literally copied from the current CSS2 spec. I
believe we will eventually find a way to use ".class" with XML,
because, as you say below, it is simply very convenient.

But so far we haven't found the description we like. The idea is that
".class" represents a *concept*, not so much a specific attribute. In
HTML it is indeed called "class," but in other formats it may be a
different attribute. E.g., in the TEI format, it seems reasonable to
use "type."

But if ".class" is an abstract concept, it needs to be bound to
something concrete, via some specific syntax. There are several
possibilities:

1. In the XML document itself:

   a. Using XML namespaces: we define a namespace that contains a
      class-like attribute, and maybe something more, such as a
      "style" attribute. That namespace would define that you can use
      <foo x:class="bar"> under certain conditions.

   b. Using predefined XML attributes. This would include an attribute
      that starts with the reserved letters "xml", e.g. <foo
      xml-class="bar">

   c. Using other predefined XML syntax, e.g., a PI: <?xml-class
      use-attribute="type"?>

2. In the CSS style sheet:

   a. Scoped to one CSS file: Something like this near the top of the
      file: @class "attributename";

   b. Scoped to an XML namespace:
      @namespace html url(http://www.w3.org/xhtml1-strict) class="class";

   c. Explicitly scoped: @class "attributename" {... rules... }

3. Always bind it to an attribute called "class." If there isn't any:
   bad luck.

My current opinion: I think (1) looks ugly and (3) is too limited.
(2a) has my preference, but it may mean you have to split a style
sheet into several files if your document mixes namespaces. (2b) is
more complex, but doesn't have that disadvantage. I don't like (2c),
because it introduces an extra level of nesting, which will scare too
many potential CSS authors.

We probably have to look at the problems of class, ID and embedded
styles together: we have a problem with #id selectors, since you may
not always know which attribute is the ID. And embedded styles (style
attribute) are occasionally convenient as well.

 > reason: dot notation for class as used in HTML+CSS is so convenient, that I
 > imagine it will be highly requested by authors of XML-based documents and
 > implemented by the browser manufacturers, regardless of its official status:



Bert
-- 
  Bert Bos                                ( W 3 C ) http://www.w3.org/
  http://www.w3.org/people/bos/                              W3C/INRIA
  bert@w3.org                             2004 Rt des Lucioles / BP 93
  +33 (0)4 92 38 76 92            06902 Sophia Antipolis Cedex, France

Received on Thursday, 5 August 1999 10:53:41 UTC