On Tue, Dec 30, 2008 at 1:54 PM, Ian Hickson <ian@hixie.ch> wrote: > > On Tue, 30 Dec 2008, Julian Reschke wrote: >> >> > Furthermore, not ever introducing new void elements is hardly a fix to >> > the problem of not being able to introduce new void elements! >> >> The problem is *not* the inability to introduce them. The problem is the >> inability of producers and consumers to decide which syntax to use for >> unknown elements. > > I don't understand. Producers know which syntax to use because the spec > very precisely defines the exact syntax to use in the "Writing HTML > documents" section, and consumers know how to process this syntax because > of the very precise rules in the "Parsing HTML documents" section. > > What's the problem? The problem that I see (which may or may not be the same one as Julian is trying to solve) is one of forwards compatible parsing. I.e. say that 5 years from now we develop HTML6 which introduces a void <killswitch> element (which would destroy your enemies using some kind of evil doomsday device, oh yes). 2 years later Firefox 5 comes out as the first browser to support this newfangled <killswitch> element, including parsing it as a void element. At this point a developer that wants to write a page that uses this element runs into a problem. Using the proper markup will work fine in Firefox 5, however any other browser will create a DOM which nests a pile of elements inside the <killswitch>. This makes it hard to work with such a page as you have to always take two possible DOMs into account, for example when walking the DOM tree or when applying CSS. For example "killswitch { display: none }" would be very bad in any browser other than Firefox 5. If we instead allowed the <killswitch/> syntax, all browsers would produce the same DOM making them easier to work with. I *think* void elements is the only thing destroying the ability to have forwards compatible parsing right now. If I understand the parsing algorithm correctly newly introduced block level elements would only produce a different DOM for invalid markup. I.e. markup like <i><new-block-element>hello</new-block-element></i> would produce the same DOM in all browsers, but <i><new-block-element>hello</i>hi</new-block-element> would produce different DOMs depending on if <new-block-element> is recognized as a block-level element or not. Please correct me if I'm wrong. I actually think it would be great to support the ending-slash syntax for all elements in HTML5. I have several times ended up writing things like <div id=foo></div>, and having it consistently supported in both HTML mode and foreign content mode would actually reduce the differences between them which I think is a great thing. I have heard of some real world pages that would break if the empty element syntax was supported everywhere, however I wonder if it's many enough that we need to adjust HTML to accommodate them. / JonasReceived on Wednesday, 31 December 2008 00:36:49 GMT
This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:40:25 GMT