-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Disambiguate attribute declarations from content attributes #10756
Open
sideshowbarker
wants to merge
1
commit into
main
Choose a base branch
from
sideshowbarker/attribute-declarations
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -677,11 +677,11 @@ interface <dfn data-x="">Example</dfn> { | |
|
||
<pre><code class="html"><a href="demo.html">simple</a></code></pre> | ||
|
||
<p><span data-x="syntax-attributes">Attributes</span> are placed inside the start tag, and consist | ||
of a <span data-x="syntax-attribute-name">name</span> and a <span | ||
data-x="syntax-attribute-value">value</span>, separated by an "<code data-x="">=</code>" character. | ||
The attribute value can remain <a href="#unquoted">unquoted</a> if it doesn't contain <span>ASCII | ||
whitespace</span> or any of <code data-x="">"</code> <code data-x="">'</code> <code | ||
<p><span data-x="syntax-attribute-declarations">Attribute declarations</span> are placed inside | ||
the start tag, and consist of a <span data-x="syntax-attribute-name">name</span> and a <span | ||
data-x="syntax-attribute-value">value</span>, separated by an "<code data-x="">=</code>" | ||
character. The attribute value can remain <a href="#unquoted">unquoted</a> if it doesn't contain | ||
<span>ASCII whitespace</span> or any of <code data-x="">"</code> <code data-x="">'</code> <code | ||
data-x="">`</code> <code data-x="">=</code> <code data-x=""><</code> or <code | ||
data-x="">></code>. Otherwise, it has to be quoted using either single or double quotes. The | ||
value, along with the "<code data-x="">=</code>" character, can be omitted altogether if the value | ||
|
@@ -1174,8 +1174,8 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute | |
<div class="example"> | ||
|
||
<p>For example, this is why the U+0060 GRAVE ACCENT character (`) is not allowed in unquoted | ||
attributes. In certain legacy user agents, <!-- namely IE --> it is sometimes treated as a | ||
quote character.</p> | ||
attribute declarations. In certain legacy user agents, <!-- namely IE --> it is sometimes | ||
treated as a quote character.</p> | ||
|
||
</div> | ||
|
||
|
@@ -1246,18 +1246,18 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute | |
|
||
<div class="example"> | ||
|
||
<p>For example, "attributes" in end tags are ignored currently, but they are invalid, in case a | ||
future change to the language makes use of that syntax feature without conflicting with | ||
already-deployed (and valid!) content.</p> | ||
<p>For example, attribute declarations in end tags are ignored currently, but they are invalid, | ||
in case a future change to the language makes use of that syntax feature without conflicting | ||
with already-deployed (and valid!) content.</p> | ||
|
||
</div> | ||
</dd> | ||
</dl> | ||
|
||
<p>Some authors find it helpful to be in the practice of always quoting all attributes and always | ||
including all optional tags, preferring the consistency derived from such custom over the minor | ||
benefits of terseness afforded by making use of the flexibility of the HTML syntax. To aid such | ||
authors, conformance checkers can provide modes of operation wherein such conventions are | ||
<p>Some authors find it helpful to be in the practice of always quoting all attribute values and | ||
always including all optional tags, preferring the consistency derived from such custom over the | ||
minor benefits of terseness afforded by making use of the flexibility of the HTML syntax. To aid | ||
such authors, conformance checkers can provide modes of operation wherein such conventions are | ||
enforced.</p> | ||
|
||
|
||
|
@@ -45441,7 +45441,8 @@ interface <dfn interface>HTMLTableCellElement</dfn> : <span>HTMLElement</span> { | |
|
||
<p class="note">There is no particular significance to the way some of the attributes have their | ||
values quoted and others don't. The HTML syntax allows a variety of equally valid ways to specify | ||
attributes, as discussed <span data-x="syntax-attributes">in the syntax section</span>.</p> | ||
attributes, as discussed <span data-x="syntax-attribute-declarations">in the syntax | ||
section</span>.</p> | ||
|
||
<p>For example, if the customer entered "Denise Lawrence" as their name, "555-321-8642" as their | ||
telephone number, did not specify an email address, asked for a medium-sized pizza, selected the | ||
|
@@ -122895,17 +122896,17 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
<li>The next few characters of a start tag must be the element's <span | ||
data-x="syntax-tag-name">tag name</span>.</li> | ||
|
||
<li>If there are to be any attributes in the next step, there must first be one or more | ||
<span>ASCII whitespace</span>.</li> | ||
<li>If there are to be any attribute declarations in the next step, there must first be one or | ||
more <span>ASCII whitespace</span>.</li> | ||
|
||
<li>Then, the start tag may have a number of attributes, the <span | ||
data-x="syntax-attributes">syntax for which</span> is described below. Attributes must be | ||
separated from each other by one or more <span>ASCII whitespace</span>.</li> | ||
<li>Then, the start tag may have a number of attribute declarations, the <span | ||
data-x="syntax-attribute-declarations">syntax for which</span> is described below. Attribute | ||
declarations must be separated from each other by one or more <span>ASCII whitespace</span>.</li> | ||
|
||
<li>After the attributes, or after the <span data-x="syntax-tag-name">tag name</span> if there | ||
are no attributes, there may be one or more <span>ASCII whitespace</span>. (Some attributes are | ||
required to be followed by a space. See the <span data-x="syntax-attributes">attributes | ||
section</span> below.)</li> | ||
<li>After the attribute declarations, or after the <span data-x="syntax-tag-name">tag name</span> | ||
if there are no attributes, there may be one or more <span>ASCII whitespace</span>. (Some | ||
attribute declarations are required to be followed by a space. See the <span | ||
data-x="syntax-attribute-declarations">attribute declarations</span> section below.)</li> | ||
|
||
<li>Then, if the element is one of the <span>void elements</span>, or if the element is a <span | ||
data-x="foreign elements">foreign element</span>, then there may be a single U+002F SOLIDUS | ||
|
@@ -122938,10 +122939,10 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
</ol> | ||
|
||
|
||
<h5>Attributes</h5> | ||
<h5>Attribute declarations</h5> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Similarly we should preserve the ID here |
||
|
||
<p><dfn data-x="syntax-attributes">Attributes</dfn> for an element are expressed inside the | ||
element's start tag.</p> | ||
<p><dfn data-x="syntax-attribute-declarations">Attribute declarations</dfn> for an element are | ||
expressed inside the element's start tag.</p> | ||
|
||
<p>Attributes have a name and a value. <dfn data-x="syntax-attribute-name">Attribute names</dfn> | ||
must consist of one or more characters other than <span data-x="control">controls</span>, | ||
|
@@ -122955,7 +122956,7 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
except with the additional restriction that the text cannot contain an <span | ||
data-x="syntax-ambiguous-ampersand">ambiguous ampersand</span>.</p> | ||
|
||
<p>Attributes can be specified in four different ways:</p> | ||
<p>Attributes can be declared in four different ways:</p> | ||
|
||
<dl> | ||
<dt>Empty attribute syntax</dt> | ||
|
@@ -122973,8 +122974,8 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
|
||
</div> | ||
|
||
<p>If an attribute using the empty attribute syntax is to be followed by another attribute, then | ||
there must be <span>ASCII whitespace</span> separating the two.</p> | ||
<p>If an attribute declaration using the empty attribute syntax is to be followed by another | ||
attribute declaration, then there must be <span>ASCII whitespace</span> separating the two.</p> | ||
</dd> | ||
|
||
<dt id="unquoted">Unquoted attribute value syntax</dt> | ||
|
@@ -123026,9 +123027,9 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
|
||
</div> | ||
|
||
<p>If an attribute using the unquoted attribute syntax is to be followed by another attribute or | ||
by the optional U+002F SOLIDUS character (/) allowed in step 6 of the <span | ||
data-x="syntax-start-tag">start tag</span> syntax above, then there must be <span>ASCII | ||
<p>If an attribute declaration using the unquoted attribute syntax is to be followed by another | ||
attribute declaration or by the optional U+002F SOLIDUS character (/) allowed in step 6 of the | ||
<span data-x="syntax-start-tag">start tag</span> syntax above, then there must be <span>ASCII | ||
whitespace</span> separating the two.</p> | ||
</dd> | ||
|
||
|
@@ -123052,8 +123053,9 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
|
||
</div> | ||
|
||
<p>If an attribute using the single-quoted attribute syntax is to be followed by another | ||
attribute, then there must be <span>ASCII whitespace</span> separating the two.</p> | ||
<p>If an attribute declaration using the single-quoted attribute syntax is to be followed by | ||
another attribute declaration, then there must be <span>ASCII whitespace</span> separating the | ||
two.</p> | ||
</dd> | ||
|
||
<dt>Double-quoted attribute value syntax</dt> | ||
|
@@ -123076,13 +123078,14 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
|
||
</div> | ||
|
||
<p>If an attribute using the double-quoted attribute syntax is to be followed by another | ||
attribute, then there must be <span>ASCII whitespace</span> separating the two.</p> | ||
<p>If an attribute declaration using the double-quoted attribute syntax is to be followed by | ||
another attribute declaration, then there must be <span>ASCII whitespace</span> separating the | ||
two.</p> | ||
</dd> | ||
</dl> | ||
|
||
<p>There must never be two or more attributes on the same start tag whose names are an <span>ASCII | ||
case-insensitive</span> match for each other.</p> | ||
<p>There must never be two or more attribute declarations in the same start tag whose names are an | ||
<span>ASCII case-insensitive</span> match for each other.</p> | ||
|
||
<hr> | ||
|
||
|
@@ -123858,14 +123861,15 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
<tr> | ||
<td><dfn data-x="parse-error-duplicate-attribute">duplicate-attribute</dfn> | ||
<td><p>This error occurs if the parser encounters an <span | ||
data-x="syntax-attributes">attribute</span> in a tag that already has an attribute with the | ||
same name. The parser ignores all such duplicate occurrences of the attribute. | ||
data-x="syntax-attribute-declarations">attribute declaration</span> in a tag that already has | ||
an attribute with the same name. The parser ignores all such duplicate occurrences of the | ||
attribute. | ||
|
||
<tr> | ||
<td><dfn data-x="parse-error-end-tag-with-attributes">end-tag-with-attributes</dfn> | ||
<td><p>This error occurs if the parser encounters an <span data-x="syntax-end-tag">end | ||
tag</span> with <span data-x="syntax-attributes">attributes</span>. Attributes in end tags are | ||
ignored and do not make their way into the DOM.</p> | ||
tag</span> with <span data-x="syntax-attribute-declarations">attribute declarations</span>. | ||
Attribute declarations in end tags are ignored and do not result in attributes in the DOM.</p> | ||
|
||
<tr> | ||
<td><dfn data-x="parse-error-end-tag-with-trailing-solidus">end-tag-with-trailing-solidus</dfn> | ||
|
@@ -123977,7 +123981,7 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
<tr> | ||
<td><dfn data-x="parse-error-missing-attribute-value">missing-attribute-value</dfn> | ||
<td><p>This error occurs if the parser encounters a U+003E (>) <span>code point</span> where an | ||
<span data-x="syntax-attributes">attribute</span> value is expected (e.g., <code | ||
<span data-x="syntax-attribute-value">attribute value</span> is expected (e.g., <code | ||
data-x=""><div id=></code>). The parser treats the attribute as having an empty value.</p> | ||
|
||
<tr> | ||
|
@@ -124064,7 +124068,7 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
<tr> | ||
<td><dfn data-x="parse-error-missing-whitespace-between-attributes">missing-whitespace-between-attributes</dfn> | ||
<td><p>This error occurs if the parser encounters <span | ||
data-x="syntax-attributes">attributes</span> that are not separated by <span>ASCII | ||
data-x="syntax-attribute-declarations">attributes</span> that are not separated by <span>ASCII | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Update the text here too, maybe? |
||
whitespace</span> (e.g., <code data-x=""><div id="foo"class="bar"></code>). In this case the | ||
parser behaves as if ASCII whitespace is present.</p> | ||
|
||
|
@@ -124251,7 +124255,7 @@ dictionary <dfn dictionary>StorageEventInit</dfn> : <span>EventInit</span> { | |
<tr> | ||
<td><dfn data-x="parse-error-unexpected-solidus-in-tag">unexpected-solidus-in-tag</dfn> | ||
<td><p>This error occurs if the parser encounters a U+002F (/) <span>code point</span> that is | ||
not a part of a quoted <span data-x="syntax-attributes">attribute</span> value and not | ||
not a part of a quoted <span data-x="syntax-attribute-value">attribute value</span> and not | ||
immediately followed by a U+003E (>) code point in a tag (e.g., <code data-x=""><div / | ||
id="foo"></code>). In this case the parser behaves as if it encountered <span>ASCII | ||
whitespace</span>.</p> | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should preserve the old ID by changing the
<p>
to<p id="syntax-attributes">