DOM2 Stylesheets

Here are some comments on chapter 3 of the current DOM2 WD [1].  These
stem from my own personal interest in the draft, not from anything I am
doing this summer at Netscape.

Interface StyleSheet
--------------------

 - If no media are specified, what is the media attribute?  I suggest it
   be created automatically with one item: "all".  If not, then it could
   have length 0 and cssText of "".  I think making it null would be a
   bad idea.

 - How do media and disabled interact?
     1) (my preference)  If the medium is not matched by the media list,
        the stylesheet is not applied and the disabled attribute is
        ignored.  I like this because:
          * a change in media would automatically change which stylesheets
            are applied, without requiring changes to disabled
          * printing would make sense
          * the mechanims I propose below are simple
     2) The disabled attribute is initially false if the medium is not
        matched by the media list, and setting disabled throws an
        exception.
     3) The disabled attribute is initially false if the medium is not
        matched by the media list, and setting disabled applies sheet in
        spite of the media list.

Interface StyleSheetList
------------------------------

The notion of setting a disabled attribute on the stylesheet runs
somewhat counter to the mechanism used in HTML 4.0 [2] (and thus in
xml-stylesheet [3]) for selecting between alternate stylesheets.  I
therefore propose the following mechanism in addition to the disabled
attribute to allow for the selection of groups of stylesheets by their
titles.  The current definitions assume that the interaction between
disabled and media is defined by my first choice above.  I don't like
all the names I used below, but I just gave them names so the proposal
would be concrete.  I'm not at all attached to this particular proposal
(although I still think it's good), but I want to put something
concrete on the table because I think the capabilities it provides are
important.

interface TitleList {
  readonly attribute unsigned long  length;
  DOMString          item(in unsigned long index);
};

Attributes 
     length 
          The number of DOMString in the list. The range of valid
          indices is 0 to length-1 inclusive.
Methods 
     item 
          Used to retrieve a title by ordinal index. 
          Parameters 
                index
                     Index into the collection

          Return Value 
               The title at the index position in the TitleList, or
               null [the empty string??] if that is not a valid index.


interface StyleSheetList {
           attribute DOMString      selected;
                                     // raises(DOMException) on setting
           attribute unsigned long  selectedIndex;
                                     // raises(DOMException) on setting
  readonly attribute TitleList      names;
  readonly attribute unsigned long    length;
  StyleSheet         item(in unsigned long index);
}

Attributes
     selected

        The stylesheet title currently in use. Initially, this is set
        to the title of the preferred stylesheets as defined by HTML
        4.0 [2] or xml-stylesheet [3] or to the empty string if there
        is no preferred stylesheet.  If the disabled attribute of a
        stylesheet in the list is set, this does not change.  [Is this
        the best behavior?]  If this is set to a string that is an item
        in the names attribute, it sets disabled to false on any
        stylesheets in the StyleSheetList that have a title equal to
        that string (the new value of selected) or the empty string,
        and sets disabled to true for any other stylesheets.  If it is
        set to the empty string, all stylesheets with non-empty titles
        have disabled set to true, and those with empty titles have
        disabled set to false.  In either case, the value of
        selectedIndex is changed to reflect the change to selected.

        Exceptions on setting
            DOMException
                NOT_FOUND_ERR [ Probably the wrong one? ]
                    If the specified string is not in names and is
                    not the empty sting.
     selectedIndex

        This string gives the index of the current selected attribute
        in names, or -1 if selected is the empty string.  Setting it
        to any value between -1 and names.length-1 changes
        selected appropriately and causes the corresponding changes
        to the disabled attribute of the stylesheets in the
        StyleSheetList.

        Exceptions on setting
            DOMException
                INDEX_SIZE_ERR
                    If the specified index is not between -1 and
                    names.length-1, inclusive.
     names
        A TitleList containing the titles from which the user can
        select alternate stylesheets, as defined by HTML 4.0 [2]
        or xml-stylesheet [3].
     length
        AS CURRENTLY DEFINED
Methods
     item
        AS CURRENTLY DEFINED

David

[1] http://www.w3.org/TR/1999/WD-DOM-Level-2-19990719/stylesheets.html
[2] http://www.w3.org/TR/1998/REC-html40-19980424/present/styles.html#h-14.3
[3] http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/

L. David Baron     Rising Sophomore, Harvard     dbaron@fas.harvard.edu
Links, SatPix, CSS, etc.        < http://www.fas.harvard.edu/~dbaron/ >
Summer Intern, Netscape - however, opinions are entirely my own, etc.

Received on Wednesday, 4 August 1999 12:55:02 UTC