W3C home > Mailing lists > Public > whatwg@whatwg.org > November 2011

[whatwg] Declarative Inert DOM (e.g. the <template> element)

From: Rafael Weinstein <rafaelw@chromium.org>
Date: Thu, 17 Nov 2011 14:22:31 -0800
Message-ID: <CABMdHiTbBiZqOv38hS8fH1BQt=-arsNc+1rAvevtg6c0KtGaDQ@mail.gmail.com>
On Thu, Nov 17, 2011 at 12:50 PM, Tab Atkins Jr. <jackalmage at gmail.com> wrote:
> On Thu, Nov 17, 2011 at 11:15 AM, Rafael Weinstein <rafaelw at chromium.org> wrote:
>> For parsing, the template element's contents are treated as HTML, but
>> aren't subjected to normalization or placement/lifting rules.
> For the placement/lifting rules, we can ride on the coattails of the
> innerHTML parsing discussion, which wants to add a "null context"
> parsing mode to the HTML parser.
> What's the reasoning for not doing attribute normalization? ?By that I
> assume you mean translating boolean attributes into having their name
> as their value?

Many inert declarations will contain text in content attributes which
represent future replacement instructions. E.g.

<input tabIndex="{{ foo.bar.tabIndex }}">

Note that I'm picking an arbitrary replacement syntax here. Different
template libraries or uses of inert DOM will have different syntax.
The key is that the inert DOM is parse-able as HTML, but that the
contents of attributes and text nodes are left alone while the
elements are in the inert state (kept verbatim in the attribute map)

I think it's an expectable trade-off for all uses that their
replacement syntax can't interfere with HTML parsing, as what they get
from this is quite a bit of convenience and safety.

>> Big question: by what mechanism are these elements inert?
> I like Adam's suggestion of a new document without a browsing context.
> ?You can still move the elements into the active document and have
> them "just work", and all the other issues are taken care of "for
> free".

I think that would be a fine solution. When I discussed this with
various folks, that option came up as well, but some were concerned
that a document might too heavy weight.

Keep in mind that pages may have *many* <template> declarations. I'd
expect a sophisticated page/app to have template declarations the
hundreds if not thousands.

> ~TJ
Received on Thursday, 17 November 2011 14:22:31 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:37 UTC