Hi,
  This is in response to Hixie's article [1].

I fully agree that the both IE's incestual approach and Opera's genetic inheritance problem (though a well-formed tree) are out of the question. I like the Hiesenburg theory in some cases, although its lack of easy predictability is a big downfall. Safari's adoption-agency method is reasonable, although we'd need to find a way to avoid the Hindenburg disaster when the child is kidnapped during birth.

However, there may be a 5th option available. Consider this, using the following markup samples from the article.

1.
<em><p>X</em>Y</p>

BODY
  + P
    + EM
      + #text: X
    + #text: Y

The theory is that any inline elements started and not ended before a block element will immediately become a child of the block element, regardless of where the end tag for the inline element occurs. This avoids the Heisenburg uncertainty principle employed by Mozilla.

2.
<em><p>XY</p></em>

BODY
  + P
    + EM
      + #text: X
      + #text: Y

In this case, Mozilla would have had the <em> and <p> elements swapped (just like if this were a well formed XHTML document), but that requires some pre-parsing which I imagine would be a pain for incremental rendering.

3.
<em><p>X</p><p>Y</p></em>

BODY
  + P
    + EM
      + #text: X
  + P
    + EM
      + #text: Y

This is exactly the same as the last one, except there were two block level elements within the inline element, and as such, the inline element was cloned and each parent was given custody of one, which nicely avoids the time consuming and painful child custody hearings.

4.
<em>X<p>Y</em>Z</p>

BODY
  + EM
    + #text: X
  + P
    + EM
      + #text: Y
    + #text: Z

This is almost the same as the first example, except that there is a text node within the em element which is not a child of the p element. So, again the em element is cloned. The first becomes a parent of X, the second becomes the parent of Y, the child of P and the brother of Z.

I believe all of these trees meet the requirements of coherence with regards to the DOM, transparency with regards to CSS and, most certainly, predictability. It also seems perfectly backwards compatible with the rendering achieved in all browsers, but with a much saner DOM under the hood.

[1] http://ln.hixie.ch/?start=1138169545&count=1

--
Lachlan Hunt
http://lachy.id.au/

Reply via email to