- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Thu, 20 Nov 2008 17:01:06 -0500
- To: public-html@w3.org
Mark Baker wrote:
> It would need to include the definition of the attributes, but most
> importantly a definition of what "select" means, like HTML 4 provides;
> "The SELECT element creates a menu". But sure, something like that.
Note that the text there was a direct quote from the section about the
<select> element in the current HTML5 draft. Also note that I snipped
exactly the things you're talking about here, to keep length down. The
section goes on like so:
The select element represents a control for selecting amongst a set
of options.
The multiple attribute is a boolean attribute. If the attribute is
present, then the select element represents a control for selecting
zero or more options from the list of options. If the attribute is
absent, then the select element represents a control for selecting a
single option from the list of options.
etc. This seems to me like exactly what you want, no?
>> Or is the objection just to the way the parsing algorithm is specified and
>> not to the descriptions of individual elements?
>
> It's both, to an extent. The parser and much of the language is
> defined in DOM terms.
Maybe I'm looking at a bad example here, but <select> certainly doesn't
seem to be defined in DOM terms (apart from its DOM interface, of
course). Should I be looking at some other element? I just picked
<select> because it's a sufficiently complex and interesting one that
there _might_ have been DOM involved. Something like <div> is even more
clear-cut. Here's the full section on <div>:
4.12.2 The div element
Categories
Flow content.
Contexts in which this element may be used:
Where flow content is expected.
Content model:
Flow content.
Element-specific attributes:
None.
DOM interface:
Uses HTMLElement.
The div element represents nothing at all. It can be used with the
class, lang/xml:lang, and title attributes to mark up semantics
common to a group of consecutive elements.
Allowing div elements to contain phrasing content makes it easy for
authors to abuse div, using it with the class="" attribute to the
point of not having any other elements in the markup. This is a
disaster from an accessibility point of view, and it would be nice if
we could somehow make such pages non-compliant without preventing
people from using divs as the extension mechanism that they are, to
handle things the spec can't otherwise do (like making new widgets).
> I haven't had a detailed enough look at the
> parser to know if the DOM gets in the way though, or if it can simply
> be used as an abstract model as the spec says ("Implementations that
> do not support scripting do not have to actually create a DOM Document
> object, but the DOM tree in such cases is still used as the model for
> the rest of the specification.").
There are at least two HTML5 parser implementations that do not use a
DOM: html5lib and Henri's validator.
> But I'm still wary of using an implemented model as an abstract
> one, lest nuances of the various implementations result in differing
> interpretations of the specification.
The DOM _is_ an abstract (language-agnostic, etc, etc) model, though.
It's not like we're defining things in terms of a particular DOM
implementation here, but in terms of fairly abstract DOM concepts like
"parent", "first child", "list of children", "localName", "namespace",
and so forth...
I guess the upshot it seems to me like the definitions of the elements
are already what you want: prose that describes what the element and its
various attributes mean, together with information, by reference, about
what other elements it's allowed to contain in valid documents and where
it's allowed to be placed in valid documents. These last two are much
the same information as that contained in the HTML4 spec in much less
human-readable DTD form. If there are exceptions to this setup, I'd
love to know what they are.
-Boris
Received on Thursday, 20 November 2008 22:05:52 UTC