W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2011

Re: HTML element content models vs. components

From: Dimitri Glazkov <dglazkov@chromium.org>
Date: Wed, 28 Sep 2011 11:12:40 -0700
Message-ID: <CADh5Ky0tfHYcpjPgTcips+ErCPCJnQMSajYSho_-mD2xznOh8A@mail.gmail.com>
To: Dominic Cooney <dominicc@chromium.org>
Cc: Roland Steiner <rolandsteiner@chromium.org>, WebApps WG <public-webapps@w3.org>, Ian Hickson <ian@hixie.ch>
On Tue, Sep 27, 2011 at 11:53 PM, Dominic Cooney <dominicc@chromium.org> wrote:
>
> On Wed, Sep 28, 2011 at 3:39 PM, Roland Steiner
> <rolandsteiner@chromium.org> wrote:
> > Expanding on the general web component discussion, one area that hasn't been
> > touched on AFAIK is how components fit within the content model of HTML
> > elements.
> > Take for example a list
> > (http://www.whatwg.org/specs/web-apps/current-work/multipage/grouping-content.html#the-ul-element):
> > <ol> and <ul> have "Zero or more <li> elements" as content model, while <li>
> > is specified to only be usable within <ol>, <ul> and <menu>.
> > Now it is not inconceivable that someone would like to create a component
> > <x-li> that acts as a list item, but expands on it. In order to allow this,
> > the content model for <ol>, <ul>, <menu> would need to be changed to
> > accomodate this. I can see this happening in a few ways:
> >
> > A.) allow elements derived from a certain element to always take their place
> > within element content models.
> > In this case, only components whose host element is derived from <li> would
> > be allowed within <ol>, <ul>, <menu>, whether or not it is rendered (q.v.
> > the "Should the shadow host element be rendered?" thread on this ML).
> >
> > B.) allow all components within all elements.
> > While quite broad, this may be necessary in case the host element isn't
> > rendered and perhaps derivation isn't used. Presumably the shadow DOM in
> > this case contains one - or even several - <li> elements as topmost elements
> > in the tree.
> >
> > C.) Just don't allow components to be used in places that have a special
> > content model.
>
> I prefer this one, because:
>
> 1. It is very simple.
>
> 2. It discourages people from using components in cases already handled by HTML.

+1 as a first step. We can start with this and see how authors react.
I suspect that without actual running code and people trying things
out, we could be debating this for a very long time :)

Also, the "content model" is a bit of a loaded term. It's only about
what browsers actually do. IRL, it's perfectly ok to plop an <li>
element anywhere in your DOM tree. The only special-casing logic that
HTMLLiElement has is to deal with the rendering, as Morrita-san
already pointed out
(http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/html/HTMLLIElement.cpp).
This is not the case for all elements though. And we won't weed out
all edge cases by principled studying. We gotta start simple and let
peeps run code! :)

:DG<
Received on Wednesday, 28 September 2011 18:13:13 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:47 GMT