- From: Ian Hickson <ian@hixie.ch>
- Date: Thu, 26 Jan 2006 20:44:19 +0000 (UTC)
On Thu, 26 Jan 2006, Mikko Rantalainen wrote: > > I think a simple way to parse what the author meant is to use just the > following rules: > > 1) An opening tag always starts a new element > 2) A matching closing tag closes the element > 3) A non-matching closing tag (top of the element stack > doesn't match with the closing tag) closes all still > open elements until a match is found. Exceptions for > this rule: > 3.1) There's no matching element in the stack. > The closing tag will be ignored. > 3.2) Closing tag is for inline element and closing > it would require closing a block-level element. > The closing tag will be ignored. > 4) At the end of file, all still open elements are closed. That is completely inadequate. It doesn't handle even the most basic of mis-nested tags in a compatible way, e.g.: <em> <div> XXX </em> XXX </div> > Applying these rules to example > <em><p><span><h1>X</em>Y</span>Z</h1></p> > gives us > > EM > + P > + SPAN > + H1 > + #text: XYZ > > which is about the same as Safari's interpretation. Unfortunately Safari's interpretation in this particular case is not compatible with IE/Mozilla/Opera. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Thursday, 26 January 2006 12:44:19 UTC