- From: Simon Pieters <simonp@opera.com>
- Date: Fri, 25 May 2012 09:32:28 +0200
- To: "Webapps WG" <public-webapps@w3.org>, "Rafael Weinstein" <rafaelw@google.com>
On Fri, 25 May 2012 09:01:43 +0200, Rafael Weinstein <rafaelw@google.com> wrote: > Ok, so from consensus on earlier threads, here's the full API & > semantics. > > Now's the time to raise objections to UA's adding support for this > feature. > > ----- > > 1) The Document interface is extended to include a new method: > > DocumentFragment parse (DOMString markup); > > which: > -Invokes the fragment parsing algorithm with markup and an empty > context element, > -Unmarks all scripts in the returned fragment node as "already started" > -Returns the fragment node > > 2) The fragment parsing algorithm's context element is now optional. > > It's behavior is similar to the case of a known context element, but > the tokenizer is simply set to the data state > > 3) Resetting the insertion appropriately now sets the mode to "Implied > Context" if parsing a fragment and no context element is set, and > aborts. > > 4) A new "Implied Context" insertion mode is defined which > > -Ignores doctype, end tag tokens > -Handles comment & character tokens as if "in body" > -Handles the following start tags as if "in body" (which is as if "in > head"): <style>, <script>, <link>, <meta> > -Handles any other start tag by selecting a context element, resetting > the insertion mode appropriately and reprocessing the token. > > 5) A new "selecting a context element" algorithm is defined which > takes a start tag as input and outputs an element. The element's > identity is as follows: > > -If start tag is tbody, thead, tfoot, caption or colgroup > return <table> > -if start tag is tr, > return <tbody> > -if start tag is col > return <colgroup> > -if start tag is td or td > return <tr> > -if start tag is head or body > return <html> > -if start tag is rp or rt > return <ruby> I think <ruby> is better handled by always making <rp> and <rt> generate implied end tags in the fragment case (maybe even when parsing normally, too). Making the context element <ruby> still doesn't make <rt> parse right, because the spec currently looks for ruby on the *stack* (and the context element isn't on the stack). Also, the ruby base is allowed to include markup, so this would fail: ruby.appendChild(document.parse('<span>foo</span><rt>bar<rt>baz')); > -if start tag is a defined SVG localName (case insensitive) > return <svg> Except those that conflict with HTML? > -if start tag is a defined MathML localName (case insensitive) > return <math> (Making the context element svg or math doesn't do anything currently: https://www.w3.org/Bugs/Public/show_bug.cgi?id=16635 ) > -otherwise, return <body> -- Simon Pieters Opera Software
Received on Friday, 25 May 2012 07:32:41 UTC