A closed system cannot be all things to all people
Three main approaches:
Example: prototyping HTML5 concepts
Competing design goals:
How to support all of these?
Everything within the arrows is HTML

We don't have generated content yet…
but maybe we can use other mechanisms?
<overlay> <modify selector="head" where="after"> <self> <style> li > span { margin-right: 1em; } li > span { color: red; } li li > span { color: blue; } </style> </self> </modify> <modify selector="li" where="before"> <self> <span>•</span> </self> </modify> </overlay>
Many advantages:
Given our single tree for both JS and internal use, what do DOM APIs look like?
JS:
var aNode = document.getElementById("id"); document.body.appendChild(aNode);
C#:
var aNode = aDoc.GetElementById("id"); aDoc.Body.AppendChild(aNode);
Equally easy to program websites or the browser!