HTML Standard Tracker

Filter

File a bug

SVNBugCommentTime (UTC)
2157WF2: Defining form=, .form, and the form element pointer. Also, s/initialise/initialize/.2008-09-07 11:15
@@ -4153,21 +4153,21 @@
    determine the value of a byte in <var title="">s</var> which is not
    yet available, or which is past the first 512 bytes of the
    resource, or which is beyond the end of the resource, the user
    agent must stop this algorithm, and assume that the sniffed type of
    the resource is "text/html".</p>
 
    <p class="note">User agents are allowed, by the first step of this
    algorithm, to wait until the first 512 bytes of the resource are
    available.</p></li>
 
-   <li><p>Initialise <var title="">pos</var> to 0.</p></li>
+   <li><p>Initialize <var title="">pos</var> to 0.</p></li>
 
    <li><p>If <span><var title="">s</var>[0]</span> is 0xEF, <span><var
    title="">s</var>[1]</span> is 0xBB, and <span><var
    title="">s</var>[2]</span> is 0xBF, then set <var
    title="">pos</var> to 3. (This skips over a leading UTF-8 BOM, if
    any.)</p></li>
 
    <li><p><i>Loop start:</i> Examine <span><var title="">s</var>[<var
    title="">pos</var>]</span>.</p>
 
@@ -23928,32 +23928,33 @@ function AddCloud(data, x, y) { ... }</pre>
   </dl>
 
   <p class="big-issue">...</p>
 
 
   <h4>The <dfn><code>fieldset</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Flow content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>flow content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd><span>Flow content</span>.</dd>
    <dt>Element-specific attributes:</dt>
    <dd><code title="attr-fieldset-disabled">disabled</code></dd>
-   <dd><code title="attr-fieldset-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLFieldSetElement</dfn> : <span>HTMLElement</span> {
            attribute DOMString <span title="dom-fieldset-disabled">disabled</span>;
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-fieldset-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
 
   readonly attribute DOMString <span title="dom-select-type">type</span>;
 
   readonly attribute <span>HTMLFormControlsCollection</span> <span title="dom-fieldset-elements">elements</span>;
 
   readonly attribute boolean <span title="dom-fieldset-willValidate">willValidate</span>;
   readonly attribute <span>ValidityState</span> <span title="dom-fieldset-validity">validity</span>;
   readonly attribute DOMString <span title="dom-fieldset-validationMessage">validationMessage</span>;
   boolean <span title="dom-fieldset-checkValidatity">checkValidity</span>();
   void <span title="dom-fieldset-setCustomValidity">setCustomValidity</span>(in DOMString error);
@@ -23963,34 +23964,35 @@ function AddCloud(data, x, y) { ... }</pre>
 
   <p class="big-issue">...</p>
 
 
   <h4>The <dfn><code>input</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dd><span>Interactive content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd>Empty.</dd>
    <dt>Element-specific attributes:</dt>
    <dd><code title="attr-input-accept">accept</code></dd>
    <dd><code title="attr-input-action">action</code></dd>
    <dd><code title="attr-input-alt">alt</code></dd>
    <dd><code title="attr-input-autocomplete">autocomplete</code></dd>
    <dd><code title="attr-input-autofocus">autofocus</code></dd>
    <dd><code title="attr-input-checked">checked</code></dd>
    <dd><code title="attr-input-disabled">disabled</code></dd>
    <dd><code title="attr-input-enctype">enctype</code></dd>
-   <dd><code title="attr-input-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dd><code title="attr-input-inputmode">inputmode</code></dd>
    <dd><code title="attr-input-list">list</code></dd>
    <dd><code title="attr-input-max">max</code></dd>
    <dd><code title="attr-input-maxlength">maxlength</code></dd>
    <dd><code title="attr-input-method">method</code></dd>
    <dd><code title="attr-input-min">min</code></dd>
    <dd><code title="attr-input-name">name</code></dd>
    <dd><code title="attr-input-pattern">pattern</code></dd>
    <dd><code title="attr-input-readonly">readonly</code></dd>
    <dd><code title="attr-input-required">required</code></dd>
@@ -24005,21 +24007,21 @@ function AddCloud(data, x, y) { ... }</pre>
 <pre class="idl">interface <dfn>HTMLInputElement</dfn> : <span>HTMLElement</span> {
            attribute DOMString <span title="dom-input-accept">accept</span>;
            attribute DOMString <span title="dom-input-action">action</span>;
            attribute DOMString <span title="dom-input-alt">alt</span>;
            attribute boolean <span title="dom-input-autocomplete">autocomplete</span>;
            attribute boolean <span title="dom-input-autofocus">autofocus</span>;
            attribute boolean <span title="dom-input-defaultChecked">defaultChecked</span>;
            attribute boolean <span title="dom-input-checked">checked</span>;
            attribute boolean <span title="dom-input-disabled">disabled</span>;
            attribute DOMString <span title="dom-input-enctype">enctype</span>;
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-input-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
            attribute DOMString <span title="dom-input-inputmode">inputmode</span>;
   readonly attribute <span>HTMLElement</span> <span title="dom-input-list">list</span>;
            attribute DOMString <span title="dom-input-max">max</span>;
            attribute long <span title="dom-input-maxLength">maxLength</span>;
            attribute DOMString <span title="dom-input-method">method</span>;
            attribute DOMString <span title="dom-input-min">min</span>;
            attribute DOMString <span title="dom-input-name">name</span>;
            attribute DOMString <span title="dom-input-pattern">pattern</span>;
            attribute boolean <span title="dom-input-readOnly">readOnly</span>;
            attribute boolean <span title="dom-input-required">required</span>;
@@ -24055,43 +24057,44 @@ function AddCloud(data, x, y) { ... }</pre>
 
   <p class="big-issue">...</p>
 
 
   <h4>The <dfn><code>button</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dd><span>Interactive content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dt>Element-specific attributes:</dt>
    <dd><code title="attr-button-action">action</code></dd>
    <dd><code title="attr-button-autofocus">autofocus</code></dd>
    <dd><code title="attr-button-disabled">disabled</code></dd>
    <dd><code title="attr-button-enctype">enctype</code></dd>
-   <dd><code title="attr-button-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dd><code title="attr-button-method">method</code></dd>
    <dd><code title="attr-button-name">name</code></dd>
    <dd><code title="attr-button-target">target</code></dd>
    <dd><code title="attr-button-type">type</code></dd>
    <dd><code title="attr-button-value">value</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLButtonElement</dfn> : <span>HTMLElement</span> {
            attribute DOMString <span title="dom-button-action">action</span>;
            attribute boolean <span title="dom-button-autofocus">autofocus</span>;
            attribute boolean <span title="dom-button-disabled">disabled</span>;
            attribute DOMString <span title="dom-button-enctype">enctype</span>;
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-button-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
            attribute DOMString <span title="dom-button-method">method</span>;
            attribute DOMString <span title="dom-button-name">name</span>;
            attribute DOMString <span title="dom-button-target">target</span>;
            attribute DOMString <span title="dom-button-type">type</span>;
            attribute DOMString <span title="dom-button-value">value</span>;
 
   readonly attribute <span>HTMLCollection</span> <span title="dom-button-labels">labels</span>;
 
   readonly attribute boolean <span title="dom-button-willValidate">willValidate</span>;
   readonly attribute <span>ValidityState</span> <span title="dom-button-validity">validity</span>;
@@ -24104,63 +24107,65 @@ function AddCloud(data, x, y) { ... }</pre>
 
   <p class="big-issue">...</p>
 
 
   <h4>The <dfn><code>label</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dd><span>Interactive content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dt>Element-specific attributes:</dt>
-   <dd><code title="attr-label-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dd><code title="attr-label-for">for</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLLabelElement</dfn> : <span>HTMLElement</span> {
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-label-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
            attribute DOMString <span title="dom-label-htmlFor">htmlFor</span>;
   readonly attribute <span>HTMLElement</span> <span title="dom-label-control">control</span>;
 };</pre>
    </dd> 
   </dl>
 
   <p class="big-issue">...</p>
 
 
   <h4>The <dfn><code>select</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dd><span>Interactive content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd>Zero or more <code>option</code> or <code>optgroup</code> elements.</dd>
    <dt>Element-specific attributes:</dt>
    <dd><code title="attr-select-autofocus">autofocus</code></dd>
    <dd><code title="attr-select-disabled">disabled</code></dd>
-   <dd><code title="attr-select-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dd><code title="attr-select-multiple">multiple</code></dd>
    <dd><code title="attr-select-name">name</code></dd>
    <dd><code title="attr-select-size">size</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLSelectElement</dfn> : <span>HTMLElement</span> {
            attribute boolean <span title="dom-select-autofocus">autofocus</span>;
            attribute boolean <span title="dom-select-disabled">disabled</span>;
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-select-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
            attribute boolean <span title="dom-select-multiple">multiple</span>;
            attribute DOMString <span title="dom-select-name">name</span>;
            attribute boolean <span title="dom-select-size">size</span>;
 
   readonly attribute DOMString <span title="dom-select-type">type</span>;
 
   readonly attribute <span>HTMLOptionsCollection</span> <span title="dom-select-options">options</span>;
            attribute unsigned long <span title="dom-select-length">length</span>;
   [IndexGetter] <span>HTMLElement</span> <span title="dom-select-XXX9">XXX9</span>(in unsigned long index);
 
@@ -24280,46 +24285,47 @@ interface <dfn>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
    <code>option</code> element). ... argument processing ...
   </p>
 
 
   <h4>The <dfn><code>textarea</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dd><span>Interactive content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd>Text.</dd>
    <dt>Element-specific attributes:</dt>
    <dd><code title="attr-textarea-accept">accept</code></dd>
    <dd><code title="attr-textarea-autofocus">autofocus</code></dd>
    <dd><code title="attr-textarea-cols">cols</code></dd>
    <dd><code title="attr-textarea-disabled">disabled</code></dd>
-   <dd><code title="attr-textarea-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dd><code title="attr-textarea-inputmode">inputmode</code></dd>
    <dd><code title="attr-textarea-maxlength">maxlength</code></dd>
    <dd><code title="attr-textarea-name">name</code></dd>
    <dd><code title="attr-textarea-pattern">pattern</code></dd>
    <dd><code title="attr-textarea-readonly">readonly</code></dd>
    <dd><code title="attr-textarea-required">required</code></dd>
    <dd><code title="attr-textarea-rows">rows</code></dd>
    <dd><code title="attr-textarea-wrap">wrap</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLTextAreaElement</dfn> : <span>HTMLElement</span> {
            attribute DOMString <span title="dom-textarea-accept">accept</span>;
            attribute boolean <span title="dom-textarea-autofocus">autofocus</span>;
            attribute unsigned long <span title="dom-textarea-cols">cols</span>;
            attribute boolean <span title="dom-textarea-disabled">disabled</span>;
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-textarea-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
            attribute DOMString <span title="dom-textarea-inputmode">inputmode</span>;
            attribute long <span title="dom-textarea-maxLength">maxLength</span>;
            attribute DOMString <span title="dom-textarea-name">name</span>;
            attribute DOMString <span title="dom-textarea-pattern">pattern</span>;
            attribute boolean <span title="dom-textarea-readOnly">readOnly</span>;
            attribute boolean <span title="dom-textarea-required">required</span>;
            attribute unsigned long <span title="dom-textarea-rows">rows</span>;
            attribute DOMString <span title="dom-textarea-wrap">wrap</span>;
 
   readonly attribute DOMString <span title="dom-textarea-type">type</span>;
@@ -24343,56 +24349,145 @@ interface <dfn>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
   <!-- XXX add selectionStart and company -->
 
   <p class="big-issue">...</p>
 
 
   <h4>The <dfn><code>output</code></dfn> element</h4>
 
   <dl class="element">
    <dt>Categories</dt>
    <dd><span>Phrasing content</span>.</dd>
+   <dd><span>Form-associated element</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>phrasing content</span> is expected.</dd>
    <dt>Content model:</dt>
    <dd><span>Phrasing content</span>.</dd>
    <dt>Element-specific attributes:</dt>
    <dd><code title="attr-output-for">for</code></dd>
-   <dd><code title="attr-output-form">form</code></dd>
+   <dd><code title="attr-fae-form">form</code></dd>
    <dd><code title="attr-output-name">name</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLOutputElement</dfn> : <span>HTMLElement</span> {
            attribute DOMString <span title="dom-output-wrap">htmlFor</span>;
-  readonly attribute <span>HTMLFormElement</span> <span title="dom-output-form">form</span>;
+  readonly attribute <span>HTMLFormElement</span> <span title="dom-fae-form">form</span>;
            attribute DOMString <span title="dom-output-name">name</span>;
 
   readonly attribute DOMString <span title="dom-output-type">type</span>;
            attribute DOMString <span title="dom-output-defaultValue">defaultValue</span>;
            attribute DOMString <span title="dom-output-value">value</span>;
 
   readonly attribute boolean <span title="dom-output-willValidate">willValidate</span>;
   readonly attribute <span>ValidityState</span> <span title="dom-output-validity">validity</span>;
   readonly attribute DOMString <span title="dom-output-validationMessage">validationMessage</span>;
   boolean <span title="dom-output-checkValidatity">checkValidity</span>();
   void <span title="dom-output-setCustomValidity">setCustomValidity</span>(in DOMString error);
 };</pre>
    </dd> 
   </dl>
 
   <p class="big-issue">...</p>
 
 
   <h4>Association of controls and forms</h4>
 
-  <p class="big-issue">When an element is <dfn
-  title="concept-form-association">associated with a form</dfn>,
-  ...</p>
+  <!-- XXX consider xreffing the 'ID' term in this section -->
+
+  <p>A <dfn>form-associated element</dfn> is one that can have a
+  relationship with a <code>form</code> element, which is called the
+  element's <dfn>form owner</dfn>.</p>
+
+  <p>A <span>form-associated element</span> is, by default, associated
+  with its nearest ancestor <code>form</code> element (as described
+  below), but may have a <dfn
+  title="attr-fae-form"><code>form</code></dfn> attribute specified to
+  override this.</p>
+
+  <p>If a <span>form-associated element</span> has a <code
+  title="attr-fae-form">form</code> attribute specified, then its
+  value must be the ID of a <code>form</code> element in the element's
+  owner <code>Document</code>.</p>
+
+  <p>When a <span>form-associated element</span> is created, its
+  <span>form owner</span> must be initialized to null (no owner).</p>
+
+  <p>When a <span>form-associated element</span> is to be <dfn
+  title="concept-form-association">associated</dfn> with a form, its
+  <span>form owner</span> must be set to that form.</p>
+
+  <p>When a <span>form-associated element</span>'s ancestor chain
+  changes, e.g. because it or one of its ancestors was inserted or
+  removed from a <code>Document</code>, then the user agent must
+  <span>reset the form owner</span> of that element.</p>
+
+  <p>When a <span>form-associated element</span>'s <code
+  title="attr-fae-form">form</code> attribute is added, removed, or
+  has its value changed, then the user agent must <span>reset the form
+  owner</span> of that element.</p>
+
+  <p>When a <span>form-associated element</span> has a <code
+  title="attr-fae-form">form</code> attribute and the ID of any of the
+  <code>form</code> elements in the <code>Document</code> changes,
+  then the user agent must <span>reset the form owner</span> of that
+  <span>form-associated element</span>.</p>
+
+  <p>When the user agent is to <dfn>reset the form owner</dfn> of a
+  <span>form-associated element</span>, it must run the following
+  steps:</p>
+
+  <ol>
+
+   <li><p>If the element's <span>form owner</span> is not null, and
+   the element's <code title="attr-fae-form">form</code> content
+   attribute is not present, and the element's <span>form owner</span>
+   is one of the ancestors of the element after the change to the
+   ancestor chain, then do nothing, and abort these steps.</p></li>
+
+   <li><p>Let the element's <span>form owner</span> be null.</p></li>
+
+   <li>
+
+    <p>If the element has a <code title="attr-fae-form">form</code>
+    content attribute, then run these substeps:</p>
+
+    <ol>
+
+     <!-- XXX how does ID matching get affected by quirks mode? -->
+     <li><p>If the first element in the <code>Document</code> to have
+     an ID that is equal to the element's <code
+     title="attr-fae-form">form</code> content attribute's value is a
+     <code>form</code> element, then <span
+     title="concept-form-association">associate</span> the
+     <span>form-associated element</span> with that <code>form</code>
+     element.</p></li>
+
+     <li><p>Abort the "reset the form owner" steps.</p></li>
+
+    </ol>
+
+   </li>
+
+   <li><p>Otherwise, if the <span>form-associated element</span> in
+   question has an ancestor <code>form</code> element, then <span
+   title="concept-form-association">associate</span> the
+   <span>form-associated element</span> with the nearest such ancestor
+   <code>form</code> element.</p></li>
+
+   <li><p>Otherwise, the element is left unassociated.</p></li>
+
+  </ol>
+
+  <p><span title="form-associated element">Form-associated
+  elements</span> have a <dfn
+  title="dom-foa-form"><code>form</code></dfn> DOM attribute, which,
+  on getting, must return the element's <span>form owner</span>, or
+  null if there isn't one.</p>
 
 
   <h4>Processing model</h4>
 
   <p class="big-issue">See <a href="http://www.whatwg.org/specs/web-forms/current-work/#extend-form-controls">WF2</a> for now</p>
 
 
   <h5>Form submission</h5>
 
   <p class="big-issue">See <a href="http://www.whatwg.org/specs/web-forms/current-work/#form-submission">WF2</a> for now</p>
@@ -34369,21 +34464,21 @@ style/default.css</pre>
   <pre class="idl">interface <dfn>PopStateEvent</dfn> : Event {
   readonly attribute DOMObject <span title="dom-PopStateEvent-state">state</span>;
   void <span title="dom-PopStateEvent-initPopStateEvent">initPopStateEvent</span>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMObject stateArg);
   void <span title="dom-PopStateEvent-initPopStateEventNS">initPopStateEventNS</span>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMObject stateArg);
 };</pre>
 
   <p>The <dfn
   title="dom-PopStateEvent-initPopStateEvent"><code>initPopStateEvent()</code></dfn>
   and <dfn
   title="dom-PopStateEvent-initPopStateEventNS"><code>initPopStateEventNS()</code></dfn>
-  methods must initialise the event in a manner analogous to the
+  methods must initialize the event in a manner analogous to the
   similarly-named methods in the DOM3 Events interfaces. <a
   href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
 
   <p>The <dfn title="dom-PopStateEvent-state"><code>state</code></dfn>
   attribute represents the context information for the event, or null,
   if the state represented is the initial state of the
   <code>Document</code>.</p>
 
 
 
@@ -35767,21 +35862,21 @@ user reload must be equivalent to .reload()
   readonly attribute DOMString <span title="dom-StorageEvent-url">url</span>;
   readonly attribute <span>Window</span> <span title="dom-StorageEvent-source">source</span>;
   void <span title="dom-StorageEvent-initStorageEvent">initStorageEvent</span>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString keyArg, in DOMString oldValueArg, in DOMString newValueArg, in DOMString urlArg, in Window sourceArg);
   void <span title="dom-StorageEvent-initStorageEventNS">initStorageEventNS</span>(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString keyArg, in DOMString oldValueArg, in DOMString newValueArg, in DOMString urlArg, in Window sourceArg);
 };</pre>
 
   <p>The <dfn
   title="dom-StorageEvent-initStorageEvent"><code>initStorageEvent()</code></dfn>
   and <dfn
   title="dom-StorageEvent-initStorageEventNS"><code>initStorageEventNS()</code></dfn>
-  methods must initialise the event in a manner analogous to the
+  methods must initialize the event in a manner analogous to the
   similarly-named methods in the DOM3 Events interfaces. <a
   href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
 
   <p>The <dfn title="dom-StorageEvent-key"><code>key</code></dfn>
   attribute represents the key being changed.</p>
 
   <p>The <dfn
   title="dom-StorageEvent-oldValue"><code>oldValue</code></dfn>
   attribute represents the old value of the key being changed.</p>
 
@@ -39163,21 +39258,21 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
 };</pre>
 
   <p class="issue">We should have modifier key information in here too
   (shift/ctrl, etc), like with mouse events and like with the context
   menu event.</p>
 
   <p>The <dfn
   title="dom-DragEvent-initDragEvent"><code>initDragEvent()</code></dfn>
   and <dfn
   title="dom-DragEvent-initDragEventNS"><code>initDragEventNS()</code></dfn>
-  methods must initialise the event in a manner analogous to the
+  methods must initialize the event in a manner analogous to the
   similarly-named methods in the DOM3 Events interfaces. <a
   href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
 
   <p>The <dfn
   title="dom-DragEvent-dataTransfer"><code>dataTransfer</code></dfn>
   attribute of the <code>DragEvent</code> interface represents the
   context information for the event.</p>
 
   <pre class="idl">interface <dfn>DataTransfer</dfn> {
            attribute DOMString <span title="dom-DataTransfer-dropEffect">dropEffect</span>;
@@ -39219,21 +39314,21 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
 
   <p>The attribute must ignore any attempts to set it to a value other
   than <code title="">none</code>, <code title="">copy</code>, <code
   title="">link</code>, and <code title="">move</code>. On getting,
   the attribute must return the last of those four values that it was
   set to.</p>
 
   <p>The <dfn
   title="dom-DataTransfer-effectAllowed"><code>effectAllowed</code></dfn>
   attribute is used in the drag-and-drop processing model to
-  initialise the <code
+  initialize the <code
   title="dom-DataTransfer-dropEffect">dropEffect</code> attribute
   during the <code title="event-dragenter">dragenter</code> and <code
   title="event-dragover">dragover</code> events.</p>
 
   <p>The attribute must ignore any attempts to set it to a value other
   than <code title="">none</code>, <code title="">copy</code>, <code
   title="">copyLink</code>, <code title="">copyMove</code>, <code
   title="">link</code>, <code title="">linkMove</code>, <code
   title="">move</code>, <code title="">all</code>, and <code
   title="">uninitialized</code>. On getting, the attribute must return
@@ -40399,21 +40494,21 @@ http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSPr
   <pre class="idl">interface <dfn>UndoManagerEvent</dfn> : Event {
   readonly attribute DOMObject <span title="dom-UndoManagerEvent-data">data</span>;
   void <span title="dom-UndoManagerEvent-initUndoManagerEvent">initUndoManagerEvent</span>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMObject dataArg);
   void <span title="dom-UndoManagerEvent-initUndoManagerEventNS">initUndoManagerEventNS</span>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMObject dataArg);
 };</pre>
 
   <p>The <dfn
   title="dom-UndoManagerEvent-initUndoManagerEvent"><code>initUndoManagerEvent()</code></dfn>
   and <dfn><code
   title="dom-UndoManagerEvent-initUndoManagerEventNS">initUndoManagerEventNS()</code></dfn>
-  methods must initialise the event in a manner analogous to the
+  methods must initialize the event in a manner analogous to the
   similarly-named methods in the DOM3 Events interfaces. <a
   href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
 
   <p>The <dfn title="dom-UndoManagerEvent-data"><code>data</code></dfn>
   attribute represents the <span>undo object</span> for the event.</p>
 
   <p>The <dfn title="event-undo"><code>undo</code></dfn> and <dfn
   title="event-redo"><code>redo</code></dfn> events do not bubble,
   cannot be canceled, and have no default action. When the user agent
   fires one of these events it must use the
@@ -40875,21 +40970,21 @@ XXX Once we resolve the style="" issue, address these:
   readonly attribute <span>Window</span> <span title="dom-MessageEvent-source">source</span>;
   readonly attribute <span>MessagePort</span> <span title="dom-MessageEvent-messagePort">messagePort</span>;
   void <span title="dom-MessageEvent-initMessageEvent">initMessageEvent</span>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString dataArg, in DOMString originArg, in DOMString lastEventIdArg, in Window sourceArg, in <span>MessagePort</span> messagePortArg);
   void <span title="dom-MessageEvent-initMessageEventNS">initMessageEventNS</span>(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString dataArg, in DOMString originArg, in DOMString lastEventIdArg, in Window sourceArg, in <span>MessagePort</span> messagePortArg);
 };</pre>
 
   <p>The <dfn
   title="dom-MessageEvent-initMessageEvent"><code>initMessageEvent()</code></dfn>
   and <dfn
   title="dom-MessageEvent-initMessageEventNS"><code>initMessageEventNS()</code></dfn>
-  methods must initialise the event in a manner analogous to the
+  methods must initialize the event in a manner analogous to the
   similarly-named methods in the DOM3 Events interfaces. <a
   href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
 
   <p>The <dfn
   title="dom-MessageEvent-data"><code>data</code></dfn>
   attribute represents the message being sent.</p>
 
   <p>The <dfn
   title="dom-MessageEvent-origin"><code>origin</code></dfn> attribute
   represents, in <span>server-sent events</span> and
@@ -45064,21 +45159,21 @@ interface <dfn>MessageChannel</dfn> {
    document.</p></dd>
 
   </dl>
 
   <p>The <span>stack of open elements</span> is said to <dfn
   title="has an element in scope">have an element in scope</dfn> when
   the following algorithm terminates in a match state:</p>
 
   <ol>
 
-   <li><p>Initialise <var title="">node</var> to be the <span>current
+   <li><p>Initialize <var title="">node</var> to be the <span>current
    node</span> (the bottommost node of the stack).</p></li>
 
    <li><p>If <var title="">node</var> is the target node, terminate in
    a match state.</p></li>
 
    <li><p>Otherwise, if <var title="">node</var> is one of the
    following elements, terminate in a failure state:</p>
     <ul class="brief">
      <li><code>applet</code> in the HTML namespace</li>
      <li><code>caption</code> in the HTML namespace</li>
@@ -45101,21 +45196,21 @@ interface <dfn>MessageChannel</dfn> {
 
   </ol>
 
   <p>The <span>stack of open elements</span> is said to <dfn
   title="has an element in table scope">have an element in <em>table
   scope</em></dfn> when the following algorithm terminates in a match
   state:</p>
 
   <ol>
 
-   <li><p>Initialise <var title="">node</var> to be the <span>current
+   <li><p>Initialize <var title="">node</var> to be the <span>current
    node</span> (the bottommost node of the stack).</p></li>
 
    <li><p>If <var title="">node</var> is the target node, terminate in
    a match state.</p></li>
 
    <li><p>Otherwise, if <var title="">node</var> is one of the
    following elements, terminate in a failure state:</p>
     <ul class="brief">
      <li><code>html</code> in the HTML namespace</li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
      <li><code>table</code> in the HTML namespace</li>
@@ -47919,37 +48014,38 @@ interface <dfn>MessageChannel</dfn> {
    <dd>
 
     <p>If the <span>stack of open elements</span> <span title="has
     an element in scope">has a <code>p</code> element in
     scope</span>, then act as if an end tag with the tag name
     "p" had been seen.</p>
 
     <p><span>Insert an HTML element</span> for the token.</p>
 
     <p>If the <span><code title="">form</code> element pointer</span>
-    is not null, then <span
+    is not null and the newly created element doesn't have a <code
+    title="attr-fae-form">form</code> attribute, then <span
     title="concept-form-association">associate</span> the newly
     created <code>fieldset</code> element with the <code>form</code>
     element pointed to by the <span><code title="">form</code> element
     pointer</span>.</p>
 
    </dd>
 
    <!-- as normal, but imply </li> when there's another <li> open in weird cases -->
    <dt>A start tag whose tag name is "li"</dt>
    <dd>
 
     <p>Run the following algorithm:</p>
 
     <ol>
 
-     <li><p>Initialise <var title="">node</var> to be the <span>current
+     <li><p>Initialize <var title="">node</var> to be the <span>current
      node</span> (the bottommost node of the stack).</p></li>
 
      <li><p>If <var title="">node</var> is an <code>li</code> element,
      then act as if an end tag with the tag name "li" had
      been seen, then jump to the last step.</p></li>
 
      <li><p>If <var title="">node</var> is not in the
      <span>formatting</span> category, and is not in the
      <span>phrasing</span> category, and is not an
      <code>address</code>, <code>div</code>, or <code>p</code>
@@ -47983,21 +48079,21 @@ interface <dfn>MessageChannel</dfn> {
    </dd>
 
    <!-- as normal, but imply </dt> or </dd> when there's another <dt> or <dd> open in weird cases  -->
    <dt>A start tag whose tag name is one of: "dd", "dt"</dt>
    <dd>
 
     <p>Run the following algorithm:</p>
 
     <ol>
 
-     <li><p>Initialise <var title="">node</var> to be the <span>current
+     <li><p>Initialize <var title="">node</var> to be the <span>current
      node</span> (the bottommost node of the stack).</p></li>
 
      <li><p>If <var title="">node</var> is a <code>dd</code> or
      <code>dt</code> element, then act as if an end tag with the same
      tag name as <var title="">node</var> had been seen, then jump to
      the last step.</p></li>
 
      <li><p>If <var title="">node</var> is not in the
      <span>formatting</span> category, and is not in the
      <span>phrasing</span> category, and is not an
@@ -48467,21 +48563,22 @@ interface <dfn>MessageChannel</dfn> {
     then reprocess the token.</p>
 
     <p>Otherwise:</p>
 
     <p><span>Reconstruct the active formatting elements</span>, if
     any.</p>
 
     <p><span>Insert an HTML element</span> for the token.</p>
 
     <p>If the <span><code title="">form</code> element pointer</span>
-    is not null, then <span
+    is not null and the newly created element doesn't have a <code
+    title="attr-fae-form">form</code> attribute, then <span
     title="concept-form-association">associate</span> the
     <code>button</code> element with the <code>form</code> element
     pointed to by the <span><code title="">form</code> element
     pointer</span>.</p>
 
     <p>Insert a marker at the end of the <span>list of active
     formatting elements</span>.</p>
 
    </dd>
 
@@ -48614,38 +48711,40 @@ interface <dfn>MessageChannel</dfn> {
     any.</p>
 
     <p><span>Insert an HTML element</span> for the token. Immediately
     pop the <span>current node</span> off the <span>stack of open
     elements</span>.</p>
 
     <p><span title="acknowledge self-closing flag">Acknowledge the
     token's <i>self-closing flag</i></span>, if it is set.</p>
 
     <p>If the <span><code title="">form</code> element pointer</span>
-    is not null, then <span
+    is not null and the newly created element doesn't have a <code
+    title="attr-fae-form">form</code> attribute, then <span
     title="concept-form-association">associate</span> the newly
     created <code>input</code> element with the <code>form</code>
     element pointed to by the <span><code title="">form</code> element
     pointer</span>.</p>
 
    </dd>
 
    <dt>A start tag whose tag name is "label"</dt>
    <dd>
 
     <p><span>Reconstruct the active formatting elements</span>, if
     any.</p>
 
     <p><span>Insert an HTML element</span> for the token.</p>
 
     <p>If the <span><code title="">form</code> element pointer</span>
-    is not null, then <span
+    is not null and the newly created element doesn't have a <code
+    title="attr-fae-form">form</code> attribute, then <span
     title="concept-form-association">associate</span> the newly
     created <code>label</code> element with the <code>form</code>
     element pointed to by the <span><code title="">form</code> element
     pointer</span>.</p>
 
    </dd>
 
    <dt id="isindex">A start tag whose tag name is "isindex"</dt>
    <dd>
 
@@ -48728,21 +48827,22 @@ interface <dfn>MessageChannel</dfn> {
 -->
 
    <dt>A start tag whose tag name is "textarea"</dt>
    <dd>
 
     <p><span>Create an element for the token</span> in the <span>HTML
     namespace</span>. Append the new element to the <span>current
     node</span>.</p>
 
     <p>If the <span><code title="">form</code> element pointer</span>
-    is not null, then <span
+    is not null and the newly created element doesn't have a <code
+    title="attr-fae-form">form</code> attribute, then <span
     title="concept-form-association">associate</span> the newly
     created <code>textarea</code> element with the <code>form</code>
     element pointed to by the <span><code title="">form</code> element
     pointer</span>.</p>
 
     <p>Switch the tokeniser's <span>content model flag</span> to
     the RCDATA state.</p>
 
     <p>If the next token is a U+000A LINE FEED (LF) character
     token, then ignore that token and move on to the next
@@ -48775,21 +48875,22 @@ interface <dfn>MessageChannel</dfn> {
 
    <dt>A start tag whose tag name is "select"</dt>
    <dd>
 
     <p><span>Reconstruct the active formatting elements</span>, if
     any.</p>
 
     <p><span>Insert an HTML element</span> for the token.</p>
 
     <p>If the <span><code title="">form</code> element pointer</span>
-    is not null, then <span
+    is not null and the newly created element doesn't have a <code
+    title="attr-fae-form">form</code> attribute, then <span
     title="concept-form-association">associate</span> the
     <code>select</code> element with the <code>form</code> element
     pointed to by the <span><code title="">form</code> element
     pointer</span>.</p>
 
     <p>If the <span>insertion mode</span> is one of <span
     title="insertion mode: in table">in table</span>", "<span
     title="insertion mode: in caption">in caption</span>", "<span
     title="insertion mode: in column group">in column group</span>",
     "<span title="insertion mode: in table body">in table
@@ -48947,21 +49048,21 @@ interface <dfn>MessageChannel</dfn> {
 
    </dd>
 
    <dt>Any other end tag</dt>
    <dd>
 
     <p>Run the following steps:</p>
 
     <ol>
 
-     <li><p>Initialise <var title="">node</var> to be the <span>current
+     <li><p>Initialize <var title="">node</var> to be the <span>current
      node</span> (the bottommost node of the stack).</p></li>
 
      <li><p>If <var title="">node</var> has the same tag name as
      the end tag token, then:</p>
 
       <ol>
 
        <li><p><span>Generate implied end tags</span>.</p></li>
 
        <li><p>If the tag name of the end tag token does not match
@@ -50677,21 +50778,21 @@ http://lxr.mozilla.org/seamonkey/search?string=nested
   algorithm</dfn>. The algorithm takes as input a DOM
   <code>Element</code> or <code>Document</code>, referred to as <var
   title="">the node</var>, and either returns a string or raises an
   exception.</p>
 
   <p class="note">This algorithm serializes the <em>children</em> of
   the node being serialized, not the node itself.</p>
 
   <ol>
 
-   <li><p>Let <var title="">s</var> be a string, and initialise it to
+   <li><p>Let <var title="">s</var> be a string, and initialize it to
    the empty string.</p></li>
 
    <li>
 
     <p>For each child node of <var title="">the node</var>, in
     <span>tree order</span>, run the following steps:
 
     <ol>
 
      <li><p>Let <var title="">current node</var> be the child node

|