[CSS21] CSS2.1 dependencies from elsewhere (was Re: WG process - next steps for CSS21?

On Thu, Mar 03, 2011 at 12:02:05AM -0800, Peter Linss wrote:

> The entire spec needs to move forward. Identifying areas to focus on
> would only help if we were going to break CSS2.1 into modules that
> could advance individually, and we're not going to do that.

We will in some sense: deferring things to CSS3 amounts to much the same
thing.  If we want to defer as many issues as possible, then it would be
good to know in advance what things we can or can't defer.  If anyone's
aware of something depending on CSS2.1 for its definition of run-in, or
list-item numbering or whatever, then we want to know about it.  If
there's a difficult-looking issue with a feature in CSS2.1 that isn't
blocking anything else, then it would be good to know that so that we
know we have the option of simply deferring it and moving on to other
things, and getting CSS2.1 out the door quicker.

In the course of making these lists, I've also found that another value
of them is that it helps us know what things we should be careful about
changing.  For example, if other modules are depending on CSS21 for the
definition of "element", then that impacts on our freedom to change that
term to mean something other than elements in the source document.

(For those who haven't been following, there were some steps taken late
in the CR period to have "element" include at least :before/:after
pseudo-elements and possibly also :first-letter/line pseudo-elements,
and possibly also certain anonymous text nodes (see 9.2.2.1 first para);
and to exclude display:none source elements and possibly also
display:table-column and display:table-column-group source elements
(see 17.2) and/or certain of their children (see 17.2.1).)


So far I've only looked through the following modules:

  css3-color
  css3-namespace
  css3-selectors
  mathml-for-css

In the following, "explicit normative reference" means a reference
accompanied by the string "[CSS21]" (or whatever label is used in the
Normative References section for CSS 2.1).

(Whereas the phrase "Noted in prose of css3-xxx" means anything written
 without an explicit [CSS21] marker.)


Here is the summary of the dependencies I've found in those documents,
sorted by section number in CSS2.1.  It's followed by a module-by-module
list, just for the convenience of people here who edit those modules.


Summary of references to CSS2.1, sorted by CSS2.1 section number:

  3.1: conform.html#defs:
    Explicit normative references from css3-selectors and css3-color.

    css3-selectors wants "element" to exclude :first-letter and
    :first-line for purposes of "*" (consider cumulative property values
    like bolder) or :first-child or :nth-child;
    but its use of "element" when describing comma assumes that "element"
    includes pseudo-elements.  (It would be safest if this text in
    css3-selectors were to mention pseudo-elements explicitly.)

    Some pseudo-classes like :hover probably change meaning depending
    on whether "element" includes pseudo-elements like :before and
    :first-line.

    As usual, it is unclear what "Applies to: all elements" means.
    Of particular concern is the 'opacity' property in css3-color,
    which affects stacking order, whereas CSS2.1 doesn't require
    'z-index' to apply to :first-line or :first-letter pseudo-elements.

    I haven't found any uses of "preceding element" or "following element"
    in these modules.
    [I mention "preceding element" and "following element" because the
     only use of these terms in CSS2.1 wants a different meaning than
     that given in conform.html.]

  3.1: conform.html#style-sheet
    Hyperlinks from css3-namespace and css3-text.

  3.1: conform.html#valid-style-sheet
    Hyperlink from css3-namespace.

  3.1: conform.html#ignore
    Hyperlinks from css3-namespace and css3-text.

  3.1: conform.html#user-agent
    Hyperlink from css3-namespace.


  4.1.1: "the generic CSS grammar":
    Mentioned in css3-text prose (without hyperlink or other form of
      reference).

  4.1.3: syndata.html#characters (escaping rules):
    Explicit normative reference in css3-selectors

  4.1.3: syndata.html#value-def-identifier
    Explicit normative reference in css3-selectors

  4.1.5: syndata.html#at-rules
    Hyperlinks from css3-namespace and css3-text.

  4.1.7: That rule sets with an invalid selector are completely ignored.
    Explicit normative reference in css3-namespace.

  4.2: Treatment of unrecognized property values
      [i.e. syndata.html#illegalvalues]:
    Explicit normative reference from css3-color.

  4.2: syndata.html#parsing-errors (informative note describing
      ignoring of unrecognized at-rules):
    Hyperlink from css3-namespace.

  4.3.2: syndata.html#value-def-length
    Hyperlink from css3-text.

  4.3.3: syndata.html#value-def-percentage
    Hyperlink from css3-text.

  4.3.5: syndata.html#counter (case-sensitiveness):
    Hyperlink from css3-namespace.

  4.3.7: syndata.html#strings
    Explicit normative reference in css3-selectors

  4.3.7: syndata.html#value-def-string
    Hyperlink from css3-text.


  5: set of selectors available:
    Various non-normative references from css3-selectors
    (see css3-selectors below for more detail).

  5: That CSS2.1 selectors cannot select based on element content.
    Noted in prose of mathml-for-css.

  5.12.1: selector.html#first-line-pseudo
    Hyperlink from css3-text (though only for the definition of
      "first formatted line")


  6.4.3: specificity of style attrs
    Explicit normative reference in css3-selectors


  7.3.1: media.html#interactive-media-group
    Hyperlink from css3-selectors [currently pointing to within REC-CSS2]


  8.5.1: box.html#border-width-properties
    Hyperlink from css3-text (not really a dependency, just an idea for
      how an issue might be resolved).

  8.5.2: That border-color in CSS2.1 can have value 'transparent':
    Noted in prose of css3-color.

  8.5.2: That the initial value of border-color properties is in effect
      currentColor, but that CSS2.1 has no currentColor value:
    Noted in prose of css3-color.


  9.1.1: visuren.html#viewport
    Hyperlink from css3-text.

  9.2.4: visuren.html#display-prop
    Hyperlink from css3-text (a dependency on the existence of
      'inline-block' and 'inline-table' values, though doesn't depend
      on the exact behaviour of either value)

  9.4.2: visuren.html#line-box
    Hyperlink from css3-text.

  9.9, E: Behaviour of 'z-index' property and description of stacking
      contexts (for purposes of defining interaction with 'opacity'):
    Explicit normative reference from css3-color.

  9.9: visuren.html#layers  (description of "parent stacking context"
      and stacking contexts generally):
    Hyperlink from css3-color.


  12.1: "[::before and ::after pseudo-elements] are explained in CSS 2.1."
    Explicit normative reference in css3-selectors


  16.4: 'letter-spacing' and 'word-spacing'
    Explicit normative reference from css3-text (for purposes of
      describing interaction with 'text-autospace').


  17: That mlabeledtr "does not fit in the CSS table model".
    Noted in prose of mathml-for-css.

  17.2.1: Possible dependency from mathml-for-css, see below.


  18.2: ui.html#system-colors  (existence of system colors):
    Hyperlink from css3-color.

  18.2: That CSS2 allows system color values:
    Noted in prose of css3-color (though the accompanying hyperlink is to
    within REC-CSS2).
    [Css3-color also refers to them as "CSS2 UI colors"; though that term
     appears not to appear anywhere in the current CSS2.1 working draft.]


  E: zindex.html  (stacking contexts, for purposes of explaining
      'opacity' behaviour):
    Hyperlink from css3-color.


  G.1, G.2: grammar.html (tokens, EBNF notation, implicit comments but
      explicit S):
    Explicit normative reference in css3-namespace.
    [Though there may be a mistake in the grammar regarding comments
     or S; I've just sent a message to www-style about this.]


  Possible others:

    mathml-for-css includes a suggested default stylesheet for MathML.
    Together with the claim in its introduction that MathML in the
    specified profile "should render well with currently implemented
    CSS up to CSS 2.1", this somewhat implies dependencies on CSS2.1
    features.  I haven't checked methodically what features the
    stylesheet uses, but it doesn't use :first-line, :first-letter or
    any list-related things; while it does use table-related display
    values (so might depend on 17.2.1, though I haven't tried to
    determine this).



Module-by-Module references & dependencies
------------------------------------------

css3-selectors:

  Explicit normative references:

    3.1: conform.html#defs (terminology definitions generally).

       It wants "element" to exclude :first-letter and :first-line for
       purposes of "*" (consider cumulative property values like bolder)
       or :first-child or :nth-child; but its use of "element" when
       describing comma assumes that "element" includes pseudo-elements.
       (It would be safest if this text in css3-selectors were to mention
       pseudo-elements explicitly.)

       Some pseudo-classes like :hover probably change meaning depending
       on whether "element" includes pseudo-elements like :before and
       :first-line.

       It doesn't use "preceding element" or "following element".

    4.1.3: syndata.html#characters (escaping rules)
    4.1.3: syndata.html#value-def-identifier
    4.3.7: syndata.html#strings
    6.4.3: specificity of style attrs
    12.1: "[::before and ::after pseudo-elements] are explained in CSS 2.1."

  Hyperlinks:

    7.3.1: media.html#interactive-media-group
      [currently pointing to within REC-CSS2]

  Other references:

    5: A non-normative "Changes from CSS2" section,
       and a non-normative statement of what selectors in css3-selectors
       are also part of CSS 2.1,
       and a non-normative example CSS level 2 selectors profile.

    5.8.1: Description of CSS2 attribute selectors [att], [att=val],
      [att~=val], [att|=val].



css3-namespace:

  Explicit normative references:

    G.1, G.2: grammar.html (tokens, EBNF notation, implicit comments but
      explicit S)
      [Though there may be a mistake in the grammar regarding comments
       or S; I've just sent a message to www-style about this.]

    4.1.7: That rule sets with an invalid selector are completely ignored.


  Hyperlinks:

    3.1: conform.html#ignore
    3.1: conform.html#valid-style-sheet
    3.1: conform.html#style-sheet
    3.1: conform.html#user-agent
    4.1.5: syndata.html#at-rules
    4.2: syndata.html#parsing-errors (informative note describing
      ignoring of unrecognized at-rules)
    4.3.5: syndata.html#counter (case-sensitiveness)


css3-color:

  Explicit normative references:

    3.1: conform.html#defs (terminology generally)

      As usual, it is unclear what "Applies to: all elements" means.
      Of particular concern is the 'opacity' property, which affects
      stacking order, whereas CSS2.1 doesn't require 'z-index' to apply
      to :first-line or :first-letter pseudo-elements.

    9.9, E: Behaviour of 'z-index' property and description of stacking
      contexts (for purposes of defining interaction with 'opacity').
    4.2: Treatment of unrecognized property values
      [i.e. syndata.html#illegalvalues].

  Hyperlinks:

    9.9: visuren.html#layers  (description of "parent stacking context"
      and stacking contexts generally)
    18.2: ui.html#system-colors  (describes existence of system colors)
    E: zindex.html  (stacking contexts, for purposes of explaining
      'opacity' behaviour)

  Other references:

    8.5.2: That border-color in CSS2.1 can have value 'transparent'.
    8.5.2: That the initial value of border-color properties is in effect
      currentColor, but that CSS2.1 has no currentColor value.
      [Actually the css3-color text uses the questionable wording of
      referring to the "initial value" of 'border-color' as if it were a
      real property.]

    18.2: That CSS2 (hyperlink to within REC-CSS2) allows system color values.
      [Also refers to them as "CSS2 UI colors"; though that term appears
       not to appear anywhere in the current CSS2.1 working draft.]


mathml-for-css:

  Explicit normative references:

    Essentially none.  (One historical note only.)

  Hyperlinks:
  
    None other than http://www.w3.org/TR/CSS21/ in the References section.

  Other references:

    5: That CSS2.1 selectors cannot select based on element content.
    17: That mlabeledtr "does not fit in the CSS table model".

    There is a suggested default stylesheet for MathML.  Together with 
    the claim in the introduction that MathML in the specified profile
    "should render well with currently implemented CSS up to CSS 2.1",
    this somewhat implies dependencies on CSS2.1 features.  I haven't
    checked methodically what features the stylesheet uses, but it
    doesn't use :first-line, :first-letter or any list-related things;
    while it does use table-related display values (so might depend
    on 17.2.1, though I haven't tried to determine this).


css3-text:

  Explicit normative reference(s):

    16.4: 'letter-spacing' and 'word-spacing' (for purposes of describing
      interaction with 'text-autospace')

  Hyperlinks:

    3.1: conform.html#ignore
    3.1: conform.html#style-sheet
    4.1.5: syndata.html#at-rules
    4.3.2: syndata.html#value-def-length
    4.3.3: syndata.html#value-def-percentage
    4.3.7: syndata.html#value-def-string
    5.12.1: selector.html#first-line-pseudo (but only for the definition
      of "first formatted line")
    8.5.1: box.html#border-width-properties (not a dependency, just an
      idea for how an issue might be resolved)
    9.1.1: visuren.html#viewport
    9.2.4: visuren.html#display-prop (existence of 'inline-block' and
      'inline-table' values, though doesn't depend on the exact behaviour
      of either value)
    9.4.2: visuren.html#line-box

  Other references:

    4.1.1: The prose mentions "the generic CSS grammar" (without
      hyperlink or other form of reference).


pjrm.

Received on Friday, 4 March 2011 15:55:46 UTC