Browse files

[] (0) Remove data templates and repetition templates.

git-svn-id: http://svn.whatwg.org/webapps@2319 340c8d12-0b0e-0410-8428-c7bf67bfef74
  • Loading branch information...
1 parent e7d96a8 commit 9afc7040d873a6ff2ffa89271dcd5add797edbcf @Hixie Hixie committed Oct 10, 2008
Showing with 24 additions and 1,668 deletions.
  1. +24 −769 index
  2. +0 −899 source
View
793 index
@@ -601,26 +601,10 @@
<li><a href=#using-the-command-element-to-define-a-command><span class=secno>4.11.6.5 </span>Using the <code>command</code> element to define
a command</a></li>
<li><a href=#using-the-bb-element-to-define-a-command><span class=secno>4.11.6.6 </span>Using the <code>bb</code> element to define a command</a></ol></ol></li>
- <li><a href=#datatemplate><span class=secno>4.12 </span>Data Templates</a>
+ <li><a href=#miscellaneous-elements><span class=secno>4.12 </span>Miscellaneous elements</a>
<ol>
- <li><a href=#introduction-0><span class=secno>4.12.1 </span>Introduction</a></li>
- <li><a href=#the-datatemplate-element><span class=secno>4.12.2 </span>The <code>datatemplate</code> element</a></li>
- <li><a href=#the-rule-element><span class=secno>4.12.3 </span>The <code>rule</code> element</a></li>
- <li><a href=#the-nest-element><span class=secno>4.12.4 </span>The <code>nest</code> element</a></li>
- <li><a href=#global-attributes-for-data-templates><span class=secno>4.12.5 </span>Global attributes for data templates</a></li>
- <li><a href=#processing-model-1><span class=secno>4.12.6 </span>Processing model</a>
- <ol>
- <li><a href=#the-originalcontent-dom-attribute><span class=secno>4.12.6.1 </span>The <code title=dom-originalContent>originalContent</code> DOM
- attribute</a></li>
- <li><a href=#the-template-attribute><span class=secno>4.12.6.2 </span>The <code title=attr-template>template</code> attribute</a></li>
- <li><a href=#the-ref-attribute><span class=secno>4.12.6.3 </span>The <code title=attr-ref>ref</code> attribute</a></li>
- <li><a href=#the-nodedatatemplate-interface><span class=secno>4.12.6.4 </span>The <code>NodeDataTemplate</code> interface</a></li>
- <li><a href=#mutations><span class=secno>4.12.6.5 </span>Mutations</a></li>
- <li><a href=#updating-the-generated-content><span class=secno>4.12.6.6 </span>Updating the generated content</a></ol></ol></li>
- <li><a href=#miscellaneous-elements><span class=secno>4.13 </span>Miscellaneous elements</a>
- <ol>
- <li><a href=#the-legend-element><span class=secno>4.13.1 </span>The <code>legend</code> element</a></li>
- <li><a href=#the-div-element><span class=secno>4.13.2 </span>The <code>div</code> element</a></ol></ol></li>
+ <li><a href=#the-legend-element><span class=secno>4.12.1 </span>The <code>legend</code> element</a></li>
+ <li><a href=#the-div-element><span class=secno>4.12.2 </span>The <code>div</code> element</a></ol></ol></li>
<li><a href=#browsers><span class=secno>5 </span>Web browsers</a>
<ol>
<li><a href=#windows><span class=secno>5.1 </span>Browsing contexts</a>
@@ -672,15 +656,15 @@
<li><a href=#sample-handler-impl><span class=secno>5.6.2.2 </span>Sample user interface</a></ol></ol></li>
<li><a href=#offline><span class=secno>5.7 </span>Offline Web applications</a>
<ol>
- <li><a href=#introduction-1><span class=secno>5.7.1 </span>Introduction</a></li>
+ <li><a href=#introduction-0><span class=secno>5.7.1 </span>Introduction</a></li>
<li><a href=#appcache><span class=secno>5.7.2 </span>Application caches</a></li>
<li><a href=#manifests><span class=secno>5.7.3 </span>The cache manifest syntax</a>
<ol>
<li><a href=#a-sample-manifest><span class=secno>5.7.3.1 </span>A sample manifest</a></li>
<li><a href=#writing-cache-manifests><span class=secno>5.7.3.2 </span>Writing cache manifests</a></li>
<li><a href=#parsing-cache-manifests><span class=secno>5.7.3.3 </span>Parsing cache manifests</a></ol></li>
<li><a href=#updating-an-application-cache><span class=secno>5.7.4 </span>Updating an application cache</a></li>
- <li><a href=#processing-model-2><span class=secno>5.7.5 </span>Processing model</a>
+ <li><a href=#processing-model-1><span class=secno>5.7.5 </span>Processing model</a>
<ol>
<li><a href=#changesToNetworkingModel><span class=secno>5.7.5.1 </span>Changes to the networking model</a></ol></li>
<li><a href=#application-cache-api><span class=secno>5.7.6 </span>Application cache API</a></li>
@@ -710,7 +694,7 @@
<ol>
<li><a href=#storage><span class=secno>5.10.1 </span>Storing name/value pairs</a>
<ol>
- <li><a href=#introduction-2><span class=secno>5.10.1.1 </span>Introduction</a></li>
+ <li><a href=#introduction-1><span class=secno>5.10.1.1 </span>Introduction</a></li>
<li><a href=#the-storage-interface><span class=secno>5.10.1.2 </span>The <code>Storage</code> interface</a></li>
<li><a href=#the-sessionstorage-attribute><span class=secno>5.10.1.3 </span>The <code title=dom-sessionStorage>sessionStorage</code> attribute</a></li>
<li><a href=#the-localstorage-attribute><span class=secno>5.10.1.4 </span>The <code title=dom-localStorage>localStorage</code> attribute</a></li>
@@ -720,12 +704,12 @@
<li><a href=#threads><span class=secno>5.10.1.6 </span>Threads</a></ol></li>
<li><a href=#sql><span class=secno>5.10.2 </span>Database storage</a>
<ol>
- <li><a href=#introduction-3><span class=secno>5.10.2.1 </span>Introduction</a></li>
+ <li><a href=#introduction-2><span class=secno>5.10.2.1 </span>Introduction</a></li>
<li><a href=#databases><span class=secno>5.10.2.2 </span>Databases</a></li>
<li><a href=#executing-sql-statements><span class=secno>5.10.2.3 </span>Executing SQL statements</a></li>
<li><a href=#database-query-results><span class=secno>5.10.2.4 </span>Database query results</a></li>
<li><a href=#errors><span class=secno>5.10.2.5 </span>Errors</a></li>
- <li><a href=#processing-model-3><span class=secno>5.10.2.6 </span>Processing model</a></ol></li>
+ <li><a href=#processing-model-2><span class=secno>5.10.2.6 </span>Processing model</a></ol></li>
<li><a href=#disk-space><span class=secno>5.10.3 </span>Disk space</a></li>
<li><a href=#privacy><span class=secno>5.10.4 </span>Privacy</a>
<ol>
@@ -796,7 +780,7 @@
<li><a href=#making-entire-documents-editable><span class=secno>6.7.2 </span>Making entire documents editable</a></ol></li>
<li><a href=#dnd><span class=secno>6.8 </span>Drag and drop</a>
<ol>
- <li><a href=#introduction-4><span class=secno>6.8.1 </span>Introduction</a></li>
+ <li><a href=#introduction-3><span class=secno>6.8.1 </span>Introduction</a></li>
<li><a href=#the-dragevent-and-datatransfer-interfaces><span class=secno>6.8.2 </span>The <code>DragEvent</code> and <code>DataTransfer</code> interfaces</a></li>
<li><a href=#events-fired-during-a-drag-and-drop-action><span class=secno>6.8.3 </span>Events fired during a drag-and-drop action</a></li>
<li><a href=#drag-and-drop-processing-model><span class=secno>6.8.4 </span>Drag-and-drop processing model</a>
@@ -850,7 +834,7 @@
<li><a href=#closing-the-connection><span class=secno>7.3.4.3 </span>Closing the connection</a></ol></ol></li>
<li><a href=#crossDocumentMessages><span class=secno>7.4 </span>Cross-document messaging</a>
<ol>
- <li><a href=#introduction-5><span class=secno>7.4.1 </span>Introduction</a></li>
+ <li><a href=#introduction-4><span class=secno>7.4.1 </span>Introduction</a></li>
<li><a href=#security-4><span class=secno>7.4.2 </span>Security</a>
<ol>
<li><a href=#authors><span class=secno>7.4.2.1 </span>Authors</a></li>
@@ -860,7 +844,7 @@
<li><a href=#posting-structured-data><span class=secno>7.4.5 </span>Posting structured data</a></ol></li>
<li><a href=#channel-messaging><span class=secno>7.5 </span>Channel messaging</a>
<ol>
- <li><a href=#introduction-6><span class=secno>7.5.1 </span>Introduction</a></li>
+ <li><a href=#introduction-5><span class=secno>7.5.1 </span>Introduction</a></li>
<li><a href=#message-channels><span class=secno>7.5.2 </span>Message channels</a></li>
<li><a href=#message-ports><span class=secno>7.5.3 </span>Message ports</a>
<ol>
@@ -1257,11 +1241,6 @@
client.</dd>
- <dt><a href=#datatemplate>Data Templates</a></dt>
-
- <dd>A mechanism to support repeating sections in forms.</dd>
-
-
<dt><a href=#syntax>The Language Syntax</a></dt>
<dd>All of these features would be for naught if they couldn't be
@@ -6004,14 +5983,6 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E..
// <span>styling</span>
readonly attribute <span>CSSStyleDeclaration</span> <a href=#dom-style title=dom-style>style</a>;
- // <span>data templates</span>
- attribute DOMString <a href=#dom-template title=dom-template>template</a>;
- readonly attribute <span>HTMLDataTemplateElement</span> <a href=#dom-templateelement title=dom-templateElement>templateElement</a>;
- attribute DOMString <a href=#dom-ref title=dom-ref>ref</a>;
- readonly attribute Node <a href=#dom-refnode title=dom-refNode>refNode</a>;
- attribute DOMString <a href=#dom-registrationmark title=dom-registrationMark>registrationMark</a>;
- readonly attribute DocumentFragment <a href=#dom-originalcontent title=dom-originalContent>originalContent</a>;
-
// <a href=#event-handler-dom-attributes>event handler DOM attributes</a>
attribute <span>EventListener</span> <a href=#handler-onabort title=handler-onabort>onabort</a>;
attribute <span>EventListener</span> <a href=#handler-onbeforeunload title=handler-onbeforeunload>onbeforeunload</a>;
@@ -6072,11 +6043,10 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E..
<dd><code title=attr-id><a href=#the-id-attribute>id</a></code></dd>
<dd><code title=attr-hidden><a href=#the-hidden-attribute>hidden</a></code></dd>
<dd><code title=attr-lang><a href=#the-lang-and-xml:lang-attributes>lang</a></code></dd>
- <dd><code title=attr-ref><a href=#attr-ref>ref</a></code></dd>
- <dd><code title=attr-registrationmark><a href=#attr-registrationmark>registrationmark</a></code></dd>
+ <dd><code title=attr-ref>ref</code></dd>
+ <dd><code title=attr-registrationmark>registrationmark</code></dd>
<dd><code title=attr-style><a href=#the-style-attribute>style</a></code></dd>
<dd><code title=attr-tabindex><a href=#attr-tabindex>tabindex</a></code></dd>
- <dd><code title=attr-template><a href=#attr-template>template</a></code></dd>
<dd><code title=attr-title><a href=#the-title-attribute>title</a></code></dd>
</dl><p>In addition, the following <a href=#event-handler-content-attributes>event handler content
attributes</a> may be specified on any <span>HTML
@@ -30809,718 +30779,9 @@ menu li:not(:first-child)::before { content: ' | '; }</pre>
+ <h3 id=miscellaneous-elements><span class=secno>4.12 </span>Miscellaneous elements</h3>
- <h3 id=datatemplate><span class=secno>4.12 </span>Data Templates</h3>
-
- <h4 id=introduction-0><span class=secno>4.12.1 </span>Introduction</h4>
-
- <p><em>This section is non-normative.</em></p>
-
- <p class=XXX>...examples...</p>
-
-
- <h4 id=the-datatemplate-element><span class=secno>4.12.2 </span>The <dfn><code>datatemplate</code></dfn> element</h4>
-
- <dl class=element><dt>Categories</dt>
- <dd><a href=#metadata-content-0>Metadata content</a>.</dd>
- <dd><a href=#flow-content-0>Flow content</a>.</dd>
- <dt>Contexts in which this element may be used:</dt>
- <dd>As the root element of an <a href=#xml-documents title="xml documents">XML document</a>.</dd>
- <dd>Where <a href=#metadata-content-0>metadata content</a> is expected.</dd>
- <dd>Where <a href=#flow-content-0>flow content</a> is expected.</dd>
- <dt>Content model:</dt>
- <dd>Zero or more <code><a href=#the-rule-element>rule</a></code> elements.</dd>
- <dt>Element-specific attributes:</dt>
- <dd>None.</dd>
- <dt>DOM interface:</dt>
- <dd>Uses <code><a href=#htmlelement>HTMLElement</a></code>.</dd>
- </dl><p>The <code><a href=#the-datatemplate-element>datatemplate</a></code> element brings together the various
- rules that form a data template. The element doesn't itself do
- anything exciting.</p>
-
-
- <h4 id=the-rule-element><span class=secno>4.12.3 </span>The <dfn><code>rule</code></dfn> element</h4>
-
- <dl class=element><dt>Categories</dt>
- <dd>None.</dd>
- <dt>Contexts in which this element may be used:</dt>
- <dd>As a child of a <code><a href=#the-datatemplate-element>datatemplate</a></code> element.</dd>
- <dt>Content model:</dt>
- <dd>Anything, regardless of the children's required contexts (but see prose).</dd>
- <dt>Element-specific attributes:</dt>
- <dd><code title=attr-rule-condition><a href=#attr-rule-condition>condition</a></code></dd>
- <dd><code title=attr-rule-mode><a href=#attr-rule-mode>mode</a></code></dd>
- <dt>DOM interface:</dt>
- <dd>
-<pre class=idl>interface <dfn id=htmlruleelement>HTMLRuleElement</dfn> : <a href=#htmlelement>HTMLElement</a> {
- attribute DOMString <a href=#dom-rule-condition title=dom-rule-condition>condition</a>;
- attribute DOMString <a href=#dom-rule-mode title=dom-rule-mode>mode</a>;
- readonly attribute DOMTokenString <a href=#dom-rule-modelist title=dom-rule-modeList>modeList</a>;
-};</pre>
- </dd>
- </dl><p>The <code><a href=#the-rule-element>rule</a></code> element represents a template of content
- that is to be used for elements when <a href=#datatemplate-regen title=datatemplate-regen>updating an element's generated
- content</a>.</p>
-
- <p>The <dfn id=attr-rule-condition title=attr-rule-condition><code>condition</code></dfn>
- attribute, if specified, must contain a valid selector. It specifies
- which nodes in the data tree will have the condition's template
- applied. <a href=#refsSELECTORS>[SELECTORS]</a></p>
-
- <p>If the <code title=attr-rule-condition><a href=#attr-rule-condition>condition</a></code>
- attribute is not specified, then the condition applies to all
- elements, text nodes, <code>CDATASection</code> nodes, and
- processing instructions.</p>
-
- <p>The <dfn id=attr-rule-mode title=attr-rule-mode><code>mode</code></dfn>
- attribute, if specified, must have a value that is an
- <a href=#unordered-set-of-unique-space-separated-tokens>unordered set of unique space-separated tokens</a>
- representing the various modes for which the rule applies. When, and
- only when, the <code title=attr-rule-mode><a href=#attr-rule-mode>mode</a></code> attribute is
- omitted, the rule applies if and only if the mode is the empty
- string. A mode is invoked by the <code><a href=#the-nest-element>nest</a></code> element; for the
- first node (the root node) of the data tree, the mode is the empty
- string.</p>
-
- <p>The contents of <code><a href=#the-rule-element>rule</a></code> elements form a template, and
- may be anything that, when the parent <code><a href=#the-datatemplate-element>datatemplate</a></code> is
- applied to some conforming data, results in a conforming DOM
- tree.</p> <!-- XXX examples of conforming and non-conforming rules
- -->
-
- <p>The <dfn id=dom-rule-condition title=dom-rule-condition><code>condition</code></dfn>
- DOM attribute must <a href=#reflect>reflect</a> the <code title=attr-rule-condition><a href=#attr-rule-condition>condition</a></code> content attribute.</p>
-
- <p>The <dfn id=dom-rule-mode title=dom-rule-mode><code>mode</code></dfn> and <dfn id=dom-rule-modelist title=dom-rule-modeList><code>modeList</code></dfn> DOM attributes
- must <a href=#reflect>reflect</a> the <code title=attr-rule-mode><a href=#attr-rule-mode>mode</a></code> content
- attribute.</p>
-
-
- <h4 id=the-nest-element><span class=secno>4.12.4 </span>The <dfn><code>nest</code></dfn> element</h4>
-
- <dl class=element><dt>Categories</dt>
- <dd>None.</dd>
- <dt>Contexts in which this element may be used:</dt>
- <dd>As a child of a descendant of a <code><a href=#the-rule-element>rule</a></code> element, regardless of the element's content model.</dd>
- <dt>Content model:</dt>
- <dd>Empty.</dd>
- <dt>Element-specific attributes:</dt>
- <dd><code title=attr-nest-filter><a href=#attr-nest-filter>filter</a></code></dd>
- <dd><code title=attr-nest-mode><a href=#attr-nest-mode>mode</a></code></dd>
- <dt>DOM interface:</dt>
- <dd>
-<pre class=idl>interface <dfn id=htmlnestelement>HTMLNestElement</dfn> : <a href=#htmlelement>HTMLElement</a> {
- attribute DOMString <a href=#dom-nest-filter title=dom-nest-filter>filter</a>;
- attribute DOMString <a href=#dom-nest-mode title=dom-nest-mode>mode</a>;
-};</pre>
- </dd>
- </dl><p>The <code><a href=#the-nest-element>nest</a></code> element represents a point in a template
- where the user agent should recurse and start inserting the children
- of the data node that matches the <code><a href=#the-rule-element>rule</a></code> in which the
- <code><a href=#the-nest-element>nest</a></code> element finds itself.</p>
-
- <p>The <dfn id=attr-nest-filter title=attr-nest-filter><code>filter</code></dfn>
- attribute, if specified, must contain a valid selector. It specifies
- which of the child nodes in the data tree will be examined for
- further processing at this point. <a href=#refsSELECTORS>[SELECTORS]</a></p>
-
- <p>If the <code title=attr-nest-filter><a href=#attr-nest-filter>filter</a></code> attribute is
- not specified, then all elements, text nodes,
- <code>CDATASection</code> nodes, and processing instructions are
- processed.</p>
-
- <p>The <dfn id=attr-nest-mode title=attr-nest-mode><code>mode</code></dfn>
- attribute, if specified, must have a value that is a word token
- consisting of one or more characters, none of which are <a href=#space-character title="space character">space characters</a>. It gives the mode
- which will be in effect when looking at the rules in the data
- template.</p>
-
- <p>The <dfn id=dom-nest-filter title=dom-nest-filter><code>filter</code></dfn> DOM
- attribute must <a href=#reflect>reflect</a> the <code title=attr-nest-filter><a href=#attr-nest-filter>filter</a></code> content attribute.</p>
-
- <p>The <dfn id=dom-nest-mode title=dom-nest-mode><code>mode</code></dfn> DOM
- attribute must <a href=#reflect>reflect</a> the <code title=attr-nest-mode><a href=#attr-nest-mode>mode</a></code> content attribute.</p>
-
-
-
-
- <h4 id=global-attributes-for-data-templates><span class=secno>4.12.5 </span>Global attributes for data templates</h4>
- <!-- authoring side, with DOM reflections -->
-
- <p>The <dfn id=attr-template title=attr-template><code>template</code></dfn>
- attribute may be added to an element to indicate that the template
- processing model is to be applied to that element.</p>
-
- <p>The <code title=attr-template><a href=#attr-template>template</a></code> attribute, when
- specified, must be a <a href=#valid-url>valid URL</a> to an XML or HTML
- document, or a fragment identifier pointing at another part of the
- document. If there is a fragment identifier present, then the
- element with that ID in the target document must be a
- <code><a href=#the-datatemplate-element>datatemplate</a></code> element, otherwise, the root element must
- be a <code><a href=#the-datatemplate-element>datatemplate</a></code> element.</p>
-
- <p>The <dfn id=dom-template title=dom-template><code>template</code></dfn> DOM
- attribute must <a href=#reflect>reflect</a> the <code title=attr-template><a href=#attr-template>template</a></code> content attribute.</p>
-
-
- <p>The <dfn id=attr-ref title=attr-ref><code>ref</code></dfn> attribute may be
- specified on any element on which the <code title=attr-template><a href=#attr-template>template</a></code> attribute is specified. If it
- is specified, it must be a <a href=#valid-url>valid URL</a> to an XML or HTML
- document, or a fragment identifier pointing at another part of the
- document.</p>
-
- <p>When an element has a <code title=attr-template><a href=#attr-template>template</a></code>
- attribute but no <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute, the
- element may, instead of its usual content model, have a single
- element of any kind. That element is then used as the root node of
- the data for the template.</p>
-
- <p>The <dfn id=dom-ref title=dom-ref><code>ref</code></dfn> DOM
- attribute must <a href=#reflect>reflect</a> the <code title=attr-ref><a href=#attr-ref>ref</a></code> content attribute.</p>
-
-
- <p>The <dfn id=attr-registrationmark title=attr-registrationmark><code>registrationmark</code></dfn>
- attribute may be specified on any element that is a descendant of a
- <code><a href=#the-rule-element>rule</a></code> element, except <code><a href=#the-nest-element>nest</a></code> elements. Its
- value may be any string, including the empty string (which is the
- value that is assumed if the attribute is omitted). This attribute
- performs a role similar to registration marks in printing presses:
- when the generated content is regenerated, elements with the same
- <code title=attr-registrationmark><a href=#attr-registrationmark>registrationmark</a></code> are
- lined up. This allows the author to disambiguate how elements should
- be moved around when generated content is regenerated in the face of
- changes to the data tree.</p>
-
- <p>The <dfn id=dom-registrationmark title=dom-registrationMark><code>registrationMark</code></dfn> DOM
- attribute must <a href=#reflect>reflect</a> the <code title=attr-registrationmark><a href=#attr-registrationmark>registrationmark</a></code> content
- attribute.</p>
-
-
-
- <h4 id=processing-model-1><span class=secno>4.12.6 </span>Processing model</h4>
- <!-- ua side -->
-
- <p>The <a href=#task-source>task source</a> for all <a href=#concept-task title=concept-task>tasks</a> <a href=#queue-a-task title="queue a
- task">queued</a> by algorithms in this section and its
- subsections is the <dfn id=template-task-source>template task source</dfn>.</p>
-
-
- <h5 id=the-originalcontent-dom-attribute><span class=secno>4.12.6.1 </span>The <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code> DOM
- attribute</h5>
-
- <p>The <dfn id=dom-originalcontent title=dom-originalContent><code>originalContent</code></dfn> is
- set to a <code>DocumentFragment</code> to hold the original children
- of an element that has been replaced by content generated for a data
- template. Initially, it must be null. Its value is set when the
- <code title=attr-template><a href=#attr-template>template</a></code> attribute is set to a
- usable value, and is unset when the attribute is removed.</p>
-
- <p class=note>The <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code> DOM attribute can
- thus be used as an indicator of whether a template is currently
- being applied, just as the <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> DOM attribute
- can.</p>
-
-
- <h5 id=the-template-attribute><span class=secno>4.12.6.2 </span>The <code title=attr-template><a href=#attr-template>template</a></code> attribute</h5>
-
- <p><dfn id=datatemplate-template-set title=datatemplate-template-set>Setting</dfn>: When an
- <a href=#html-elements title="HTML elements">HTML element</a> without a <code title=attr-template><a href=#attr-template>template</a></code> attribute has its <code title=attr-template><a href=#attr-template>template</a></code> attribute set, the user agent
- must <a href=#fetch>fetch</a> the specified file and parse it (without a
- <a href=#browsing-context>browsing context</a>) to obtain a DOM. If the
- <a href=#url>URL</a>, when <a href=#resolve-a-url title="resolve a url">resolved</a>,
- is the same as <span>the document's address</span><!-- XXXDOCURL
- xref -->, then the current document's DOM must be assumed to be that
- parsed DOM. While this loading and parsing is in progress, the
- element is said to be <i>busy loading the template rules or
- data</i>.</p>
-
- <p>If the resource specified by the <code title=attr-template><a href=#attr-template>template</a></code> attribute is not the current
- document<!-- XXX xref --> and does not have an XML MIME type, or if
- an XML parse error is found while parsing the resource, then the
- resource cannot be successfully parsed, and the user agent must jump
- to the <a href=#datatemplate-template-failed title=datatemplate-template-failed>failed to
- parse</a> steps below.</p>
-
- <p>Once the DOM in question has been parsed, assuming that it indeed
- can be parsed and does so successfully, the user agent must
- <a href=#queue-a-task>queue a task</a> to run the following algorithm:</p>
-
- <ol><!-- precondition: the originalContent is null and the element
- contains its original content. --><li>
-
- <p>If the <code title=attr-template><a href=#attr-template>template</a></code> attribute's
- value has a fragment identifier, and, in the DOM in question, it
- identifies<!-- XXX how --> a <code><a href=#the-datatemplate-element>datatemplate</a></code> element,
- then set the <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> DOM attribute
- to that element.</p>
-
- <p>Otherwise, if the <code title=attr-template><a href=#attr-template>template</a></code>
- attribute value does not have a fragment identifier, and the root
- element of the DOM in question is a <code><a href=#the-datatemplate-element>datatemplate</a></code>
- element, then set the <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> DOM attribute
- to that element.</p>
-
- <p>Otherwise, jump to the <a href=#datatemplate-template-failed title=datatemplate-template-failed>failed to parse</a> steps
- below.</p>
-
- </li>
-
- <li><p>Create a new <code>DocumentFragment</code> and move all the
- nodes that are children of the element to that
- <code>DocumentFragment</code> object. Set the <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code> DOM attribute on
- the element to this new <code>DocumentFragment</code>
- object.</li>
-
- <li><p>Jump to the steps below for <a href=#datatemplate-regen title=datatemplate-regen>updating the generated
- content</a>.</li>
-
- </ol><p>If the resource has <dfn id=datatemplate-template-failed title=datatemplate-template-failed>failed to parse</dfn>, the user
- agent must <a href=#fire-a-simple-event>fire a simple event</a> with the name <code title=event-error><a href=#event-error>error</a></code> at the element on which the <code title=attr-template><a href=#attr-template>template</a></code> attribute was found.</p>
-
- <p><dfn id=datatemplate-template-unset title=datatemplate-template-unset>Unsetting</dfn>: When an
- <a href=#html-elements title="HTML elements">HTML element</a> with a <code title=attr-template><a href=#attr-template>template</a></code> attribute has its <code title=attr-template><a href=#attr-template>template</a></code> attribute removed or
- dynamically changed from one value to another, the user agent must
- run the following algorithm:</p>
-
- <ol><li><p>Set the <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> DOM attribute to
- null.</li>
-
- <li>
-
- <p>If the <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code>
- DOM attribute of the element is not null, run these substeps:</p>
-
- <ol><li><p>Remove all the nodes that are children of the
- element.</li>
-
- <li><p>Append the nodes in the <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code>
- <code>DocumentFragment</code> to the element.</li>
-
- <li><p>Set <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code>
- to null.</li>
-
- </ol><p>(If the <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code> DOM attribute
- of the element is null, then either there was an error loading or
- parsing the previous template, or the previous template never
- finished loading; in either case, there is nothing to undo.)</p>
-
- </li>
-
- <li><p>If the <code title=attr-template><a href=#attr-template>template</a></code> attribute
- was changed (as opposed to simply removed), then <a href=#datatemplate-template-set title=datatemplate-template-set>act as if it was now set to its
- new value</a> (fetching the specified page, etc, as described
- above).</li>
-
- </ol><p>The <dfn id=dom-templateelement title=dom-templateElement><code>templateElement</code></dfn> DOM
- attribute is updated by the above algorithm to point to the
- currently active <code><a href=#the-datatemplate-element>datatemplate</a></code> element. Initially, the
- attribute must have the value null.</p>
-
-
- <h5 id=the-ref-attribute><span class=secno>4.12.6.3 </span>The <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute</h5>
-
- <p><dfn id=datatemplate-ref-set title=datatemplate-ref-set>Setting</dfn>: When an <a href=#html-elements title="HTML elements">HTML element</a> without a <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute has its <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute set, the user agent must
- <a href=#fetch>fetch</a> the specified file and parse it (without a
- <a href=#browsing-context>browsing context</a>) to obtain a DOM. If the
- <a href=#url>URL</a>, when <a href=#resolve-a-url title="resolve a url">resolved</a>,
- is the same as <span>the document's address</span><!-- XXXDOCURL
- xref -->, then the current document's DOM must be assumed to be that
- parsed DOM. While this loading and parsing is in progress, the
- element is said to be <i>busy loading the template rules or
- data</i>.</p>
-
- <p>If the resource specified by the <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute is not the current
- document<!-- XXX xref --> and does not have an XML MIME type, or if
- an XML parse error is found while parsing the resource, then the
- resource cannot be successfully parsed, and the user agent must jump
- to the <a href=#datatemplate-ref-failed title=datatemplate-ref-failed>failed to parse</a>
- steps below.</p>
-
- <p>Once the DOM in question has been parsed, assuming that it indeed
- can be parsed and does so successfully, the user agent must
- <a href=#queue-a-task>queue a task</a> to run the following algorithm:</p>
-
- <ol><li>
-
- <p>If the <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute value does
- not have a fragment identifier, then set the <code title=dom-refNode><a href=#dom-refnode>refNode</a></code> DOM attribute to the
- <code>Document</code> node of that DOM.</p>
-
- <p>Otherwise, if the <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute's
- value has a fragment identifier, and, in the DOM in question, that
- fragment identifier identifies an element, then set the <code title=dom-refNode><a href=#dom-refnode>refNode</a></code> DOM attribute to that
- element.</p>
-
- <p>Otherwise, jump to the <a href=#datatemplate-ref-failed title=datatemplate-ref-failed>failed to parse</a> steps
- below.</p>
-
- </li>
-
- <li><p>Jump to the steps below for <a href=#datatemplate-regen title=datatemplate-regen>updating the generated
- content</a>.</li>
-
- </ol><p>If the resource has <dfn id=datatemplate-ref-failed title=datatemplate-ref-failed>failed to parse</dfn>, the user
- agent must <a href=#fire-a-simple-event>fire a simple event</a> with the name <code title=event-error><a href=#event-error>error</a></code> at the element on which the <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute was found, and must then jump
- to the steps below for <a href=#datatemplate-regen title=datatemplate-regen>updating the
- generated content</a> (the contents of the element will be used
- instead of the specified resource).</p>
-
- <p><dfn id=datatemplate-ref-unset title=datatemplate-ref-unset>Unsetting</dfn>: When an
- <a href=#html-elements title="HTML elements">HTML element</a> with a <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute has its <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute removed or dynamically changed
- from one value to another, the user agent must run the following
- algorithm:</p>
-
- <ol><li><p>Set the <code title=dom-refNode><a href=#dom-refnode>refNode</a></code> DOM
- attribute to null.</li>
-
- <li><p>If the <code title=attr-ref><a href=#attr-ref>ref</a></code> attribute was
- changed (as opposed to simply removed), then <a href=#datatemplate-ref-set title=datatemplate-ref-set>act as if it was now set to its new
- value</a> (fetching the specified page, etc, as described
- above). Otherwise, jump to the steps below for <a href=#datatemplate-regen title=datatemplate-regen>updating the generated
- content</a>.</li>
-
- </ol><p>The <dfn id=dom-refnode title=dom-refNode><code>refNode</code></dfn> DOM
- attribute is updated by the above algorithm to point to the current
- data tree, if one is specified explicitly. If it is null, then the
- data tree is given by the <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code> DOM attribute,
- unless that is also null, in which case no template is currently
- being applied. Initially, the attribute must have the value
- null.</p>
-
-
- <h5 id=the-nodedatatemplate-interface><span class=secno>4.12.6.4 </span>The <code><a href=#nodedatatemplate>NodeDataTemplate</a></code> interface</h5>
-
- <p>All objects that implement the <code>Node</code> interface must
- also implement the <code><a href=#nodedatatemplate>NodeDataTemplate</a></code> interface, whose
- members must be accessible using binding-specific casting
- mechanisms.</p>
-
- <pre class=idl>interface <dfn id=nodedatatemplate>NodeDataTemplate</dfn> {
- readonly attribute Node <a href=#dom-datanode title=dom-dataNode>dataNode</a>;
-};</pre>
-
- <p>The <dfn id=dom-datanode title=dom-dataNode><code>dataNode</code></dfn> DOM
- attribute returns the node for which <em>this</em> node was
- generated. It must initially be null. It is set on the nodes that
- form the content generated during the <a href=#datatemplate-regen title=datatemplate-regen>algorithm for updating the generated
- content</a> of elements that are using the data template
- feature.</p>
-
-
- <h5 id=mutations><span class=secno>4.12.6.5 </span>Mutations</h5>
-
- <p>An element with a non-null <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> is said to be a
- <dfn id=data-tree-user>data tree user</dfn> of the node identified by the element's
- <code title=dom-refNode><a href=#dom-refnode>refNode</a></code> attribute, as well as all
- of that node's children, or, if that attribute is null, of the node
- identified by the element's <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code>, as well as all
- <em>that</em> node's children.</p>
-
- <p>Nodes that have one or more <a href=#data-tree-user title="data tree user">data
- tree users</a> associated with them (as per the previous
- paragraph) are themselves termed <dfn id=data-tree-component-node title="data tree component
- node">data tree component nodes</dfn>.</p>
-
- <p>Whenever a <a href=#data-tree-component-node>data tree component node</a> changes its name
- or value, or has one of its attributes change name or value, or has
- an attribute added or removed, or has a child added or removed, the
- user agent must <span>update the generated content</span> of all of
- that node's <a href=#data-tree-user title="data tree user">data tree users</a>.</p>
-
- <p>An element with a non-null <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> is also said to
- be a <dfn id=template-tree-user>template tree user</dfn> of the node identified by the
- element's <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code>
- attribute, as well as all of that node's children.</p>
-
- <p>Nodes that have one or more <a href=#template-tree-user title="template tree
- user">template tree users</a> associated with them (as per the
- previous paragraph) are themselves termed <dfn id=template-tree-component-node title="template tree
- component node">template tree component nodes</dfn>.</p>
-
- <p>Whenever a <a href=#template-tree-component-node>template tree component node</a> changes its
- name or value, or has one of its attributes change name or value, or
- has an attribute added or removed, or has a child added or removed,
- the user agent must <span>update the generated content</span> of all
- of that node's <a href=#template-tree-user title="template tree user">template tree
- users</a>.</p>
-
- <p class=note>In other words, user agents update the content
- generated from a template whenever either the backing data changes
- or the template itself changes.</p>
-
-
- <h5 id=updating-the-generated-content><span class=secno>4.12.6.6 </span>Updating the generated content</h5>
-
- <p>When the user agent is to <dfn id=datatemplate-regen title=datatemplate-regen>update
- the generated content</dfn> of an element that uses a template, the
- user agent must run the following steps:</p>
-
- <ol><li><p>Let <var title="">destination</var> be the element whose
- generated content is being updated.</li>
-
- <li><p>If the <var title="">destination</var> element is <i>busy
- loading the template rules or data</i>, then abort these
- steps. Either the steps will be invoked again once the loading has
- completed, or the loading will fail and the generated content will
- be removed at that point.</li>
-
- <li><p>Let <var title="">template tree</var> be the element given
- by <var title="">destination</var>'s <code title=dom-templateElement><a href=#dom-templateelement>templateElement</a></code> DOM
- attribute. If it is null, then abort these steps. There are no
- rules to apply.</li>
-
- <li><p>Let <var title="">data tree</var> be the node given by <var title="">destination</var>'s <code title=dom-refNode><a href=#dom-refnode>refNode</a></code> DOM attribute. If it is null,
- then let <var title="">data tree</var> be the node given by the
- <code title=dom-originalContent><a href=#dom-originalcontent>originalContent</a></code> DOM
- node.</li>
-
- <li><p>Let <var title="">existing nodes</var> be a set of ordered
- lists of nodes, each list being identified by a tuple consisting of
- a node, a node type and name, and a <a href=#attr-registrationmark title=attr-registrationmark>registration mark</a> (a
- string).</li>
-
- <li><p>For each node <var title="">node</var> that is a descendant
- of <var title="">destination</var>, if any, add <var title="">node</var> to the list identified by the tuple given by:
- <var title="">node</var>'s <code title=dom-dataNode><a href=#dom-datanode>dataNode</a></code> DOM attribute; the <var title="">node</var>'s node type and, if it's an element, its
- qualified name (that is, its namespace and local name), or, if it's
- a processing instruction, its target name<!-- we're basically
- indexing on nodeName here -->, and the value of the <var title="">node</var>'s <code title=attr-registrationmark><a href=#attr-registrationmark>registrationmark</a></code> attribute, if
- it has one, or the empty string otherwise.</li> <!-- XXX should
- non-element nodes inherit the registration marks of their parent?
- or have it set via a PI? -->
-
- <li><p>Remove all the child nodes of <var title="">destination</var>, so that its child node list is
- empty.</li>
-
- <li><p>Run the <a href=#levenberg-data-node-algorithm>Levenberg data node algorithm</a>
- (described below) using <var title="">destination</var> as the
- destination node, <var title="">data tree</var> as the source node,
- <var title="">template tree</var> as the rule container, the empty
- string as the mode, and the <var title="">existing nodes</var> lists
- as the lists of existing nodes.</li>
-
-<!--(for now, since we can't guarantee that we'll reset the dataNode
-attribute of nodes that are dynamically moved around between regens,
-we'll just act as if the dataNode attribute is set on creation and
-never reset. This is nice and consistent.)
-
- <li><p>Set the <code title="dom-dataNode">dataNode</code> DOM
- attribute of every node in the <var title="">existing nodes</var>
- lists to null.</p></li>
--->
-
- </ol><!--<h6 class="notoc">The Levenberg algorithm</h6>--><p>The Levenberg algorithm consists of two algorithms that invoke
- each other recursively, the <a href=#levenberg-data-node-algorithm>Levenberg data node
- algorithm</a> and the <a href=#levenberg-template-node-algorithm>Levenberg template node
- algorithm</a>. These algorithms use the data structures
- initialized by the set of steps described above.</p>
-
- <p>The <dfn id=levenberg-data-node-algorithm>Levenberg data node algorithm</dfn> is as follows. It is
- always invoked with three DOM nodes, one string, and a set of lists
- as arguments: the <var title="">destination node</var>, the <var title="">source node</var>, the <var title="">rule container</var>,
- the <var title="">mode string</var>, and the <var title="">existing
- nodes lists</var> respectively.</p>
-
- <ol><li><p>Let <var title="">condition</var> be the first
- <code><a href=#the-rule-element>rule</a></code> element child of the <var title="">rule
- container</var> element, or null if there aren't any.</p>
-
- <li><p>If <var title="">condition</var> is null, follow these
- substeps:</p>
-
- <ol><li><p>If the <var title="">source node</var> is an element,
- then, for each child <var title="">child node</var> of the <var title="">source node</var> element, in tree order, invoke the
- <a href=#levenberg-data-node-algorithm>Levenberg data node algorithm</a> recursively, with <var title="">destination node</var>, <var title="">child node</var>,
- <var title="">rule container</var>, the empty string, and <var title="">existing nodes lists</var> as the five arguments
- respectively.</li>
-
- <li><p>Abort the current instance of the <a href=#levenberg-data-node-algorithm>Levenberg data
- node algorithm</a>, returning to whatever algorithm invoked
- it.</li>
-
- </ol></li>
-
- <li><p>Let <var title="">matches</var> be a boolean with the value
- true.</li>
-
- <li><p>If the <var title="">condition</var> element has a <code title=attr-rule-mode><a href=#attr-rule-mode>mode</a></code> attribute, but the value of that
- attribute is not a <span>mode match</span> for the current
- <span>mode string</span>, then let <var title="">matches</var> be
- false.</li>
-
- <li><p>If the <var title="">condition</var> element has a <code title=attr-rule-condition><a href=#attr-rule-condition>condition</a></code> attribute, and the
- attribute's value, when <a href=#evaluated-as-a-selector>evaluated as a selector</a>, does
- not match the current <var title="">source node</var>, then let
- <var title="">matches</var> be false.</li>
-
- <li><p>If <var title="">matches</var> is true, then follow these
- substeps:</p>
-
- <ol><li><p>For each child <var title="">child node</var> of the
- <var title="">condition</var> element, in tree order, invoke the
- <a href=#levenberg-template-node-algorithm>Levenberg template node algorithm</a> recursively, with
- the five arguments being <var title="">destination node</var>,
- <var title="">source node</var>, <var title="">rule
- container</var>, <var title="">child node</var>, and <var title="">existing nodes lists</var> respectively.</li>
-
- <li><p>Abort the current instance of the <a href=#levenberg-data-node-algorithm>Levenberg data
- node algorithm</a>, returning to whatever algorithm invoked
- it.</li>
-
- </ol></li>
-
- <li><p>Let <var title="">condition</var> be the next
- <code><a href=#the-rule-element>rule</a></code> element that is a child of the <var title="">rule container</var> element, after the <var title="">condition</var> element itself, or null if there are no
- more <code><a href=#the-rule-element>rule</a></code> elements.</li>
-
- <li><p>Jump to step 2 in this set of steps.</li>
-
- </ol><p>The <dfn id=levenberg-template-node-algorithm>Levenberg template node algorithm</dfn> is as
- follows. It is always invoked with four DOM nodes and a set of lists
- as arguments: the <var title="">destination node</var>, the <var title="">source node</var>, the <var title="">rule container</var>,
- the <var title="">template node</var>, and the <var title="">existing nodes lists</var> respectively.</p>
-
- <ol><li><p>If <var title="">template node</var> is a comment node,
- abort the current instance of the <a href=#levenberg-template-node-algorithm>Levenberg template node
- algorithm</a>, returning to whatever algorithm invoked
- it.</li>
-
- <li><p>If <var title="">template node</var> is a <code><a href=#the-nest-element>nest</a></code>
- element, then run these substeps:</p>
-
- <ol><li><p>If <var title="">source node</var> is not an element, then
- abort the current instance of the <a href=#levenberg-template-node-algorithm>Levenberg template node
- algorithm</a>, returning to whatever algorithm invoked
- it.</li>
-
- <li><p>If the <var title="">template node</var> has a <code title=attr-nest-mode><a href=#attr-nest-mode>mode</a></code> attribute, then let <var title="">mode</var> be the value of that attribute; otherwise,
- let <var title="">mode</var> be the empty string.</li>
-
- <li><p>Let <var title="">child node</var> be the first child of
- the <var title="">source node</var> element, or null if <var title="">source node</var> has no children.</li>
-
- <li><p>If <var title="">child node</var> is null, abort the
- current instance of the <a href=#levenberg-template-node-algorithm>Levenberg template node
- algorithm</a>, returning to whatever algorithm invoked
- it.</li>
-
- <li><p>If the <var title="">template node</var> element has a
- <code title=attr-nest-filter><a href=#attr-nest-filter>filter</a></code> attribute, and the
- attribute's value, when <a href=#evaluated-as-a-selector>evaluated as a selector</a>,
- matches <var title="">child node</var>, then invoke the
- <a href=#levenberg-data-node-algorithm>Levenberg data node algorithm</a> recursively, with <var title="">destination node</var>, <var title="">child node</var>,
- <var title="">rule container</var>, <var title="">mode</var>, and
- <var title="">existing nodes lists</var> as the five arguments
- respectively.</li>
-
- <li><p>Let <var title="">child node</var> be <var title="">child
- node</var>'s next sibling, or null if <var title="">child
- node</var> was the last node of <var title="">source
- node</var>.</li>
-
- <li><p>Return to step 4 in this set of substeps.</li>
-
- </ol></li>
-
- <li><p>If <var title="">template node</var> is an element, and that
- element has a <code title=attr-registrationmark><a href=#attr-registrationmark>registrationmark</a></code> attribute,
- then let <var title="">registration mark</var> have the value of
- that attribute. Otherwise, let <var title="">registration
- mark</var> be the empty string.</li>
-
- <li>
-
- <p>If there is a list in the <var title="">existing nodes
- lists</var> corresponding to the tuple (<var title="">source
- node</var>, the node type and name of <var title="">template
- node</var>, <var title="">registration mark</var>), and that list
- is not empty, then run the following substeps. (For an element
- node, the name of the node is its qualified tag name, i.e. its
- namespace and local name. For a processing instruction, its name
- is the target. For other types of nodes, there is no name.)</p>
-
- <ol><li><p>Let <var title="">new node</var> be the first node in that
- list.</li>
-
- <li><p>Remove <var title="">new node</var> from that
- list.</li>
-
- <li><p>If <var title="">new node</var> is an element, remove all
- the child nodes of <var title="">new node</var>, so that its
- child node list is empty.</li>
-
- </ol><p>Otherwise, if there is no matching list, or there was, but it
- is now empty, then run these steps instead:</p>
-
- <ol><li><p>Let <var title="">new node</var> be a shallow clone of
- <var title="">template node</var>.</li>
-
- <li><p>Let <var title="">new node</var>'s <code title=dom-dataNode><a href=#dom-datanode>dataNode</a></code> DOM attribute be <var title="">source node</var>.</li>
-
- </ol></li>
-
- <li>
-
- <p>If <var title="">new node</var> is an element, run these substeps:</p>
-
- <ol><li><p>For each attribute on <var title="">new node</var>, if
- an attribute with the same qualified name is not present on
- <var title="">template node</var>, remove that attribute.</p>
-
- <li>
-
- <p>For each attribute <var title="">attribute</var> on <var title="">template node</var>, run these substeps:</p>
-
- <ol><li><p>Let <var title="">expanded</var> be the result of
- passing the value of <var title="">attribute</var> to the
- <a href=#text-expansion-algorithm-for-templates>text expansion algorithm for templates</a> along
- with <var title="">source node</var>.</li>
-
- <li><p>If an attribute with the same qualified name as <var title="">attribute</var> is already present on <var title="">new node</var>, then: if its value is different from
- <var title="">expanded</var>, replace its value with <var title="">expanded</var>.</li>
-
- <li><p>Otherwise, if there is no attribute with the same
- qualified name as <var title="">attribute</var> on <var title="">new node</var>, then add an attribute with the same
- namespace, prefix, and local name as <var title="">attribute</var>, with its value set to <var title="">expanded</var>'s.</li>
-
- </ol></li>
-
- </ol><p>Otherwise, the <var title="">new node</var> is a text node,
- <code>CDATASection</code> node, or processing instruction. Run
- these substeps instead:</p>
-
- <ol><li><p>Let <var title="">expanded</var> be the result of passing
- the node value of <var title="">template node</var> (the content
- of the text node, <code>CDATASection</code> node, or processing
- instruction) to the <a href=#text-expansion-algorithm-for-templates>text expansion algorithm for
- templates</a> along with <var title="">source
- node</var>.</li>
-
- <li><p>If the value of the <var title="">new node</var> is
- different from <var title="">expanded</var>, then set the value
- of <var title="">new node</var> to <var title="">expanded</var>.</li>
-
- </ol></li>
-
- <li><p>Append <var title="">new node</var> to <var title="">destination</var>.</li>
-
- <li><p>If <var title="">template node</var> is an element, then,
- for each child <var title="">child node</var> of the <var title="">template node</var> element, in tree order, invoke the
- <a href=#levenberg-template-node-algorithm>Levenberg template node algorithm</a> recursively, with
- the five arguments being <var title="">new child</var>, <var title="">source node</var>, <var title="">rule container</var>,
- <var title="">child node</var>, and <var title="">existing nodes
- lists</var> respectively.</li>
-
- </ol><p class=XXX>Define: <dfn id=evaluated-as-a-selector>evaluated as a selector</dfn></p>
-
- <p class=XXX>Define: <dfn id=text-expansion-algorithm-for-templates>text expansion algorithm for
- templates</dfn></p> <!-- this is basically used for expanding
- nodeValue values -->
-
-
- <h3 id=miscellaneous-elements><span class=secno>4.13 </span>Miscellaneous elements</h3>
-
- <h4 id=the-legend-element><span class=secno>4.13.1 </span>The <dfn><code>legend</code></dfn> element</h4>
+ <h4 id=the-legend-element><span class=secno>4.12.1 </span>The <dfn><code>legend</code></dfn> element</h4>
<dl class=element><dt>Categories</dt>
<dd>None.</dd>
@@ -31539,7 +30800,7 @@ never reset. This is nice and consistent.)
element's parent element.</p>
- <h4 id=the-div-element><span class=secno>4.13.2 </span>The <dfn><code>div</code></dfn> element</h4>
+ <h4 id=the-div-element><span class=secno>4.12.2 </span>The <dfn><code>div</code></dfn> element</h4>
<dl class=element><dt>Categories</dt>
<dd><a href=#flow-content-0>Flow content</a>.</dd>
@@ -34215,7 +33476,7 @@ JSURL: http://ietfreport.isoc.org/all-ids/draft-hoehrmann-javascript-scheme-00.t
<h3 id=offline><span class=secno>5.7 </span>Offline Web applications</h3>
- <h4 id=introduction-1><span class=secno>5.7.1 </span>Introduction</h4>
+ <h4 id=introduction-0><span class=secno>5.7.1 </span>Introduction</h4>
<p><em>This section is non-normative.</em></p>
@@ -35057,7 +34318,7 @@ style/default.css</pre>
that an update for this cache is in progress. Abort the update
process.</li>
- </ol><h4 id=processing-model-2><span class=secno>5.7.5 </span>Processing model</h4>
+ </ol><h4 id=processing-model-1><span class=secno>5.7.5 </span>Processing model</h4>
<p>The processing model of application caches for offline support in
Web applications is part of the <a href=#navigate title=navigate>navigation</a> model, but references the
@@ -36722,7 +35983,7 @@ user reload must be equivalent to .reload()
<h4 id=storage><span class=secno>5.10.1 </span>Storing name/value pairs</h4>
- <h5 id=introduction-2><span class=secno>5.10.1.1 </span>Introduction</h5>
+ <h5 id=introduction-1><span class=secno>5.10.1.1 </span>Introduction</h5>
<p><em>This section is non-normative.</em></p>
@@ -37120,7 +36381,7 @@ user reload must be equivalent to .reload()
* handling the database getting corrupted
-->
- <h5 id=introduction-3><span class=secno>5.10.2.1 </span>Introduction</h5>
+ <h5 id=introduction-2><span class=secno>5.10.2.1 </span>Introduction</h5>
<p><em>This section is non-normative.</em></p>
@@ -37476,7 +36737,7 @@ interface <dfn id=sqlstatementerrorcallback>SQLStatementErrorCallback</dfn> {
- <h5 id=processing-model-3><span class=secno>5.10.2.6 </span>Processing model</h5>
+ <h5 id=processing-model-2><span class=secno>5.10.2.6 </span>Processing model</h5>
<p>The <dfn id=transaction-steps>transaction steps</dfn> are as follows. These steps must
be run asynchronously. These steps are invoked with a <i>transaction
@@ -39971,7 +39232,7 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
step).</p>
- <h4 id=introduction-4><span class=secno>6.8.1 </span>Introduction</h4>
+ <h4 id=introduction-3><span class=secno>6.8.1 </span>Introduction</h4>
<p><em>This section is non-normative.</em></p>
@@ -42792,7 +42053,7 @@ Proxy-authorization: Basic ZWRuYW1vZGU6bm9jYXBlcyE=</pre>
attacks.</p>
- <h4 id=introduction-5><span class=secno>7.4.1 </span>Introduction</h4>
+ <h4 id=introduction-4><span class=secno>7.4.1 </span>Introduction</h4>
<p><em>This section is non-normative.</em></p>
@@ -43039,7 +42300,7 @@ function receiver(e) {
<h3 id=channel-messaging><span class=secno>7.5 </span><dfn>Channel messaging</dfn></h3>
- <h4 id=introduction-6><span class=secno>7.5.1 </span>Introduction</h4>
+ <h4 id=introduction-5><span class=secno>7.5.1 </span>Introduction</h4>
<p><em>This section is non-normative.</em></p>
@@ -53193,8 +52454,6 @@ TODO (or delay):
- dragging the window out of the tab
XXX * in-window non-modal palettes
- with a solution for the mobile space
- XXX * a way of selecting rows, so that you can declaratively have buttons
- outside the template that move a "selected row" around
XXX * calendar with list of days that have events (think: blog calendars)
XXX * find object at (x,y)
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/elementfrompoint.asp
@@ -53362,10 +52621,6 @@ TODO (or delay):
it exists (case insensitive)? - kerz
[or deprecate the lot (->web apps)]
XXX * option.text should do the same as option.textContent
- XXX * select.options.add(), .remove() should exist (and forward to the select)
- XXX * select.add()'s second argument should also be allowed to be an integer (negative means append)
- + see: http://bugzilla.mozilla.org/show_bug.cgi?id=240304
- http://junkyard.damowmow.com/138
XXX * need an attribute that says "the children of this element are in
their own tabbing universe, tabindex should be relative to each
other, not to the document"
View
899 source
@@ -289,11 +289,6 @@
client.</dd>
- <dt><a href="#datatemplate">Data Templates</a></dt>
-
- <dd>A mechanism to support repeating sections in forms.</dd>
-
-
<dt><a href="#syntax">The Language Syntax</a></dt>
<dd>All of these features would be for naught if they couldn't be
@@ -5908,14 +5903,6 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E..
// <span>styling</span>
readonly attribute <span>CSSStyleDeclaration</span> <span title="dom-style">style</span>;
- // <span>data templates</span>
- attribute DOMString <span title="dom-template">template</span>;
- readonly attribute <span>HTMLDataTemplateElement</span> <span title="dom-templateElement">templateElement</span>;
- attribute DOMString <span title="dom-ref">ref</span>;
- readonly attribute Node <span title="dom-refNode">refNode</span>;
- attribute DOMString <span title="dom-registrationMark">registrationMark</span>;
- readonly attribute DocumentFragment <span title="dom-originalContent">originalContent</span>;
-
// <span>event handler DOM attributes</span>
attribute <span>EventListener</span> <span title="handler-onabort">onabort</span>;
attribute <span>EventListener</span> <span title="handler-onbeforeunload">onbeforeunload</span>;
@@ -5981,7 +5968,6 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E..
<dd><code title="attr-registrationmark">registrationmark</code></dd>
<dd><code title="attr-style">style</code></dd>
<dd><code title="attr-tabindex">tabindex</code></dd>
- <dd><code title="attr-template">template</code></dd>
<dd><code title="attr-title">title</code></dd>
</dl>
@@ -34934,885 +34920,6 @@ menu li:not(:first-child)::before { content: ' | '; }</pre>
-
- <h3 id="datatemplate">Data Templates</h3>
-
- <h4>Introduction</h4>
-
- <p><em>This section is non-normative.</em></p>
-
- <p class="XXX">...examples...</p>
-
-
- <h4>The <dfn><code>datatemplate</code></dfn> element</h4>
-
- <dl class="element">
- <dt>Categories</dt>
- <dd><span>Metadata content</span>.</dd>
- <dd><span>Flow content</span>.</dd>
- <dt>Contexts in which this element may be used:</dt>
- <dd>As the root element of an <span title="xml documents">XML document</span>.</dd>
- <dd>Where <span>metadata content</span> is expected.</dd>
- <dd>Where <span>flow content</span> is expected.</dd>
- <dt>Content model:</dt>
- <dd>Zero or more <code>rule</code> elements.</dd>
- <dt>Element-specific attributes:</dt>
- <dd>None.</dd>
- <dt>DOM interface:</dt>
- <dd>Uses <code>HTMLElement</code>.</dd>
- </dl>
-
- <p>The <code>datatemplate</code> element brings together the various
- rules that form a data template. The element doesn't itself do
- anything exciting.</p>
-
-
- <h4>The <dfn><code>rule</code></dfn> element</h4>
-
- <dl class="element">
- <dt>Categories</dt>
- <dd>None.</dd>
- <dt>Contexts in which this element may be used:</dt>
- <dd>As a child of a <code>datatemplate</code> element.</dd>
- <dt>Content model:</dt>
- <dd>Anything, regardless of the children's required contexts (but see prose).</dd>
- <dt>Element-specific attributes:</dt>
- <dd><code title="attr-rule-condition">condition</code></dd>
- <dd><code title="attr-rule-mode">mode</code></dd>
- <dt>DOM interface:</dt>
- <dd>
-<pre class="idl">interface <dfn>HTMLRuleElement</dfn> : <span>HTMLElement</span> {
- attribute DOMString <span title="dom-rule-condition">condition</span>;
- attribute DOMString <span title="dom-rule-mode">mode</span>;
- readonly attribute DOMTokenString <span title="dom-rule-modeList">modeList</span>;
-};</pre>
- </dd>
- </dl>
-
- <p>The <code>rule</code> element represents a template of content
- that is to be used for elements when <span
- title="datatemplate-regen">updating an element's generated
- content</span>.</p>
-
- <p>The <dfn title="attr-rule-condition"><code>condition</code></dfn>
- attribute, if specified, must contain a valid selector. It specifies
- which nodes in the data tree will have the condition's template
- applied. <a href="#refsSELECTORS">[SELECTORS]</a></p>
-
- <p>If the <code title="attr-rule-condition">condition</code>
- attribute is not specified, then the condition applies to all
- elements, text nodes, <code>CDATASection</code> nodes, and
- processing instructions.</p>
-
- <p>The <dfn title="attr-rule-mode"><code>mode</code></dfn>
- attribute, if specified, must have a value that is an
- <span>unordered set of unique space-separated tokens</span>
- representing the various modes for which the rule applies. When, and
- only when, the <code title="attr-rule-mode">mode</code> attribute is
- omitted, the rule applies if and only if the mode is the empty
- string. A mode is invoked by the <code>nest</code> element; for the
- first node (the root node) of the data tree, the mode is the empty
- string.</p>
-
- <p>The contents of <code>rule</code> elements form a template, and
- may be anything that, when the parent <code>datatemplate</code> is
- applied to some conforming data, results in a conforming DOM
- tree.</p> <!-- XXX examples of conforming and non-conforming rules
- -->
-
- <p>The <dfn title="dom-rule-condition"><code>condition</code></dfn>
- DOM attribute must <span>reflect</span> the <code
- title="attr-rule-condition">condition</code> content attribute.</p>
-
- <p>The <dfn title="dom-rule-mode"><code>mode</code></dfn> and <dfn
- title="dom-rule-modeList"><code>modeList</code></dfn> DOM attributes
- must <span>reflect</span> the <code title="attr-rule-mode">mode</code> content
- attribute.</p>
-
-
- <h4>The <dfn><code>nest</code></dfn> element</h4>
-
- <dl class="element">
- <dt>Categories</dt>
- <dd>None.</dd>
- <dt>Contexts in which this element may be used:</dt>
- <dd>As a child of a descendant of a <code>rule</code> element, regardless of the element's content model.</dd>
- <dt>Content model:</dt>
- <dd>Empty.</dd>
- <dt>Element-specific attributes:</dt>
- <dd><code title="attr-nest-filter">filter</code></dd>
- <dd><code title="attr-nest-mode">mode</code></dd>
- <dt>DOM interface:</dt>
- <dd>
-<pre class="idl">interface <dfn>HTMLNestElement</dfn> : <span>HTMLElement</span> {
- attribute DOMString <span title="dom-nest-filter">filter</span>;
- attribute DOMString <span title="dom-nest-mode">mode</span>;
-};</pre>
- </dd>
- </dl>
-
- <p>The <code>nest</code> element represents a point in a template
- where the user agent should recurse and start inserting the children
- of the data node that matches the <code>rule</code> in which the
- <code>nest</code> element finds itself.</p>
-
- <p>The <dfn title="attr-nest-filter"><code>filter</code></dfn>
- attribute, if specified, must contain a valid selector. It specifies
- which of the child nodes in the data tree will be examined for
- further processing at this point. <a
- href="#refsSELECTORS">[SELECTORS]</a></p>
-
- <p>If the <code title="attr-nest-filter">filter</code> attribute is
- not specified, then all elements, text nodes,
- <code>CDATASection</code> nodes, and processing instructions are
- processed.</p>
-
- <p>The <dfn title="attr-nest-mode"><code>mode</code></dfn>
- attribute, if specified, must have a value that is a word token
- consisting of one or more characters, none of which are <span
- title="space character">space characters</span>. It gives the mode
- which will be in effect when looking at the rules in the data
- template.</p>
-
- <p>The <dfn title="dom-nest-filter"><code>filter</code></dfn> DOM
- attribute must <span>reflect</span> the <code
- title="attr-nest-filter">filter</code> content attribute.</p>
-
- <p>The <dfn title="dom-nest-mode"><code>mode</code></dfn> DOM
- attribute must <span>reflect</span> the <code
- title="attr-nest-mode">mode</code> content attribute.</p>
-
-
-
-
- <h4>Global attributes for data templates</h4>
- <!-- authoring side, with DOM reflections -->
-
- <p>The <dfn title="attr-template"><code>template</code></dfn>
- attribute may be added to an element to indicate that the template
- processing model is to be applied to that element.</p>
-
- <p>The <code title="attr-template">template</code> attribute, when
- specified, must be a <span>valid URL</span> to an XML or HTML
- document, or a fragment identifier pointing at another part of the
- document. If there is a fragment identifier present, then the
- element with that ID in the target document must be a
- <code>datatemplate</code> element, otherwise, the root element must
- be a <code>datatemplate</code> element.</p>
-
- <p>The <dfn title="dom-template"><code>template</code></dfn> DOM
- attribute must <span>reflect</span> the <code
- title="attr-template">template</code> content attribute.</p>
-
-
- <p>The <dfn title="attr-ref"><code>ref</code></dfn> attribute may be
- specified on any element on which the <code
- title="attr-template">template</code> attribute is specified. If it
- is specified, it must be a <span>valid URL</span> to an XML or HTML
- document, or a fragment identifier pointing at another part of the
- document.</p>
-
- <p>When an element has a <code title="attr-template">template</code>
- attribute but no <code title="attr-ref">ref</code> attribute, the
- element may, instead of its usual content model, have a single
- element of any kind. That element is then used as the root node of
- the data for the template.</p>
-
- <p>The <dfn title="dom-ref"><code>ref</code></dfn> DOM
- attribute must <span>reflect</span> the <code
- title="attr-ref">ref</code> content attribute.</p>
-
-
- <p>The <dfn
- title="attr-registrationmark"><code>registrationmark</code></dfn>
- attribute may be specified on any element that is a descendant of a
- <code>rule</code> element, except <code>nest</code> elements. Its
- value may be any string, including the empty string (which is the
- value that is assumed if the attribute is omitted). This attribute
- performs a role similar to registration marks in printing presses:
- when the generated content is regenerated, elements with the same
- <code title="attr-registrationmark">registrationmark</code> are
- lined up. This allows the author to disambiguate how elements should
- be moved around when generated content is regenerated in the face of
- changes to the data tree.</p>
-
- <p>The <dfn
- title="dom-registrationMark"><code>registrationMark</code></dfn> DOM
- attribute must <span>reflect</span> the <code
- title="attr-registrationmark">registrationmark</code> content
- attribute.</p>
-
-
-
- <h4>Processing model</h4>
- <!-- ua side -->
-
- <p>The <span>task source</span> for all <span
- title="concept-task">tasks</span> <span title="queue a
- task">queued</span> by algorithms in this section and its
- subsections is the <dfn>template task source</dfn>.</p>
-
-
- <h5>The <code title="dom-originalContent">originalContent</code> DOM
- attribute</h5>
-
- <p>The <dfn
- title="dom-originalContent"><code>originalContent</code></dfn> is
- set to a <code>DocumentFragment</code> to hold the original children
- of an element that has been replaced by content generated for a data
- template. Initially, it must be null. Its value is set when the
- <code title="attr-template">template</code> attribute is set to a
- usable value, and is unset when the attribute is removed.</p>
-
- <p class="note">The <code
- title="dom-originalContent">originalContent</code> DOM attribute can
- thus be used as an indicator of whether a template is currently
- being applied, just as the <code
- title="dom-templateElement">templateElement</code> DOM attribute
- can.</p>
-
-
- <h5>The <code title="attr-template">template</code> attribute</h5>
-
- <p><dfn title="datatemplate-template-set">Setting</dfn>: When an
- <span title="HTML elements">HTML element</span> without a <code
- title="attr-template">template</code> attribute has its <code
- title="attr-template">template</code> attribute set, the user agent
- must <span>fetch</span> the specified file and parse it (without a
- <span>browsing context</span>) to obtain a DOM. If the
- <span>URL</span>, when <span title="resolve a url">resolved</span>,
- is the same as <span>the document's address</span><!-- XXXDOCURL
- xref -->, then the current document's DOM must be assumed to be that
- parsed DOM. While this loading and parsing is in progress, the
- element is said to be <i>busy loading the template rules or
- data</i>.</p>
-
- <p>If the resource specified by the <code
- title="attr-template">template</code> attribute is not the current
- document<!-- XXX xref --> and does not have an XML MIME type, or if
- an XML parse error is found while parsing the resource, then the
- resource cannot be successfully parsed, and the user agent must jump
- to the <span title="datatemplate-template-failed">failed to
- parse</span> steps below.</p>
-
- <p>Once the DOM in question has been parsed, assuming that it indeed
- can be parsed and does so successfully, the user agent must
- <span>queue a task</span> to run the following algorithm:</p>
-
- <ol>
- <!-- precondition: the originalContent is null and the element
- contains its original content. -->
-
- <li>
-
- <p>If the <code title="attr-template">template</code> attribute's
- value has a fragment identifier, and, in the DOM in question, it
- identifies<!-- XXX how --> a <code>datatemplate</code> element,
- then set the <code
- title="dom-templateElement">templateElement</code> DOM attribute
- to that element.</p>
-
- <p>Otherwise, if the <code title="attr-template">template</code>
- attribute value does not have a fragment identifier, and the root
- element of the DOM in question is a <code>datatemplate</code>
- element, then set the <code
- title="dom-templateElement">templateElement</code> DOM attribute
- to that element.</p>
-
- <p>Otherwise, jump to the <span
- title="datatemplate-template-failed">failed to parse</span> steps
- below.</p>
-
- </li>
-
- <li><p>Create a new <code>DocumentFragment</code> and move all the
- nodes that are children of the element to that
- <code>DocumentFragment</code> object. Set the <code
- title="dom-originalContent">originalContent</code> DOM attribute on
- the element to this new <code>DocumentFragment</code>
- object.</p></li>
-
- <li><p>Jump to the steps below for <span
- title="datatemplate-regen">updating the generated
- content</span>.</p></li>
-
- </ol>
-
- <p>If the resource has <dfn
- title="datatemplate-template-failed">failed to parse</dfn>, the user
- agent must <span>fire a simple event</span> with the name <code
- title="event-error">error</code> at the element on which the <code
- title="attr-template">template</code> attribute was found.</p>
-
- <p><dfn title="datatemplate-template-unset">Unsetting</dfn>: When an
- <span title="HTML elements">HTML element</span> with a <code
- title="attr-template">template</code> attribute has its <code
- title="attr-template">template</code> attribute removed or
- dynamically changed from one value to another, the user agent must
- run the following algorithm:</p>
-
- <ol>
-
- <li><p>Set the <code
- title="dom-templateElement">templateElement</code> DOM attribute to
- null.</p></li>
-
- <li>
-
- <p>If the <code title="dom-originalContent">originalContent</code>
- DOM attribute of the element is not null, run these substeps:</p>
-
- <ol>
-
- <li><p>Remove all the nodes that are children of the
- element.</p></li>
-
- <li><p>Append the nodes in the <code
- title="dom-originalContent">originalContent</code>
- <code>DocumentFragment</code> to the element.</p></li>
-
- <li><p>Set <code title="dom-originalContent">originalContent</code>
- to null.</p></li>
-
- </ol>
-
- <p>(If the <code
- title="dom-originalContent">originalContent</code> DOM attribute
- of the element is null, then either there was an error loading or
- parsing the previous template, or the previous template never
- finished loading; in either case, there is nothing to undo.)</p>
-
- </li>
-
- <li><p>If the <code title="attr-template">template</code> attribute
- was changed (as opposed to simply removed), then <span
- title="datatemplate-template-set">act as if it was now set to its
- new value</span> (fetching the specified page, etc, as described
- above).</p></li>
-
- </ol>
-
- <p>The <dfn
- title="dom-templateElement"><code>templateElement</code></dfn> DOM
- attribute is updated by the above algorithm to point to the
- currently active <code>datatemplate</code> element. Initially, the
- attribute must have the value null.</p>
-
-
- <h5>The <code title="attr-ref">ref</code> attribute</h5>
-
- <p><dfn title="datatemplate-ref-set">Setting</dfn>: When an <span
- title="HTML elements">HTML element</span> without a <code
- title="attr-ref">ref</code> attribute has its <code
- title="attr-ref">ref</code> attribute set, the user agent must
- <span>fetch</span> the specified file and parse it (without a
- <span>browsing context</span>) to obtain a DOM. If the
- <span>URL</span>, when <span title="resolve a url">resolved</span>,
- is the same as <span>the document's address</span><!-- XXXDOCURL
- xref -->, then the current document's DOM must be assumed to be that
- parsed DOM. While this loading and parsing is in progress, the
- element is said to be <i>busy loading the template rules or
- data</i>.</p>
-
- <p>If the resource specified by the <code
- title="attr-ref">ref</code> attribute is not the current
- document<!-- XXX xref --> and does not have an XML MIME type, or if
- an XML parse error is found while parsing the resource, then the
- resource cannot be successfully parsed, and the user agent must jump
- to the <span title="datatemplate-ref-failed">failed to parse</span>
- steps below.</p>
-
- <p>Once the DOM in question has been parsed, assuming that it indeed
- can be parsed and does so successfully, the user agent must
- <span>queue a task</span> to run the following algorithm:</p>
-
- <ol>
-
- <li>
-
- <p>If the <code title="attr-ref">ref</code> attribute value does
- not have a fragment identifier, then set the <code
- title="dom-refNode">refNode</code> DOM attribute to the
- <code>Document</code> node of that DOM.</p>
-
- <p>Otherwise, if the <code title="attr-ref">ref</code> attribute's
- value has a fragment identifier, and, in the DOM in question, that
- fragment identifier identifies an element, then set the <code
- title="dom-refNode">refNode</code> DOM attribute to that
- element.</p>
-
- <p>Otherwise, jump to the <span
- title="datatemplate-ref-failed">failed to parse</span> steps
- below.</p>
-
- </li>
-
- <li><p>Jump to the steps below for <span
- title="datatemplate-regen">updating the generated
- content</span>.</p></li>
-
- </ol>
-
- <p>If the resource has <dfn
- title="datatemplate-ref-failed">failed to parse</dfn>, the user
- agent must <span>fire a simple event</span> with the name <code
- title="event-error">error</code> at the element on which the <code
- title="attr-ref">ref</code> attribute was found, and must then jump
- to the steps below for <span title="datatemplate-regen">updating the
- generated content</span> (the contents of the element will be used
- instead of the specified resource).</p>
-
- <p><dfn title="datatemplate-ref-unset">Unsetting</dfn>: When an
- <span title="HTML elements">HTML element</span> with a <code
- title="attr-ref">ref</code> attribute has its <code
- title="attr-ref">ref</code> attribute removed or dynamically changed
- from one value to another, the user agent must run the following
- algorithm:</p>
-
- <ol>
-
- <li><p>Set the <code title="dom-refNode">refNode</code> DOM
- attribute to null.</p></li>
-
- <li><p>If the <code title="attr-ref">ref</code> attribute was
- changed (as opposed to simply removed), then <span
- title="datatemplate-ref-set">act as if it was now set to its new
- value</span> (fetching the specified page, etc, as described
- above). Otherwise, jump to the steps below for <span
- title="datatemplate-regen">updating the generated
- content</span>.</p></li>
-
- </ol>
-
- <p>The <dfn title="dom-refNode"><code>refNode</code></dfn> DOM
- attribute is updated by the above algorithm to point to the current
- data tree, if one is specified explicitly. If it is null, then the
- data tree is given by the <code
- title="dom-originalContent">originalContent</code> DOM attribute,
- unless that is also null, in which case no template is currently
- being applied. Initially, the attribute must have the value
- null.</p>
-
-
- <h5>The <code>NodeDataTemplate</code> interface</h5>
-
- <p>All objects that implement the <code>Node</code> interface must
- also implement the <code>NodeDataTemplate</code> interface, whose
- members must be accessible using binding-specific casting
- mechanisms.</p>
-
- <pre class="idl">interface <dfn>NodeDataTemplate</dfn> {
- readonly attribute Node <span title="dom-dataNode">dataNode</span>;
-};</pre>
-
- <p>The <dfn title="dom-dataNode"><code>dataNode</code></dfn> DOM
- attribute returns the node for which <em>this</em> node was
- generated. It must initially be null. It is set on the nodes that
- form the content generated during the <span
- title="datatemplate-regen">algorithm for updating the generated
- content</span> of elements that are using the data template
- feature.</p>
-
-
- <h5>Mutations</h5>
-
- <p>An element with a non-null <code
- title="dom-templateElement">templateElement</code> is said to be a
- <dfn>data tree user</dfn> of the node identified by the element's
- <code title="dom-refNode">refNode</code> attribute, as well as all
- of that node's children, or, if that attribute is null, of the node
- identified by the element's <code
- title="dom-originalContent">originalContent</code>, as well as all
- <em>that</em> node's children.</p>
-
- <p>Nodes that have one or more <span title="data tree user">data
- tree users</span> associated with them (as per the previous
- paragraph) are themselves termed <dfn title="data tree component
- node">data tree component nodes</dfn>.</p>
-
- <p>Whenever a <span>data tree component node</span> changes its name
- or value, or has one of its attributes change name or value, or has
- an attribute added or removed, or has a child added or removed, the
- user agent must <span>update the generated content</span> of all of
- that node's <span title="data tree user">data tree users</span>.</p>
-
- <p>An element with a non-null <code
- title="dom-templateElement">templateElement</code> is also said to
- be a <dfn>template tree user</dfn> of the node identified by the
- element's <code title="dom-templateElement">templateElement</code>
- attribute, as well as all of that node's children.</p>
-
- <p>Nodes that have one or more <span title="template tree
- user">template tree users</span> associated with them (as per the
- previous paragraph) are themselves termed <dfn title="template tree
- component node">template tree component nodes</dfn>.</p>
-
- <p>Whenever a <span>template tree component node</span> changes its
- name or value, or has one of its attributes change name or value, or
- has an attribute added or removed, or has a child added or removed,
- the user agent must <span>update the generated content</span> of all
- of that node's <span title="template tree user">template tree
- users</span>.</p>
-
- <p class="note">In other words, user agents update the content
- generated from a template whenever either the backing data changes
- or the template itself changes.</p>
-
-
- <h5>Updating the generated content</h5>
-
- <p>When the user agent is to <dfn title="datatemplate-regen">update
- the generated content</dfn> of an element that uses a template, the
- user agent must run the following steps:</p>
-
- <ol>
-
- <li><p>Let <var title="">destination</var> be the element whose
- generated content is being updated.</p></li>
-
- <li><p>If the <var title="">destination</var> element is <i>busy
- loading the template rules or data</i>, then abort these
- steps. Either the steps will be invoked again once the loading has
- completed, or the loading will fail and the generated content will
- be removed at that point.</p></li>
-
- <li><p>Let <var title="">template tree</var> be the element given
- by <var title="">destination</var>'s <code
- title="dom-templateElement">templateElement</code> DOM
- attribute. If it is null, then abort these steps. There are no
- rules to apply.</p></li>
-
- <li><p>Let <var title="">data tree</var> be the node given by <var
- title="">destination</var>'s <code
- title="dom-refNode">refNode</code> DOM attribute. If it is null,
- then let <var title="">data tree</var> be the node given by the
- <code title="dom-originalContent">originalContent</code> DOM
- node.</p></li>
-
- <li><p>Let <var title="">existing nodes</var> be a set of ordered
- lists of nodes, each list being identified by a tuple consisting of
- a node, a node type and name, and a <span
- title="attr-registrationmark">registration mark</span> (a
- string).</p></li>
-
- <li><p>For each node <var title="">node</var> that is a descendant
- of <var title="">destination</var>, if any, add <var
- title="">node</var> to the list identified by the tuple given by:
- <var title="">node</var>'s <code
- title="dom-dataNode">dataNode</code> DOM attribute; the <var
- title="">node</var>'s node type and, if it's an element, its
- qualified name (that is, its namespace and local name), or, if it's
- a processing instruction, its target name<!-- we're basically
- indexing on nodeName here -->, and the value of the <var
- title="">node</var>'s <code
- title="attr-registrationmark">registrationmark</code> attribute, if
- it has one, or the empty string otherwise.</p></li> <!-- XXX should
- non-element nodes inherit the registration marks of their parent?
- or have it set via a PI? -->
-
- <li><p>Remove all the child nodes of <var
- title="">destination</var>, so that its child node list is
- empty.</p></li>
-
- <li><p>Run the <span>Levenberg data node algorithm</span>
- (described below) using <var title="">destination</var> as the
- destination node, <var title="">data tree</var> as the source node,
- <var title="">template tree</var> as the rule container, the empty
- string as the mode, and the <var title="">existing nodes</var> lists
- as the lists of existing nodes.</p></li>
-
-<!--(for now, since we can't guarantee that we'll reset the dataNode
-attribute of nodes that are dynamically moved around between regens,
-we'll just act as if the dataNode attribute is set on creation and
-never reset. This is nice and consistent.)
-
- <li><p>Set the <code title="dom-dataNode">dataNode</code> DOM
- attribute of every node in the <var title="">existing nodes</var>
- lists to null.</p></li>
--->
-
- </ol>
-
- <!--<h6 class="notoc">The Levenberg algorithm</h6>-->
-
- <p>The Levenberg algorithm consists of two algorithms that invoke
- each other recursively, the <span>Levenberg data node
- algorithm</span> and the <span>Levenberg template node
- algorithm</span>. These algorithms use the data structures
- initialized by the set of steps described above.</p>
-
- <p>The <dfn>Levenberg data node algorithm</dfn> is as follows. It is
- always invoked with three DOM nodes, one string, and a set of lists
- as arguments: the <var title="">destination node</var>, the <var
- title="">source node</var>, the <var title="">rule container</var>,
- the <var title="">mode string</var>, and the <var title="">existing
- nodes lists</var> respectively.</p>
-
- <ol>
-
- <li><p>Let <var title="">condition</var> be the first
- <code>rule</code> element child of the <var title="">rule
- container</var> element, or null if there aren't any.</p>
-
- <li><p>If <var title="">condition</var> is null, follow these
- substeps:</p>
-
- <ol>
-
- <li><p>If the <var title="">source node</var> is an element,
- then, for each child <var title="">child node</var> of the <var
- title="">source node</var> element, in tree order, invoke the
- <span>Levenberg data node algorithm</span> recursively, with <var
- title="">destination node</var>, <var title="">child node</var>,
- <var title="">rule container</var>, the empty string, and <var
- title="">existing nodes lists</var> as the five arguments
- respectively.</p></li>
-
- <li><p>Abort the current instance of the <span>Levenberg data
- node algorithm</span>, returning to whatever algorithm invoked
- it.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Let <var title="">matches</var> be a boolean with the value
- true.</p></li>
-
- <li><p>If the <var title="">condition</var> element has a <code
- title="attr-rule-mode">mode</code> attribute, but the value of that
- attribute is not a <span>mode match</span> for the current
- <span>mode string</span>, then let <var title="">matches</var> be
- false.</p></li>
-
- <li><p>If the <var title="">condition</var> element has a <code
- title="attr-rule-condition">condition</code> attribute, and the
- attribute's value, when <span>evaluated as a selector</span>, does
- not match the current <var title="">source node</var>, then let
- <var title="">matches</var> be false.</p></li>
-
- <li><p>If <var title="">matches</var> is true, then follow these
- substeps:</p>
-
- <ol>
-
- <li><p>For each child <var title="">child node</var> of the
- <var title="">condition</var> element, in tree order, invoke the
- <span>Levenberg template node algorithm</span> recursively, with
- the five arguments being <var title="">destination node</var>,
- <var title="">source node</var>, <var title="">rule
- container</var>, <var title="">child node</var>, and <var
- title="">existing nodes lists</var> respectively.</p></li>
-
- <li><p>Abort the current instance of the <span>Levenberg data
- node algorithm</span>, returning to whatever algorithm invoked
- it.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Let <var title="">condition</var> be the next
- <code>rule</code> element that is a child of the <var
- title="">rule container</var> element, after the <var
- title="">condition</var> element itself, or null if there are no
- more <code>rule</code> elements.</p></li>
-
- <li><p>Jump to step 2 in this set of steps.</p></li>
-
- </ol>
-
- <p>The <dfn>Levenberg template node algorithm</dfn> is as
- follows. It is always invoked with four DOM nodes and a set of lists
- as arguments: the <var title="">destination node</var>, the <var
- title="">source node</var>, the <var title="">rule container</var>,
- the <var title="">template node</var>, and the <var
- title="">existing nodes lists</var> respectively.</p>
-
- <ol>
-
- <li><p>If <var title="">template node</var> is a comment node,
- abort the current instance of the <span>Levenberg template node
- algorithm</span>, returning to whatever algorithm invoked
- it.</p></li>
-
- <li><p>If <var title="">template node</var> is a <code>nest</code>
- element, then run these substeps:</p>
-
- <ol>
-
- <li><p>If <var title="">source node</var> is not an element, then
- abort the current instance of the <span>Levenberg template node
- algorithm</span>, returning to whatever algorithm invoked
- it.</p></li>
-
- <li><p>If the <var title="">template node</var> has a <code
- title="attr-nest-mode">mode</code> attribute, then let <var
- title="">mode</var> be the value of that attribute; otherwise,
- let <var title="">mode</var> be the empty string.</p></li>
-
- <li><p>Let <var title="">child node</var> be the first child of
- the <var title="">source node</var> element, or null if <var
- title="">source node</var> has no children.</p></li>
-
- <li><p>If <var title="">child node</var> is null, abort the
- current instance of the <span>Levenberg template node
- algorithm</span>, returning to whatever algorithm invoked
- it.</p></li>
-
- <li><p>If the <var title="">template node</var> element has a
- <code title="attr-nest-filter">filter</code> attribute, and the
- attribute's value, when <span>evaluated as a selector</span>,
- matches <var title="">child node</var>, then invoke the
- <span>Levenberg data node algorithm</span> recursively, with <var
- title="">destination node</var>, <var title="">child node</var>,
- <var title="">rule container</var>, <var title="">mode</var>, and
- <var title="">existing nodes lists</var> as the five arguments
- respectively.</p></li>
-
- <li><p>Let <var title="">child node</var> be <var title="">child
- node</var>'s next sibling, or null if <var title="">child
- node</var> was the last node of <var title="">source
- node</var>.</p></li>
-
- <li><p>Return to step 4 in this set of substeps.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>If <var title="">template node</var> is an element, and that
- element has a <code
- title="attr-registrationmark">registrationmark</code> attribute,
- then let <var title="">registration mark</var> have the value of
- that attribute. Otherwise, let <var title="">registration
- mark</var> be the empty string.</p></li>
-
- <li>
-
- <p>If there is a list in the <var title="">existing nodes
- lists</var> corresponding to the tuple (<var title="">source
- node</var>, the node type and name of <var title="">template
- node</var>, <var title="">registration mark</var>), and that list
- is not empty, then run the following substeps. (For an element
- node, the name of the node is its qualified tag name, i.e. its
- namespace and local name. For a processing instruction, its name
- is the target. For other types of nodes, there is no name.)</p>
-
- <ol>
-
- <li><p>Let <var title="">new node</var> be the first node in that
- list.</p></li>
-
- <li><p>Remove <var title="">new node</var> from that
- list.</p></li>
-
- <li><p>If <var title="">new node</var> is an element, remove all
- the child nodes of <var title="">new node</var>, so that its
- child node list is empty.</p></li>
-
- </ol>
-
- <p>Otherwise, if there is no matching list, or there was, but it
- is now empty, then run these steps instead:</p>
-
- <ol>
-
- <li><p>Let <var title="">new node</var> be a shallow clone of
- <var title="">template node</var>.</p></li>
-
- <li><p>Let <var title="">new node</var>'s <code
- title="dom-dataNode">dataNode</code> DOM attribute be <var
- title="">source node</var>.</p></li>
-
- </ol>
-
- </li>
-
- <li>
-
- <p>If <var title="">new node</var> is an element, run these substeps:</p>
-
- <ol>
-
- <li><p>For each attribute on <var title="">new node</var>, if
- an attribute with the same qualified name is not present on
- <var title="">template node</var>, remove that attribute.</p>
-
- <li>
-
- <p>For each attribute <var title="">attribute</var> on <var
- title="">template node</var>, run these substeps:</p>
-
- <ol>
-
- <li><p>Let <var title="">expanded</var> be the result of
- passing the value of <var title="">attribute</var> to the
- <span>text expansion algorithm for templates</span> along
- with <var title="">source node</var>.</p></li>
-
- <li><p>If an attribute with the same qualified name as <var
- title="">attribute</var> is already present on <var
- title="">new node</var>, then: if its value is different from
- <var title="">expanded</var>, replace its value with <var
- title="">expanded</var>.</p></li>
-
- <li><p>Otherwise, if there is no attribute with the same
- qualified name as <var title="">attribute</var> on <var
- title="">new node</var>, then add an attribute with the same
- namespace, prefix, and local name as <var
- title="">attribute</var>, with its value set to <var
- title="">expanded</var>'s.</p></li>
-
- </ol>
-
- </li>
-
- </ol>
-
- <p>Otherwise, the <var title="">new node</var> is a text node,
- <code>CDATASection</code> node, or processing instruction. Run
- these substeps instead:</p>
-
- <ol>
-
- <li><p>Let <var title="">expanded</var> be the result of passing
- the node value of <var title="">template node</var> (the content
- of the text node, <code>CDATASection</code> node, or processing
- instruction) to the <span>text expansion algorithm for
- templates</span> along with <var title="">source
- node</var>.</p></li>
-
- <li><p>If the value of the <var title="">new node</var> is
- different from <var title="">expanded</var>, then set the value
- of <var title="">new node</var> to <var
- title="">expanded</var>.</p></li>
-
- </ol>
-
- </li>
-
- <li><p>Append <var title="">new node</var> to <var
- title="">destination</var>.</p></li>
-
- <li><p>If <var title="">template node</var> is an element, then,
- for each child <var title="">child node</var> of the <var
- title="">template node</var> element, in tree order, invoke the
- <span>Levenberg template node algorithm</span> recursively, with
- the five arguments being <var title="">new child</var>, <var
- title="">source node</var>, <var title="">rule container</var>,
- <var title="">child node</var>, and <var title="">existing nodes
- lists</var> respectively.</p></li>
-
- </ol>
-
- <p class="XXX">Define: <dfn>evaluated as a selector</dfn></p>
-
- <p class="XXX">Define: <dfn>text expansion algorithm for
- templates</dfn></p> <!-- this is basically used for expanding
- nodeValue values -->
-
-
<h3>Miscellaneous elements</h3>
<h4>The <dfn><code>legend</code></dfn> element</h4>
@@ -57994,8 +57101,6 @@ TODO (or delay):
- dragging the window out of the tab
XXX * in-window non-modal palettes
- with a solution for the mobile space
- XXX * a way of selecting rows, so that you can declaratively have buttons
- outside the template that move a "selected row" around
XXX * calendar with list of days that have events (think: blog calendars)
XXX * find object at (x,y)
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/elementfrompoint.asp
@@ -58163,10 +57268,6 @@ TODO (or delay):
it exists (case insensitive)? - kerz
[or deprecate the lot (->web apps)]
XXX * option.text should do the same as option.textContent
- XXX * select.options.add(), .remove() should exist (and forward to the select)
- XXX * select.add()'s second argument should also be allowed to be an integer (negative means append)
- + see: http://bugzilla.mozilla.org/show_bug.cgi?id=240304
- http://junkyard.damowmow.com/138
XXX * need an attribute that says "the children of this element are in
their own tabbing universe, tabindex should be relative to each
other, not to the document"

0 comments on commit 9afc704

Please sign in to comment.