Re: draft-ietf-html-style-00.txt

Scott E. Preece (preece@predator.urbana.mcd.mot.com)
Thu, 7 Dec 1995 14:38:34 -0600


From: mjhanna@sandia.gov (Michael J Hannah)
|
| Will we lose anything if we remove CLASS and ID and only keep STYLE
| as an attribute on every HTML element? Not if you assume that the
| only purpose for CLASS and ID is for style purposes, because the
| content of the value assigned to the STYLE attribute can still refer
| to classes and ids.
---

Invalid assumption, see below.

---
|
|   EXAMPLE
|   =======
|   Making up my own notation as an example (but borrowed heavily from
|   CSS1), let us assume that a name inside the STYLE attribute value that
|   is not followed by a colon is a style selector such as a style class or
|   style id.  If the name is followed by a colon then it is a style
|   declaration element.  Now let us assume that we have a general class
|   "corporate" and a subclass of "regulations" (defined in either the
|   STYLE element or in some LINKed style sheet) and we also want to modify
|   this paragraph where all text has a line through it (like a deleted
|   paragraph).  With the current proposal we would (I think) have:
|
|     <P CLASS="corporate.regulations" STYLE="text-decoration: line-through">
|     This text should be rendered as deleted text.</P>
|
|   If we remove the CLASS and ID attributes and simply have one STYLE
|   attribute whose contents is the responsibility of the style notation:
|
|     <P STYLE="corporate.regulations; text-decoration: line-through">
|     This text should be rendered as deleted text.</P>
---

Here's a counter-proposal:

Leave CLASS and ID alone, as orthogonal to this issue. Define the syntax of the STYLE attribute as:

{notation-part {(href-part)}:}{name-part}{+styling-part} ({} indicates that each of the three parts is optional).

The notation-part, if present, indicates the notation used in the styling-part and restricts the name resolution space for the name-part to stylesheets in the given notation. The optional href-part allows the author to indicate a specific stylesheet within which the name must be resolved.

The name-part is used to identify a style named in a stylesheet, using whatever name resolution mechanism the CSS ends up with; I assume it would include at least element names, class names, element.class. and context-specific strings of elements and classes (i.e., anything that could be in the selector part of a stylesheet entry).

The styling-part contains anything that could be in the declaration part of a stylesheet entry, including the surrounding brackets; the '+' is chosen to indicate that the styling is layered on what the rest of the specification says.

The example would be: <P STYLE="corporate.regulations + {text-decoration: line-through}"> This text should be rendered as deleted text.</P>

| | QUESTIONS | ========+ | 1) Can the style/CSS working group specify everything they want to | specify with regards to style with only three hooks in HTML? | a) LINK as described in the draft to access style sheets | b) a STYLE element for in-document style sheet specifications | c) a STYLE attribute on every element (and no CLASS or ID)

---

I think you can do fine with just CLASS (and ID, which is a separate issue). If you add STYLE names, then you have to decide what to do when the same name can be either a CLASS or a STYLE; I think the namespaces can reasonably be combined.

---
|
|   2) Is there some markup purpose OTHER than style for which the HTML
|      working group wants to introduce the new (not defined in RFC 1866)
|      attributes of CLASS and ID?
---

I believe the CLASS and ID attributes are useful for the purposes they were described as having in the HTML 3 draft - ID as a hyperlink head and CLASS as a way of specifying additional semantics of one of HTML's generic elements. As a long-time information retrieval person, I can say the ability to attach useful classes to information in the document is critical to high-precision searching (which is *NOT* what current HTML search enginces provide!). I think we will see that use grow (unless someone comes up with a good SGML browser and the high-content domains move out of HTML entirely).

I strongly believe CLASS and ID belong in the HTML spec, not in style-space. Their styling use is convenient and may be their most common short-term use, but HTML needs them regardless.

scott

--
scott preece
motorola/mcg urbana design center	1101 e. university, urbana, il   61801
phone:	217-384-8589			  fax:	217-384-8550
internet mail:	preece@urbana.mcd.mot.com