Property Set for CSS [Provisional]

Subject:      CSS Property Set
From:         roconnor@undergrad.math.uwaterloo.ca (Russell Steven Shawn O'Connor)
Date:         1998/04/14
Newsgroups:   comp.text.sgml,comp.infosystems.www.authoring.stylesheets

I mailed the following to the W3C's Style mailing list.
(www-style@w3.org)

I believe that the W3C should make an official property set for CSS.  The
CSS format lends itself nicely to the grove data model.  To get the ball
rolling I wrote a draft property set this evening.  Comments are
welcome.

---------------

<!-- 
     CSS1 Property Set DRAFT 
     By: Russell O'Connor

     This document is PUBLIC DOMAIN.

     Available at 
     <URL:http://www.undergrad.math.uwaterloo.ca/%7Eroconnor/hi2pscss.sgml>.

     This is my first stab at a Property Set for CSS1.  I'm sure that someone 
     who knows more about Property Sets than I do can improve upon this.  I 
     should also note that this is NOT a complete property set.  A complete 
     property set should be made for a final document.

     Modeled after the SGML property set document and based on Appendix B of 
     Cascading Style Sheets, level 1 
     <URL:http://www.w3.org/pub/WWW/TR/REC-CSS1#appendix-b>
-->

<!DOCTYPE propset
   PUBLIC "ISO/IEC 10744:1997//DTD Property Set//EN"
[

<!-- I don't know if this is right.  I don't know anything about notations. 
     The W3C probably should have a FPI for CSS.
-->
<!NOTATION CSS SYSTEM "http://www.w3.org/pub/WWW/TR/REC-CSS1">
]>

<propset nsd=CSS>
<desc>
Defines the classes and properties to be used in the construction of
groves from the parsing of CSS documents.

<!--
     Modules should be made to separate the important aspects of CSS from the 
     full information available to the parser.  For this draft I have no modules
     and have no classes for irrelevant information such as comments etc. 
     Because of this, this is NOT a complete property set.
-->

<classdef rcsnm=cssdoc appnm="css document">
<desc>
A CSS document.  The root of the grove.

<propdef subnode rcsnm=imports appnm="imported rules" nodelist ac=import>

<propdef subnode rcsnm=rules nodelist ac=rule>

<classdef rcsnm=import appnm="imported at-rule">

<propdef rcsnm=file appnm="file name" string>
<desc>
The file name of the imported style sheet.
<when>
A string is used instead of a URL.

<propdef subnode rcsnm=cssurl node ac=cssurl>
<desc>
The URL of the imported style sheet.
<when>
A URL is used instead of a string.

<classdef rcsnm=cssurl>

<propdef rcsnm=url string>
<desc>
The URL string for the CSS style sheet.

<!-- is the AC attribute allowed and proper for urefnodes? -->
<propdef urefnode rcsnm=cssdoc appnm="css document" fullnm="imported css 
document" node ac=cssdoc>
<desc>
The CSS document that is being imported.

<classdef rcsnm=rule>

<propdef subnode rcsnm=selects appnm=selectors nodelist ac=selector>

<propdef subnode rcsnm=decls appnm=declarations nmndlist ac=decl 
acnmprop=prop>

<classdef rcsnm=selector>

<propdef subnode rcsnm=smslcts appnm="simple selectors" nodelist ac=smslct>
<note>
I consider a pseudo element a simple selector.  I consider a pseudo element to
stand on it's own separate from it's parent element.  A pseudo element must
be the last element in the list of simple selectors if it is in the list at
all.

<classdef rcsnm=smslct appnm="simple selector">

<propdef rcsnm=name string>
<desc>
The name is the generic identifier of an element, or the name of a pseudo
element.

<propdef rcsnm=id string>
<desc>
The ID portion of the simple selector
<when>
An ID is given in the simple selector

<propdef rcsnm=class string>
<desc>
The class portion of the simple selector
<when>
A class is given in the simple selector

<propdef rcsnm=psdclass appnm="pseudo class" string>
<desc>
The pseudo class portion of the simple selector
<when>
An pseudo class is given in the simple selector

<classdef rcsnm=decl appnm=declaration>

<propdef rcsnm=prop appnm=property string>
<desc>
The property being assigned a value

<!-- should this be divided into further nodes? -->
<propdef rcsnm=expr appnm=expression string>
<desc>
the value being assigned to the property

<propdef rcsnm=prio appnm=priority boolean>
<desc>
True if ``! important'' is given to this declaration

-- 
Russell O'Connor                           roconnor@uwaterloo.ca
    <URL:http://www.undergrad.math.uwaterloo.ca/%7Eroconnor/>
"And truth irreversibly destroys the meaning of its own message"
-- Anindita Dutta, "The Paradox of Truth, the Truth of Entropy"