@@ -3155,6 +3155,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
31553155                      <dfn data-x="concept-element-is-value" data-x-href="https://dom.spec.whatwg.org/#concept-element-is-value"><code data-x="">is</code> value</dfn></li>
31563156
31573157     <li><dfn data-x-href="https://dom.spec.whatwg.org/#mutationobserver"><code>MutationObserver</code></dfn> interface and <dfn data-x-href="https://dom.spec.whatwg.org/#mutation-observers">mutation observers</dfn> in general</li>
3158+      <li><dfn data-x-href="https://dom.spec.whatwg.org/#valid-element-local-name">valid element local name</dfn></li>
31583159    </ul>
31593160
31603161    <p>The following features are defined in <cite>UI Events</cite>: <ref spec=UIEVENTS></p>
@@ -69985,43 +69986,52 @@ document.body.append(parent);
6998569986
6998669987  <hr>
6998769988
69988-   <p>A < dfn export>valid custom element name</dfn> is a sequence  of characters <var>name</var> that 
69989-   meets all of the following requirements :</p>
69989+   <p>A string <var>name</var> is a < dfn export>valid custom element name</dfn> if all  of the 
69990+   following conditions are true :</p>
6999069991
6999169992  <ul>
6999269993   <li>
69993-     <p><var>name</var> must match the <code
69994-     data-x="prod-PotentialCustomElementName">PotentialCustomElementName</code> production:</p>
69994+     <p><var>name</var> is a <span>valid element local name</span>;</p>
6999569995
69996-     <dl>
69997-      <dt><code data-x=""><dfn
69998-      data-x="prod-PotentialCustomElementName">PotentialCustomElementName</dfn> ::=</code></dt>
69999-      <dd><code data-x="">[a-z] (<span data-x="prod-PCENChar">PCENChar</span>)* '-'
70000-      (<span data-x="prod-PCENChar">PCENChar</span>)*</code></dd>
70001- 
70002-      <dt><code data-x=""><dfn data-x="prod-PCENChar">PCENChar</dfn> ::=</code></dt>
70003-      <dd><code data-x="">"-" | "." | [0-9] | "_" | [a-z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] |
70004-      [#xF8-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] |
70005-      [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
70006-      [#x10000-#xEFFFF]</code></dd>
70007-     </dl>
69996+     <p class="note">This ensures the custom element can be created with <code
69997+     data-x="dom-Document-createElement">createElement()</code>.</p>
69998+    </li>
69999+ 
70000+    <li>
70001+     <p><var>name</var>'s first <span>code point</span> is an <span>ASCII lower alpha</span>;</p>
70002+ 
70003+     <p class="note">This ensures the HTML parser will treat the name as a tag name instead of as
70004+     text.</p>
70005+    </li>
7000870006
70009-     <p>This uses the <a href="https://www.w3.org/TR/xml/#sec-notation">EBNF notation</a> from the
70010-     <cite>XML</cite> specification. <ref spec=XML></p>
70007+    <li>
70008+     <p><var>name</var> does not contain any <span data-x="ASCII upper alpha">ASCII upper
70009+     alphas</span>;</p>
70010+ 
70011+     <p class="note">This ensures the user agent can always treat HTML elements
70012+     ASCII-case-insensitively.</p>
7001170013   </li>
7001270014
7001370015   <li>
70014-     <p><var>name</var> must not be any of the following:</p>
70016+     <p><var>name</var> contains a U+002D (-); and</p>
70017+ 
70018+     <p class="note">This used for namespacing and to ensure forward compatibility (since no
70019+     elements will be added to HTML, SVG, or MathML with hyphen-containing local names in the
70020+     future).</p>
70021+    </li>
70022+ 
70023+    <li>
70024+     <p><var>name</var> is not one of the following:</p>
7001570025
7001670026    <ul class="brief">
70017-      <li><code data-x="">annotation-xml</code></li>
70018-      <li><code data-x="">color-profile</code></li>
70019-      <li><code data-x="">font-face</code></li>
70020-      <li><code data-x="">font-face-src</code></li>
70021-      <li><code data-x="">font-face-uri</code></li>
70022-      <li><code data-x="">font-face-format</code></li>
70023-      <li><code data-x="">font-face-name</code></li>
70024-      <li><code data-x="">missing-glyph</code></li>
70027+      <li>" <code data-x="">annotation-xml</code>" </li>
70028+      <li>" <code data-x="">color-profile</code>" </li>
70029+      <li>" <code data-x="">font-face</code>" </li>
70030+      <li>" <code data-x="">font-face-src</code>" </li>
70031+      <li>" <code data-x="">font-face-uri</code>" </li>
70032+      <li>" <code data-x="">font-face-format</code>" </li>
70033+      <li>" <code data-x="">font-face-name</code>" </li>
70034+      <li>" <code data-x="">missing-glyph</code>" </li>
7002570035    </ul>
7002670036
7002770037    <p class="note">The list of names above is the summary of all hyphen-containing element names
@@ -70030,34 +70040,14 @@ document.body.append(parent);
7003070040   </li>
7003170041  </ul>
7003270042
70033-   <div class="note">
70034-    <p>These requirements ensure a number of goals for <span data-x="valid custom element name">valid
70035-    custom element names</span>:</p>
70036- 
70037-    <ul>
70038-     <li><p>They start with an <span>ASCII lower alpha</span>, ensuring that the HTML parser will
70039-     treat them as tags instead of as text.</li>
70040- 
70041-     <li><p>They do not contain any <span data-x="ASCII upper alpha">ASCII upper alphas</span>,
70042-     ensuring that the user agent can always treat HTML elements ASCII-case-insensitively.</p></li>
70043- 
70044-     <li><p>They contain a hyphen, used for namespacing and to ensure forward compatibility (since no
70045-     elements will be added to HTML, SVG, or MathML with hyphen-containing local names in the
70046-     future).</p></li>
70047- 
70048-     <li><p>They can always be created with <code
70049-     data-x="dom-Document-createElement">createElement()</code> and <code
70050-     data-x="dom-Document-createElementNS">createElementNS()</code>, which have restrictions that go
70051-     beyond the parser's.</p></li>
70052-    </ul>
70053- 
70054-    <p>Apart from these restrictions, a large variety of names is allowed, to give maximum
70055-    flexibility for use cases like <code data-x=""><math-α></code> or <code
70056-    data-x=""><emotion-😍></code>.</p>
70057-   </div>
70043+   <p>Apart from these restrictions, a large variety of names is allowed, to give maximum
70044+   flexibility for use cases like <code data-x=""><math-α></code> or <code
70045+   data-x=""><emotion-😍></code>.</p>
7005870046
7005970047  <div w-nodev>
7006070048
70049+   <hr>
70050+ 
7006170051  <p>A <dfn>custom element definition</dfn> describes a <span>custom element</span> and consists
7006270052  of:</p>
7006370053
0 commit comments