@markuplint/html-spec 5.0.0-rc.4 → 5.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.json CHANGED
@@ -363,7 +363,8 @@
363
363
  "type": "CustomElementName"
364
364
  },
365
365
  "itemid": {
366
- "type": "URL"
366
+ "type": "URL",
367
+ "condition": "[itemscope][itemtype]"
367
368
  },
368
369
  "itemprop": {
369
370
  "type": {
@@ -376,6 +377,7 @@
376
377
  "itemref": {
377
378
  "type": {
378
379
  "token": "DOMID",
380
+ "unique": true,
379
381
  "separator": "space"
380
382
  },
381
383
  "condition": "[itemscope]"
@@ -388,8 +390,10 @@
388
390
  "token": "AbsoluteURL",
389
391
  "ordered": false,
390
392
  "unique": true,
393
+ "allowEmpty": false,
391
394
  "separator": "space"
392
- }
395
+ },
396
+ "condition": "[itemscope]"
393
397
  },
394
398
  "lang": {
395
399
  "type": "BCP47"
@@ -826,7 +830,7 @@
826
830
  "type": "SRIHash"
827
831
  },
828
832
  "media": {
829
- "type": "<media-query-list>"
833
+ "type": "MediaQueryList"
830
834
  },
831
835
  "crossorigin": {
832
836
  "type": {
@@ -848,7 +852,7 @@
848
852
  },
849
853
  "#HTMLEmbededAndMediaContentAttrs": {
850
854
  "src": {
851
- "type": "URL"
855
+ "type": "NonEmptyURL"
852
856
  },
853
857
  "preload": {
854
858
  "type": {
@@ -896,7 +900,7 @@
896
900
  "type": "DOMID"
897
901
  },
898
902
  "formaction": {
899
- "type": "URL"
903
+ "type": "NonEmptyURL"
900
904
  },
901
905
  "formenctype": {
902
906
  "type": {
@@ -3874,7 +3878,7 @@
3874
3878
  },
3875
3879
  {
3876
3880
  "name": "definition",
3877
- "description": "A definition of a term or concept. See related term.\n\nAuthors MUST identify the element being defined and assign that element a role of term.\n\nAuthors SHOULD NOT use the definition role on interactive elements such as form controls because doing so could prevent users of assistive technologies from interacting with those elements.",
3881
+ "description": "A definition of a term or concept. See related term.\n\nAuthors MUST identify the element being defined and assign that element a role of term.\n\nThe relationship between a term and its definition is conveyed on the term element; see the term role for more information.",
3878
3882
  "generalization": ["section"],
3879
3883
  "requiredContextRole": [],
3880
3884
  "requiredOwnedElements": [],
@@ -4969,7 +4973,7 @@
4969
4973
  },
4970
4974
  {
4971
4975
  "name": "grid",
4972
- "description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It can be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are accessibility children of elements with role row, which are in turn are accessibility children of an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key might switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell might show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of that grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nAuthors SHOULD provide an accessible name for a grid, which can be done with the aria-label or aria-labelledby attribute. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present for the grid.\n\nSee the ARIA Authoring Practices Guide for additional details on implementing grid design patterns.",
4976
+ "description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It can be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are accessibility children of elements with role row, which are in turn are accessibility children of an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors MUST manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key might switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell might show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of that grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nAuthors SHOULD provide an accessible name for a grid, which can be done with the aria-label or aria-labelledby attribute. Authors SHOULD reference a visible label with aria-labelledby if a visible label is present for the grid.\n\nSee the ARIA Authoring Practices Guide for additional details on implementing grid design patterns.",
4973
4977
  "generalization": ["composite", "table"],
4974
4978
  "requiredContextRole": [],
4975
4979
  "requiredOwnedElements": ["caption", "row", "rowgroup > row"],
@@ -6262,7 +6266,7 @@
6262
6266
  },
6263
6267
  {
6264
6268
  "name": "listbox",
6265
- "description": "A widget that allows the user to select one or more items from a list of choices. See related combobox and list.\n\nItems within the list are static and, unlike standard HTML select elements, can contain images. List boxes contain children whose role is option or elements whose role is group which in turn contain children whose role is option.\n\nTo be keyboard accessible, authors SHOULD manage focus of option descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role listbox have an implicit aria-orientation value of vertical.",
6269
+ "description": "A widget that allows the user to select one or more items from a list of choices. See related combobox and list.\n\nItems within the list are static and, unlike standard HTML select elements, can contain images. List boxes contain children whose role is option or elements whose role is group which in turn contain children whose role is option.\n\nTo be keyboard accessible, authors MUST manage focus of option descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role listbox have an implicit aria-orientation value of vertical.",
6266
6270
  "generalization": ["select"],
6267
6271
  "requiredContextRole": [],
6268
6272
  "requiredOwnedElements": ["group > option", "option"],
@@ -7066,7 +7070,7 @@
7066
7070
  },
7067
7071
  {
7068
7072
  "name": "menu",
7069
- "description": "A type of widget that offers a list of choices to the user.\n\nA menu is a container, generally rendered as a popup or overlay, for a set of menu items that can be invoked to perform an action or function. The function is almost always closely related or directly related to the element that the user activated to invoke the menu. Activating a menu item both performs the associated function of the menu item, and results in the automatic dismissal of the menu.\n\nThe menu role is appropriate when a set of menu items is presented in a manner similar to a popup menu. For instance, a menu could be used to represent a context menu for its invoking element, or it would be used to render sub-menus for items of a menubar or another menu popup.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menu have an implicit aria-orientation value of vertical.",
7073
+ "description": "A type of widget that offers a list of choices to the user.\n\nA menu is a container, generally rendered as a popup or overlay, for a set of menu items that can be invoked to perform an action or function. The function is almost always closely related or directly related to the element that the user activated to invoke the menu. Activating a menu item both performs the associated function of the menu item, and results in the automatic dismissal of the menu.\n\nThe menu role is appropriate when a set of menu items is presented in a manner similar to a popup menu. For instance, a menu could be used to represent a context menu for its invoking element, or it would be used to render sub-menus for items of a menubar or another menu popup.\n\nTo be keyboard accessible, authors MUST manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menu have an implicit aria-orientation value of vertical.",
7070
7074
  "generalization": ["select"],
7071
7075
  "requiredContextRole": [],
7072
7076
  "requiredOwnedElements": [
@@ -7195,7 +7199,7 @@
7195
7199
  },
7196
7200
  {
7197
7201
  "name": "menubar",
7198
- "description": "A presentation of menu that usually remains visible and is usually presented horizontally.\n\nThe menubar role is used to create a menu bar similar to those found in Windows, Mac, and Gnome desktop applications. A menu bar is used to create a consistent set of frequently used commands. Authors SHOULD ensure that menubar interaction is similar to the typical menu bar interaction in a desktop graphical user interface.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menubar have an implicit aria-orientation value of horizontal.",
7202
+ "description": "A presentation of menu that usually remains visible and is usually presented horizontally.\n\nThe menubar role is used to create a menu bar similar to those found in Windows, Mac, and Gnome desktop applications. A menu bar is used to create a consistent set of frequently used commands. Authors SHOULD ensure that menubar interaction is similar to the typical menu bar interaction in a desktop graphical user interface.\n\nTo be keyboard accessible, authors MUST manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role menubar have an implicit aria-orientation value of horizontal.",
7199
7203
  "generalization": ["menu"],
7200
7204
  "requiredContextRole": [],
7201
7205
  "requiredOwnedElements": [
@@ -9721,10 +9725,12 @@
9721
9725
  "inherited": true
9722
9726
  },
9723
9727
  {
9724
- "name": "aria-valuemax"
9728
+ "name": "aria-valuemax",
9729
+ "inherited": true
9725
9730
  },
9726
9731
  {
9727
- "name": "aria-valuemin"
9732
+ "name": "aria-valuemin",
9733
+ "inherited": true
9728
9734
  },
9729
9735
  {
9730
9736
  "name": "aria-valuenow",
@@ -10685,7 +10691,8 @@
10685
10691
  },
10686
10692
  {
10687
10693
  "name": "aria-valuenow",
10688
- "required": true
10694
+ "required": true,
10695
+ "requiredCondition": "focusable"
10689
10696
  },
10690
10697
  {
10691
10698
  "name": "aria-valuetext"
@@ -10805,10 +10812,12 @@
10805
10812
  "inherited": true
10806
10813
  },
10807
10814
  {
10808
- "name": "aria-valuemax"
10815
+ "name": "aria-valuemax",
10816
+ "inherited": true
10809
10817
  },
10810
10818
  {
10811
- "name": "aria-valuemin"
10819
+ "name": "aria-valuemin",
10820
+ "inherited": true
10812
10821
  },
10813
10822
  {
10814
10823
  "name": "aria-valuenow",
@@ -11387,7 +11396,7 @@
11387
11396
  },
11388
11397
  {
11389
11398
  "name": "suggestion",
11390
- "description": "A single proposed change to content.\n\nFor example, in an editing system that supports multiple users, one user can suggest a change, and another user would be responsible for accepting or rejecting the suggestion.\n\nAuthors MUST ensure that a suggestion contains either one insertion child or one deletion child or ensure that it contains two children where one is an insertion and the other is a deletion. Authors MUST ensure a suggestion does not contain any other children.\n\nAuthors MAY use aria-details or aria-description to associate the suggestion with related information such as comments, authoring info, and time stamps.\n\nWhen a suggestion is accepted, authors SHOULD remove the suggestion role, indicating that the proposed revision has been made. After the suggestion role is removed, child insertion and deletion elements can either be retained to document the revision or replaced with the revised content.",
11399
+ "description": "A single proposed change to content.\n\nFor example, in an editing system that supports multiple users, one user can suggest a change, and another user would be responsible for accepting or rejecting the suggestion.\n\nAuthors MUST ensure that a suggestion has either exactly one insertion accessibility child or exactly one deletion accessibility child, or exactly two accessibility children where one is an insertion and the other is a deletion. Authors MUST NOT include any additional accessibility children in a suggestion.\n\nAuthors MAY use aria-details or aria-description to associate the suggestion with related information such as comments, authoring info, and time stamps.\n\nWhen a suggestion is accepted, authors SHOULD remove the suggestion role, indicating that the proposed revision has been made. After the suggestion role is removed, child insertion and deletion elements can either be retained to document the revision or replaced with the revised content.",
11391
11400
  "generalization": ["section"],
11392
11401
  "requiredContextRole": [],
11393
11402
  "requiredOwnedElements": ["insertion", "deletion"],
@@ -11962,7 +11971,7 @@
11962
11971
  },
11963
11972
  {
11964
11973
  "name": "tablist",
11965
- "description": "A list of tab elements, which are references to tabpanel elements.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nFor a single-selectable tablist, authors SHOULD hide from all users other tabpanel elements until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden from all users tabpanel elements have their aria-expanded attributes set to false.\n\ntablist elements are typically placed near, and usually preceding, a series of tabpanel elements. See the ARIA Authoring Practices Guide for details on implementing a tab set design pattern.\n\nElements with the role tablist have an implicit aria-orientation value of horizontal.",
11974
+ "description": "A list of tab elements, which are references to tabpanel elements.\n\nTo be keyboard accessible, authors MUST manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nFor a single-selectable tablist, authors SHOULD hide from all users other tabpanel elements until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden from all users tabpanel elements have their aria-expanded attributes set to false.\n\ntablist elements are typically placed near, and usually preceding, a series of tabpanel elements. See the ARIA Authoring Practices Guide for details on implementing a tab set design pattern.\n\nElements with the role tablist have an implicit aria-orientation value of horizontal.",
11966
11975
  "generalization": ["composite"],
11967
11976
  "requiredContextRole": [],
11968
11977
  "requiredOwnedElements": ["tab"],
@@ -12864,7 +12873,7 @@
12864
12873
  },
12865
12874
  {
12866
12875
  "name": "tree",
12867
- "description": "A widget that allows the user to select one or more items from a hierarchically organized collection.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role tree have an implicit aria-orientation value of vertical.",
12876
+ "description": "A widget that allows the user to select one or more items from a hierarchically organized collection.\n\nTo be keyboard accessible, authors MUST manage focus of descendants for all instances of this role, as described in Managing Focus.\n\nElements with the role tree have an implicit aria-orientation value of vertical.",
12868
12877
  "generalization": ["select"],
12869
12878
  "requiredContextRole": [],
12870
12879
  "requiredOwnedElements": ["treeitem"],
@@ -12987,7 +12996,7 @@
12987
12996
  },
12988
12997
  {
12989
12998
  "name": "treegrid",
12990
- "description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.",
12999
+ "description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors MUST manage focus of descendants for all instances of this role, as described in Managing Focus.",
12991
13000
  "generalization": ["grid", "tree"],
12992
13001
  "requiredContextRole": [],
12993
13002
  "requiredOwnedElements": ["caption", "row", "rowgroup > row"],
@@ -13126,7 +13135,7 @@
13126
13135
  },
13127
13136
  {
13128
13137
  "name": "treeitem",
13129
- "description": "An item in a tree.\n\nA treeitem element can contain a sub-level group of elements that can be expanded or collapsed. An expandable collection of treeitem elements are enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are accessibility children of an element with role tree or an element with role group that is the accessibility child of an element with role treeitem.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each treeitem in a tree, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be true if the treeitem has DOM focus or the tree has DOM focus and the treeitem is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be false.\n\nAuthors MAY indicate selection for treeitem elements using either aria-selected or aria-checked. Some user interfaces indicate selection with aria-selected in single-select trees and with aria-checked in multi-select trees. Authors SHOULD NOT specify both aria-selected and aria-checked on treeitem elements contained by the same tree except in the extremely rare circumstances where all the following conditions are met:",
13138
+ "description": "An item in a tree.\n\nA treeitem element can contain a sub-level group of elements that can be expanded or collapsed. An expandable collection of treeitem elements are usually enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are accessibility children of an element with role tree or an element with role group that is the accessibility child of an element with role treeitem.\n\nAuthors MAY use nested group elements to implicitly indicate level hierarchy. Otherwise, authors MUST ensure all treeitem elements in the tree have explicit values for aria-level, aria-posinset, and aria-setsize.\n\nUser agents MUST calculate an implicit value for aria-level from the document structure if the author does not explicitly specify a value.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each treeitem in a tree, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be true if the treeitem has DOM focus or the tree has DOM focus and the treeitem is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be false.\n\nAuthors MAY indicate selection for treeitem elements using either aria-selected or aria-checked. Some user interfaces indicate selection with aria-selected in single-select trees and with aria-checked in multi-select trees. Authors SHOULD NOT specify both aria-selected and aria-checked on treeitem elements contained by the same tree except in the extremely rare circumstances where all the following conditions are met:",
13130
13139
  "generalization": ["listitem", "option"],
13131
13140
  "requiredContextRole": ["tree", "treeitem > group"],
13132
13141
  "requiredOwnedElements": [],
@@ -26422,7 +26431,8 @@
26422
26431
  },
26423
26432
  {
26424
26433
  "name": "aria-valuenow",
26425
- "required": true
26434
+ "required": true,
26435
+ "requiredCondition": "focusable"
26426
26436
  },
26427
26437
  {
26428
26438
  "name": "aria-valuetext"
@@ -40909,7 +40919,8 @@
40909
40919
  },
40910
40920
  {
40911
40921
  "name": "aria-valuenow",
40912
- "required": true
40922
+ "required": true,
40923
+ "requiredCondition": "focusable"
40913
40924
  },
40914
40925
  {
40915
40926
  "name": "aria-valuetext"
@@ -48848,7 +48859,8 @@
48848
48859
  "attributes": {
48849
48860
  "attributionsrc": {
48850
48861
  "description": "Specifies that you want the browser to send an Attribution-Reporting-Eligible header. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source header in the response, to register a navigation-based attribution source. The browser stores the source data associated with the navigation-based attribution source (as provided in the Attribution-Reporting-Register-Source response header) when the user clicks the link. See the Attribution Reporting API for more details. There are two versions of this attribute that you can set: Boolean, i.e., just the attributionsrc name. This specifies that you want the Attribution-Reporting-Eligible header sent to the same server as the href attribute points to. This is fine when you are handling the attribution source registration on the same server. Value containing one or more URLs, for example: htmlattributionsrc=\"https://a.example/register-source https://b.example/register-source\" This is useful in cases where the requested resource is not on a server you control, or you just want to handle registering the attribution source on a different server. In this case, you can specify one or more URLs as the value of attributionsrc. When the resource request occurs, the Attribution-Reporting-Eligible header will be sent to the URL(s) specified in attributionsrc in addition to the resource origin. These URLs can then respond with the Attribution-Reporting-Register-Source to complete registration. Note: Specifying multiple URLs means that multiple attribution sources can be registered on the same feature. You might for example have different campaigns that you are trying to measure the success of, which involve generating different reports on different data. <a> elements cannot be used as attribution triggers, only sources.",
48851
- "deprecated": true
48862
+ "deprecated": true,
48863
+ "nonStandard": true
48852
48864
  },
48853
48865
  "charset": {
48854
48866
  "description": "Hinted at the character encoding of the linked URL. Note: This attribute is deprecated and should not be used by authors. Use the HTTP Content-Type header on the linked URL.",
@@ -48930,7 +48942,7 @@
48930
48942
  {
48931
48943
  "name": "acronym",
48932
48944
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
48933
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <acronym> HTML element allows authors to clearly indicate a sequence of characters that compose an acronym or abbreviation for a word. Warning: Don't use this element. Use the <abbr> element instead.",
48945
+ "description": "The <acronym> HTML element allows authors to clearly indicate a sequence of characters that compose an acronym or abbreviation for a word. Warning: Don't use this element. Use the <abbr> element instead.",
48934
48946
  "categories": [],
48935
48947
  "contentModel": {
48936
48948
  "contents": true
@@ -49221,7 +49233,7 @@
49221
49233
  "description": "A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio."
49222
49234
  },
49223
49235
  "muted": {
49224
- "description": "A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is false."
49236
+ "description": "A Boolean attribute that indicates the default audio mute setting contained in the audio. If set, the audio will be initially silenced. Its default value is false, meaning the audio will be heard when the audio is played. Note: To unmute, setting muted=\"false\" will not work; the audio will be muted if the attribute is present at all. To unmute, the attribute must be removed entirely."
49225
49237
  },
49226
49238
  "preload": {
49227
49239
  "description": "This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. It may have one of the following values: none: Indicates that the audio should not be preloaded. metadata: Indicates that only audio metadata (e.g., length) is fetched. auto: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it. empty string: A synonym of the auto value. The default value is different for each browser. The spec advises it to be set to metadata. Note: Audio with the loading=\"lazy\" attribute set will only apply the preload behavior once the audio controls are near or within the viewport. The autoplay attribute has precedence over preload. If autoplay is specified, the browser would obviously need to start downloading the audio for playback. The browser is not forced by the specification to follow the value of this attribute; it is a mere hint."
@@ -49282,10 +49294,12 @@
49282
49294
  "attributes": {
49283
49295
  "href": {
49284
49296
  "description": "The base URL to be used throughout the document for relative URLs. Absolute and relative URLs are allowed. data: and javascript: URLs are not allowed.",
49285
- "type": "BaseURL"
49297
+ "type": "BaseURL",
49298
+ "requiredEither": ["target"]
49286
49299
  },
49287
49300
  "target": {
49288
- "description": "A keyword or author-defined name of the default browsing context to show the results of navigation from <a>, <area>, or <form> elements without explicit target attributes. The following keywords have special meanings: _self (default): Show the result in the current browsing context. _blank: Show the result in a new, unnamed browsing context. _parent: Show the result in the parent browsing context of the current one, if the current page is inside a frame. If there is no parent, acts the same as _self. _top: Show the result in the topmost browsing context (the browsing context that is an ancestor of the current one and has no parent). If there is no parent, acts the same as _self."
49301
+ "description": "A keyword or author-defined name of the default browsing context to show the results of navigation from <a>, <area>, or <form> elements without explicit target attributes. The following keywords have special meanings: _self (default): Show the result in the current browsing context. _blank: Show the result in a new, unnamed browsing context. _parent: Show the result in the parent browsing context of the current one, if the current page is inside a frame. If there is no parent, acts the same as _self. _top: Show the result in the topmost browsing context (the browsing context that is an ancestor of the current one and has no parent). If there is no parent, acts the same as _self.",
49302
+ "requiredEither": ["href"]
49289
49303
  }
49290
49304
  }
49291
49305
  },
@@ -49363,7 +49377,10 @@
49363
49377
  "attributes": {
49364
49378
  "dir": {
49365
49379
  "description": "The direction in which text should be rendered in this element's contents. Possible values are: ltr: Indicates that the text should go in a left-to-right direction. rtl: Indicates that the text should go in a right-to-left direction.",
49366
- "required": true
49380
+ "required": true,
49381
+ "type": {
49382
+ "enum": ["ltr", "rtl"]
49383
+ }
49367
49384
  }
49368
49385
  }
49369
49386
  },
@@ -49387,7 +49404,7 @@
49387
49404
  {
49388
49405
  "name": "big",
49389
49406
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
49390
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <big> HTML deprecated element renders the enclosed text at a font size one level larger than the surrounding text (medium becomes large, for example). The size is capped at the browser's maximum permitted font size. Warning: This element has been removed from the specification and shouldn't be used anymore. Use the CSS font-size property to adjust the font size.",
49407
+ "description": "The <big> HTML deprecated element renders the enclosed text at a font size one level larger than the surrounding text (medium becomes large, for example). The size is capped at the browser's maximum permitted font size. Warning: This element has been removed from the specification and shouldn't be used anymore. Use the CSS font-size property to adjust the font size.",
49391
49408
  "categories": [],
49392
49409
  "contentModel": {
49393
49410
  "contents": true
@@ -49651,6 +49668,40 @@
49651
49668
  "tab",
49652
49669
  "treeitem"
49653
49670
  ],
49671
+ "conditions": {
49672
+ "[popovertarget]": {
49673
+ "properties": {
49674
+ "global": true,
49675
+ "role": true,
49676
+ "without": [
49677
+ {
49678
+ "type": "must-not",
49679
+ "name": "aria-expanded",
49680
+ "alt": {
49681
+ "method": "set-attr",
49682
+ "target": "popovertarget"
49683
+ }
49684
+ }
49685
+ ]
49686
+ }
49687
+ },
49688
+ "[commandfor]": {
49689
+ "properties": {
49690
+ "global": true,
49691
+ "role": true,
49692
+ "without": [
49693
+ {
49694
+ "type": "must-not",
49695
+ "name": "aria-expanded",
49696
+ "alt": {
49697
+ "method": "set-attr",
49698
+ "target": "commandfor"
49699
+ }
49700
+ }
49701
+ ]
49702
+ }
49703
+ }
49704
+ },
49654
49705
  "1.1": {
49655
49706
  "permittedRoles": [
49656
49707
  "checkbox",
@@ -49842,7 +49893,7 @@
49842
49893
  {
49843
49894
  "name": "center",
49844
49895
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
49845
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <center> HTML element is a block-level element that displays its block-level or inline contents centered horizontally within its containing element. The container is usually, but isn't required to be, <body>. This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the CSS text-align property, which can be applied to the <div> element or to an individual <p>. For centering blocks, use other CSS properties like margin-left and margin-right and set them to auto (or set margin to 0 auto).",
49896
+ "description": "The <center> HTML element is a block-level element that displays its block-level or inline contents centered horizontally within its containing element. The container is usually, but isn't required to be, <body>. This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the CSS text-align property, which can be applied to the <div> element or to an individual <p>. For centering blocks, use other CSS properties like margin-left and margin-right and set them to auto (or set margin to 0 auto).",
49846
49897
  "categories": [],
49847
49898
  "contentModel": {
49848
49899
  "contents": true
@@ -50165,7 +50216,7 @@
50165
50216
  },
50166
50217
  "datetime": {
50167
50218
  "description": "This attribute indicates the time and date of the change and must be a valid date string with an optional time. If the value cannot be parsed as a date with an optional time string, the element does not have an associated timestamp. For the format of the string without a time, see Date strings. The format of the string if it includes both date and time is covered in Local date and time strings.",
50168
- "type": "DateTime"
50219
+ "type": "DateStringWithOptionalTime"
50169
50220
  }
50170
50221
  }
50171
50222
  },
@@ -50280,7 +50331,7 @@
50280
50331
  {
50281
50332
  "name": "dir",
50282
50333
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
50283
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <dir> HTML element is used as a container for a directory of files and/or folders, potentially with styles and icons applied by the user agent. Do not use this obsolete element; instead, you should use the <ul> element for lists, including lists of files. Warning: Do not use this element. Though present in early HTML specifications, it has been deprecated in HTML 4, and has since been removed entirely.",
50334
+ "description": "The <dir> HTML element is used as a container for a directory of files and/or folders, potentially with styles and icons applied by the user agent. Do not use this obsolete element; instead, you should use the <ul> element for lists, including lists of files. Warning: Do not use this element. Though present in early HTML specifications, it has been deprecated in HTML 4, and has since been removed entirely.",
50284
50335
  "categories": [],
50285
50336
  "contentModel": {
50286
50337
  "contents": true
@@ -50295,7 +50346,8 @@
50295
50346
  "attributes": {
50296
50347
  "compact": {
50297
50348
  "description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn't work in all browsers.",
50298
- "deprecated": true
50349
+ "deprecated": true,
50350
+ "nonStandard": true
50299
50351
  }
50300
50352
  }
50301
50353
  },
@@ -50315,23 +50367,19 @@
50315
50367
  "condition": "dl > div",
50316
50368
  "contents": [
50317
50369
  {
50318
- "oneOrMore": [
50319
- {
50320
- "zeroOrMore": ":model(script-supporting)"
50321
- },
50322
- {
50323
- "oneOrMore": "dt"
50324
- },
50325
- {
50326
- "zeroOrMore": ":model(script-supporting)"
50327
- },
50328
- {
50329
- "oneOrMore": "dd"
50330
- },
50331
- {
50332
- "zeroOrMore": ":model(script-supporting)"
50333
- }
50334
- ]
50370
+ "zeroOrMore": ":model(script-supporting)"
50371
+ },
50372
+ {
50373
+ "oneOrMore": "dt"
50374
+ },
50375
+ {
50376
+ "zeroOrMore": ":model(script-supporting)"
50377
+ },
50378
+ {
50379
+ "oneOrMore": "dd"
50380
+ },
50381
+ {
50382
+ "zeroOrMore": ":model(script-supporting)"
50335
50383
  }
50336
50384
  ]
50337
50385
  }
@@ -50501,7 +50549,7 @@
50501
50549
  },
50502
50550
  "src": {
50503
50551
  "description": "The URL of the resource being embedded.",
50504
- "type": "URL",
50552
+ "type": "NonEmptyURL",
50505
50553
  "required": "[itemprop]"
50506
50554
  },
50507
50555
  "type": {
@@ -50629,8 +50677,8 @@
50629
50677
  },
50630
50678
  {
50631
50679
  "name": "font",
50632
- "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
50633
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <font> HTML element defines the font size, color and face for its content. Warning: Do not use this element. Use the CSS Fonts properties to style text.",
50680
+ "cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/font",
50681
+ "description": "The <font> HTML element defines the font size, color and face for its content. Warning: Do not use this element. Use the CSS Fonts properties to style text.",
50634
50682
  "categories": [],
50635
50683
  "contentModel": {
50636
50684
  "contents": true
@@ -50641,19 +50689,26 @@
50641
50689
  },
50642
50690
  "omission": false,
50643
50691
  "obsolete": true,
50644
- "globalAttrs": {},
50692
+ "globalAttrs": {
50693
+ "#ARIAAttrs": true,
50694
+ "#GlobalEventAttrs": true,
50695
+ "#HTMLGlobalAttrs": true
50696
+ },
50645
50697
  "attributes": {
50646
50698
  "color": {
50647
50699
  "description": "This attribute sets the text color using either a named color or a color specified in the hexadecimal #RRGGBB format.",
50648
- "deprecated": true
50700
+ "deprecated": true,
50701
+ "nonStandard": true
50649
50702
  },
50650
50703
  "face": {
50651
50704
  "description": "This attribute contains a comma-separated list of one or more font names. The document text in the default style is rendered in the first font face that the client's browser supports. If no font listed is installed on the local system, the browser typically defaults to the proportional or fixed-width font for that system.",
50652
- "deprecated": true
50705
+ "deprecated": true,
50706
+ "nonStandard": true
50653
50707
  },
50654
50708
  "size": {
50655
50709
  "description": "This attribute specifies the font size as either a numeric or relative value. Numeric values range from 1 to 7 with 1 being the smallest and 3 the default. It can be defined using a relative value, like +2 or -3, which sets it relative to 3, the default value.",
50656
- "deprecated": true
50710
+ "deprecated": true,
50711
+ "nonStandard": true
50657
50712
  }
50658
50713
  }
50659
50714
  },
@@ -50736,7 +50791,7 @@
50736
50791
  }
50737
50792
  },
50738
50793
  "action": {
50739
- "type": "URL"
50794
+ "type": "NonEmptyURL"
50740
50795
  },
50741
50796
  "autocapitalize": {
50742
50797
  "description": "Controls whether inputted text is automatically capitalized and, if so, in what manner. See the autocapitalize global attribute page for more information."
@@ -50782,7 +50837,7 @@
50782
50837
  {
50783
50838
  "name": "frame",
50784
50839
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
50785
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <frame> HTML element defines a particular area in which another HTML document can be displayed. A frame should be used within a <frameset>. Using the <frame> element is not encouraged because of certain disadvantages such as performance problems and lack of accessibility for users with screen readers. Instead of the <frame> element, <iframe> may be preferred.",
50840
+ "description": "The <frame> HTML element defines a particular area in which another HTML document can be displayed. A frame should be used within a <frameset>. Using the <frame> element is not encouraged because of certain disadvantages such as performance problems and lack of accessibility for users with screen readers. Instead of the <frame> element, <iframe> may be preferred.",
50786
50841
  "categories": [],
50787
50842
  "contentModel": {
50788
50843
  "contents": true
@@ -50797,38 +50852,45 @@
50797
50852
  "attributes": {
50798
50853
  "frameborder": {
50799
50854
  "description": "This attribute allows you to specify a frame's border.",
50800
- "deprecated": true
50855
+ "deprecated": true,
50856
+ "nonStandard": true
50801
50857
  },
50802
50858
  "marginheight": {
50803
50859
  "description": "This attribute defines the height of the margin between frames.",
50804
- "deprecated": true
50860
+ "deprecated": true,
50861
+ "nonStandard": true
50805
50862
  },
50806
50863
  "marginwidth": {
50807
50864
  "description": "This attribute defines the width of the margin between frames.",
50808
- "deprecated": true
50865
+ "deprecated": true,
50866
+ "nonStandard": true
50809
50867
  },
50810
50868
  "name": {
50811
50869
  "description": "This attribute is used for labeling frames. Without labeling, every link will open in the frame that it's in – the closest parent frame. See the target attribute for more information.",
50812
- "deprecated": true
50870
+ "deprecated": true,
50871
+ "nonStandard": true
50813
50872
  },
50814
50873
  "noresize": {
50815
50874
  "description": "This attribute prevents resizing of frames by users.",
50816
- "deprecated": true
50875
+ "deprecated": true,
50876
+ "nonStandard": true
50817
50877
  },
50818
50878
  "scrolling": {
50819
50879
  "description": "This attribute defines the existence of a scrollbar. If this attribute is not used, the browser adds a scrollbar when necessary. There are two choices: \"yes\" for forcing a scrollbar even when it is not necessary and \"no\" for forcing no scrollbar even when it is necessary.",
50820
- "deprecated": true
50880
+ "deprecated": true,
50881
+ "nonStandard": true
50821
50882
  },
50822
50883
  "src": {
50823
50884
  "description": "This attribute specifies the document that will be displayed by the frame.",
50824
- "deprecated": true
50885
+ "deprecated": true,
50886
+ "nonStandard": true
50825
50887
  }
50826
50888
  }
50827
50889
  },
50828
50890
  {
50829
50891
  "name": "frameset",
50830
50892
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
50831
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <frameset> HTML element is used to contain <frame> elements. Note: Because the use of frames is now discouraged in favor of using <iframe>, this element is not typically used by modern websites.",
50893
+ "description": "The <frameset> HTML element is used to contain <frame> elements. Note: Because the use of frames is now discouraged in favor of using <iframe>, this element is not typically used by modern websites.",
50832
50894
  "categories": [],
50833
50895
  "contentModel": {
50834
50896
  "contents": true
@@ -50843,11 +50905,13 @@
50843
50905
  "attributes": {
50844
50906
  "cols": {
50845
50907
  "description": "This attribute specifies the number and size of horizontal spaces in a frameset.",
50846
- "deprecated": true
50908
+ "deprecated": true,
50909
+ "nonStandard": true
50847
50910
  },
50848
50911
  "rows": {
50849
50912
  "description": "This attribute specifies the number and size of vertical spaces in a frameset.",
50850
- "deprecated": true
50913
+ "deprecated": true,
50914
+ "nonStandard": true
50851
50915
  }
50852
50916
  }
50853
50917
  },
@@ -51137,7 +51201,7 @@
51137
51201
  {
51138
51202
  "name": "hr",
51139
51203
  "cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/hr",
51140
- "description": "The <hr> HTML element represents a thematic break between paragraph-level elements: for example, a change of scene in a story, or a shift of topic within a section.",
51204
+ "description": "The <hr> HTML element represents a thematic break between elements: for example, a change of scene in a story, or a shift of topic within a section.",
51141
51205
  "categories": ["#flow"],
51142
51206
  "contentModel": {
51143
51207
  "contents": false
@@ -51221,7 +51285,8 @@
51221
51285
  "deprecated": true
51222
51286
  },
51223
51287
  "xmlns": {
51224
- "description": "Specifies the XML Namespace of the document. Default value is \"http://www.w3.org/1999/xhtml\". This is required in documents parsed with XML parsers, and optional in text/html documents."
51288
+ "description": "Specifies the XML Namespace of the document. Default value is \"http://www.w3.org/1999/xhtml\". This is required in documents parsed with XML parsers, and optional in text/html documents.",
51289
+ "nonStandard": true
51225
51290
  }
51226
51291
  }
51227
51292
  },
@@ -51292,7 +51357,7 @@
51292
51357
  "nonStandard": true
51293
51358
  },
51294
51359
  "browsingtopics": {
51295
- "description": "A boolean attribute that, if present, specifies that the selected topics for the current user should be sent with the request for the <iframe>'s source. See Using the Topics API for more details.",
51360
+ "description": "A boolean attribute that, if present, specifies that the selected topics for the current user should be sent with the request for the <iframe>'s source.",
51296
51361
  "deprecated": true,
51297
51362
  "nonStandard": true
51298
51363
  },
@@ -51339,7 +51404,7 @@
51339
51404
  "description": "Indicates which referrer to send when fetching the frame's resource: no-referrer The Referer header will not be sent. no-referrer-when-downgrade The Referer header will not be sent to origins without TLS (HTTPS). origin The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default) Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
51340
51405
  },
51341
51406
  "sandbox": {
51342
- "description": "Controls the restrictions applied to the content embedded in the <iframe>. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions: allow-downloads Allows downloading files through an <a> or <area> element with the download attribute, as well as through the navigation that leads to a download of a file. This works regardless of whether the user clicked on the link, or JS code initiated it without user interaction. allow-forms Allows the page to submit forms. If this keyword is not used, a form will be displayed as normal, but submitting it will not trigger input validation, send data to a web server, or close a dialog. allow-modals Allows the page to open modal windows by Window.alert(), Window.confirm(), Window.print() and Window.prompt(), while opening a <dialog> is allowed regardless of this keyword. It also allows the page to receive BeforeUnloadEvent event. allow-orientation-lock Lets the resource lock the screen orientation. allow-pointer-lock Allows the page to use the Pointer Lock API. allow-popups Allows popups (created, for example, by Window.open() or target=\"_blank\"). If this keyword is not used, such functionality will silently fail. allow-popups-to-escape-sandbox Allows a sandboxed document to open a new browsing context without forcing the sandboxing flags upon it. This will allow, for example, a third-party advertisement to be safely sandboxed without forcing the same restrictions upon the page the ad links to. If this flag is not included, a redirected page, popup window, or new tab will be subject to the same sandbox restrictions as the originating <iframe>. allow-presentation Allows embedders to have control over whether an iframe can start a presentation session. allow-same-origin If this token is not used, the resource is treated as being from a special origin that always fails the same-origin policy (potentially preventing access to data storage/cookies and some JavaScript APIs). Note: When allow-same-origin is present, a same-origin parent document can still access and interact with the iframe's DOM even if allow-scripts is not set. The allow-scripts token only controls script execution within the embedded browsing context and does not affect DOM access from the parent. allow-scripts Allows the page to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed. allow-storage-access-by-user-activation Experimental Allows a document loaded in the <iframe> to use the Storage Access API to request access to unpartitioned cookies. allow-top-navigation Lets the resource navigate the top-level browsing context (the one named _top). allow-top-navigation-by-user-activation Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture. allow-top-navigation-to-custom-protocols Allows navigations to non-http protocols built into browser or registered by a website. This feature is also activated by allow-popups or allow-top-navigation keyword. Note: When the embedded document has the same origin as the embedding page, it is strongly discouraged to use both allow-scripts and allow-same-origin, as that lets the embedded document remove the sandbox attribute — making it no more secure than not using the sandbox attribute at all. Sandboxing is useless if the attacker can display content outside a sandboxed iframe — such as if the viewer opens the frame in a new tab. Such content should be also served from a separate origin to limit potential damage. Note: When redirecting the user, opening a popup window, or opening a new tab from an embedded page within an <iframe> with the sandbox attribute, the new browsing context is subject to the same sandbox restrictions. This can create issues — for example, if a page embedded within an <iframe> without a sandbox=\"allow-forms\" or sandbox=\"allow-popups-to-escape-sandbox\" attribute set on it opens a new site in a separate tab, form submission in that new browsing context will silently fail.",
51407
+ "description": "Controls the restrictions applied to the content embedded in the <iframe>. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions: allow-downloads Allows downloading files through an <a> or <area> element with the download attribute, as well as through the navigation that leads to a download of a file. This works regardless of whether the user clicked on the link, or JS code initiated it without user interaction. allow-forms Allows the page to submit forms. If this keyword is not used, a form will be displayed as normal, but submitting it will not trigger input validation, send data to a web server, or close a dialog. allow-modals Allows the page to open modal windows by Window.alert(), Window.confirm(), Window.print() and Window.prompt(), while opening a <dialog> is allowed regardless of this keyword. It also allows the page to receive BeforeUnloadEvent event. allow-orientation-lock Lets the resource lock the screen orientation. allow-pointer-lock Allows the page to use the Pointer Lock API. allow-popups Allows popups (created, for example, by Window.open() or target=\"_blank\"). If this keyword is not used, such functionality will silently fail. allow-popups-to-escape-sandbox Allows a sandboxed document to open a new browsing context without forcing the sandboxing flags upon it. This will allow, for example, a third-party advertisement to be safely sandboxed without forcing the same restrictions upon the page the ad links to. If this flag is not included, a redirected page, popup window, or new tab will be subject to the same sandbox restrictions as the originating <iframe>. allow-presentation Allows embedders to have control over whether an iframe can start a presentation session. allow-same-origin If this token is not used, the resource is treated as being from a special origin that always fails the same-origin policy (potentially preventing access to data storage/cookies and some JavaScript APIs). Note: When allow-same-origin is present, a same-origin parent document can still access and interact with the iframe's DOM even if allow-scripts is not set. The allow-scripts token only controls script execution within the embedded browsing context and does not affect DOM access from the parent. allow-scripts Allows the page to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed. allow-storage-access-by-user-activation Allows a document loaded in the <iframe> to use the Storage Access API to request access to unpartitioned cookies. allow-top-navigation Lets the resource navigate the top-level browsing context (the one named _top). allow-top-navigation-by-user-activation Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture. allow-top-navigation-to-custom-protocols Allows navigations to non-http protocols built into browser or registered by a website. This feature is also activated by allow-popups or allow-top-navigation keyword. Note: When the embedded document has the same origin as the embedding page, it is strongly discouraged to use both allow-scripts and allow-same-origin, as that lets the embedded document remove the sandbox attribute — making it no more secure than not using the sandbox attribute at all. Sandboxing is useless if the attacker can display content outside a sandboxed iframe — such as if the viewer opens the frame in a new tab. Such content should be also served from a separate origin to limit potential damage. Note: When redirecting the user, opening a popup window, or opening a new tab from an embedded page within an <iframe> with the sandbox attribute, the new browsing context is subject to the same sandbox restrictions. This can create issues — for example, if a page embedded within an <iframe> without a sandbox=\"allow-forms\" or sandbox=\"allow-popups-to-escape-sandbox\" attribute set on it opens a new site in a separate tab, form submission in that new browsing context will silently fail.",
51343
51408
  "type": {
51344
51409
  "token": {
51345
51410
  "enum": [
@@ -51475,7 +51540,8 @@
51475
51540
  },
51476
51541
  "attributionsrc": {
51477
51542
  "description": "Specifies that you want the browser to send an Attribution-Reporting-Eligible header along with the image request. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header in the response, to register an image-based attribution source or attribution trigger, respectively. Which response header should be sent back depends on the value of the Attribution-Reporting-Eligible header that triggered the registration. The corresponding source or trigger event is set off once the browser receives the response containing the image file. Note: See the Attribution Reporting API for more details. There are two versions of this attribute that you can set: Boolean, i.e., just the attributionsrc name. This specifies that you want the Attribution-Reporting-Eligible header sent to the same server as the src attribute points to. This is fine when you are handling the attribution source or trigger registration on the same server. When registering an attribution trigger this property is optional, and a boolean value will be used if it is omitted. Value containing one or more URLs, for example: html<img src=\"image-file.png\" alt=\"My image file description\" attributionsrc=\"https://a.example/register-source https://b.example/register-source\" /> This is useful in cases where the requested resource is not on a server you control, or you just want to handle registering the attribution source on a different server. In this case, you can specify one or more URLs as the value of attributionsrc. When the resource request occurs the Attribution-Reporting-Eligible header will be sent to the URL(s) specified in attributionSrc in addition to the resource origin. These URLs can then respond with an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header as appropriate to complete registration. Note: Specifying multiple URLs means that multiple attribution sources can be registered on the same feature. You might for example have different campaigns that you are trying to measure the success of, which involve generating different reports on different data.",
51478
- "deprecated": true
51543
+ "deprecated": true,
51544
+ "nonStandard": true
51479
51545
  },
51480
51546
  "border": {
51481
51547
  "description": "The width of a border around the image. Use the border CSS property instead.",
@@ -51511,7 +51577,7 @@
51511
51577
  "condition": "a[href] img"
51512
51578
  },
51513
51579
  "loading": {
51514
- "description": "Indicates how the browser should load the image: eager Loads the image immediately, regardless of whether or not the image is currently within the visible viewport (this is the default value). lazy Defers loading the image until it reaches a calculated distance from the viewport, as defined by the browser. Lazy loading avoids the network and storage bandwidth required to handle the image until it's reasonably certain that it will be needed. This improves the performance in most typical use cases. While explicit width and height attributes are recommended for all images to avoid layout shift, they are especially important for lazy-loaded ones. Lazy-loaded images will never be loaded if they do not intersect a visible part of an element, even if loading them would change that, because unloaded images have a width and height of 0. It creates an even more disruptive user experience when the content visible in the viewport reflows in the middle of reading it. Lazy-loaded images located in the visual viewport may not yet be visible when the Window load event is fired. This is because the event is fired based on eager-loaded images — lazy-loaded images are not considered even if they are located within the visual viewport upon initial page load. Loading is only deferred when JavaScript is enabled. This is an anti-tracking measure, because if a user agent supported lazy loading when scripting is disabled, it would still be possible for a site to track a user's approximate scroll position throughout a session, by strategically placing images in a page's markup such that a server can track how many images are requested and when."
51580
+ "description": "Indicates how the browser should load the image: eager Loads the image immediately, regardless of whether or not the image is currently within the visual viewport (this is the default value). lazy Defers loading the image until it reaches a calculated distance from the viewport, as defined by the browser. Lazy loading avoids the network and storage bandwidth required to handle the image until it's reasonably certain that it will be needed. This improves the performance in most typical use cases. While explicit width and height attributes are recommended for all images to avoid layout shift, they are especially important for lazy-loaded ones. Lazy-loaded images will never be loaded if they do not intersect a visible part of an element, even if loading them would change that, because unloaded images have a width and height of 0. It creates an even more disruptive user experience when the content visible in the viewport reflows in the middle of reading it. Lazy-loaded images located in the visual viewport may not yet be visible when the Window load event is fired. This is because the event is fired based on eager-loaded images — lazy-loaded images are not considered even if they are located within the visual viewport upon initial page load. Loading is only deferred when JavaScript is enabled. This is an anti-tracking measure, because if a user agent supported lazy loading when scripting is disabled, it would still be possible for a site to track a user's approximate scroll position throughout a session, by strategically placing images in a page's markup such that a server can track how many images are requested and when."
51515
51581
  },
51516
51582
  "longdesc": {
51517
51583
  "description": "A link to a more detailed description of the image. Possible values are a URL or an element id. Note: This attribute is considered obsolete in the HTML spec. It has an uncertain future; authors should use a WAI-ARIA alternative such as aria-describedby or aria-details.",
@@ -51525,11 +51591,13 @@
51525
51591
  "description": "A string indicating which referrer to use when fetching the resource: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
51526
51592
  },
51527
51593
  "sizes": {
51528
- "description": "One or more values separated by commas, which can be source sizes or the auto keyword. The spec requires that the sizes attribute to only be present when srcset uses width descriptors. A source size consists of: A media condition, omitted for the last item in the list. A source size value. Media conditions describe properties of the viewport, not the image. For example, (height <= 500px) 1000px proposes using an image source of 1000px width if the viewport height is 500px or less. Because a source size descriptor specifies the width to use for the image during layout, the media condition is typically (but not necessarily) based on the width. Source size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the srcset attribute, when those sources are described using width (w) descriptors. The selected source size affects the intrinsic size of the image (the image's display size if no CSS styling is applied). A source size value can be any non-negative length. It must not use CSS functions other than the math functions. Units are interpreted in the same way as media queries, meaning that all relative length units are relative to the document root rather than the <img> element. For example, an em value is relative to the root font size, not the font size of the image. Percentage values are not allowed. If the sizes attribute is not provided, it has a default value of 100vw (the viewport width). The auto keyword can replace the whole list of sizes or the first entry in the list. It is only valid when combined with loading=\"lazy\", and resolves to the concrete size of the image. Since the intrinsic size of the image is not yet known, width and height attributes (or CSS equivalents) should also be specified to prevent the browser from assuming the default image width of 300px. For better backward compatibility with browsers that do not support auto, you can include fallback sizes after auto in the sizes attribute: html<img loading=\"lazy\" width=\"200\" height=\"200\" sizes=\"auto, (max-width: 30em) 100vw, (max-width: 50em) 50vw, calc(33vw - 100px)\" srcset=\" swing-200.jpg 200w, swing-400.jpg 400w, swing-800.jpg 800w, swing-1600.jpg 1600w \" src=\"swing-400.jpg\" alt=\"Kettlebell Swing\" />"
51594
+ "description": "One or more values separated by commas, which can be source sizes or the auto keyword. The spec requires that the sizes attribute only be present when srcset uses width descriptors. source size A source size consists of: A media condition, omitted for the last item in the list. A source size value. For example, the following source size proposes using a 1000px-wide image source if the viewport width is 500px or less. css(width <= 500px) 1000px Media conditions describe properties of the viewport, not the image. Because a source size descriptor specifies the width to use for the image during layout, the media condition is typically (but not necessarily) based on the width. Source size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the srcset attribute, when those sources are described using width (w) descriptors. The w value defined in sizes determines the image's default layout width. In the absence of CSS, the browser will render the image at this size, regardless of the physical pixel dimensions of the downloaded file. A source size value can be any non-negative length. It must not use CSS functions other than the math functions. Units are interpreted in the same way as media queries, meaning that all relative length units are relative to the document root rather than the <img> element. For example, an em value is relative to the root font size, not the font size of the image. Percentage values are not allowed. If the sizes attribute is not provided, it has a default value of 100vw (the viewport width). auto The auto keyword indicates that the browser should use the expected layout width of the element to select the image to display. That is, it should use the concrete size of the image, calculated after layout from HTML and CSS has been applied. This is only valid when combined with loading=\"lazy\", as the page is expected to already have CSS and other layout information by the time the image loads. Using auto saves you having to specify your layout media conditions twice: once for layout, and once for selection of an appropriate image to fetch and display. If auto cannot resolve — either because the browser does not support it, or because the image has no layout size yet the browser falls back to the source sizes in the list to determine the width, then to width/height attributes defined on the element, and finally to the default intrinsic size for <img> elements defined in the user agent stylesheet (300px by 150px). For better backward compatibility with browsers that do not support auto, you can include fallback sizes after auto in the sizes attribute. You should also set the element's width and height attributes to the intrinsic dimensions of the largest image in your srcset, so the browser can reserve space using the correct aspect ratio: html<img loading=\"lazy\" width=\"200\" height=\"200\" sizes=\"auto, (max-width: 30em) 100vw, (max-width: 50em) 50vw, calc(33vw - 100px)\" srcset=\" swing-200.jpg 200w, swing-400.jpg 400w, swing-800.jpg 800w, swing-1600.jpg 1600w \" src=\"swing-400.jpg\" alt=\"Kettlebell Swing\" />",
51595
+ "type": "SourceSizeList",
51596
+ "condition": "[srcset]"
51529
51597
  },
51530
51598
  "src": {
51531
51599
  "description": "The image URL. At least one of src and srcset is required for an <img> element. If srcset is specified, src is used in one of two ways: as a fallback for browsers that don't support srcset. if srcset uses the \"x\" descriptor, then src is equivalent to a source with the density descriptor 1x; that is, the image specified by src is used on low-density screens (such as typical 72 DPI or 96 DPI displays).",
51532
- "type": "URL",
51600
+ "type": "NonEmptyURL",
51533
51601
  "requiredEither": ["srcset"]
51534
51602
  },
51535
51603
  "srcset": {
@@ -52209,6 +52277,7 @@
52209
52277
  "alt": {
52210
52278
  "description": "Valid for the image button only, the alt attribute provides alternative text for the image, displaying the value of the attribute if the image src is missing or otherwise fails to load. See the image input type.",
52211
52279
  "type": "Any",
52280
+ "required": true,
52212
52281
  "condition": "[type='image' i]"
52213
52282
  },
52214
52283
  "autocapitalize": {
@@ -52216,6 +52285,16 @@
52216
52285
  },
52217
52286
  "autocomplete": {
52218
52287
  "description": "(Not a Boolean attribute!) The autocomplete attribute takes as its value a space-separated string that describes what, if any, type of autocomplete functionality the input should provide. A typical implementation of autocomplete recalls previous values entered in the same input field, but more complex forms of autocomplete can exist. For instance, a browser could integrate with a device's contacts list to autocomplete email addresses in an email input field. See autocomplete for permitted values. The autocomplete attribute is valid on hidden, text, search, url, tel, email, date, month, week, time, datetime-local, number, range, color, and password. This attribute has no effect on input types that do not return numeric or text data, being valid for all input types except checkbox, radio, file, or any of the button types. See the autocomplete attribute for additional information, including information on password security and how autocomplete is slightly different for hidden than for other input types.",
52288
+ "type": [
52289
+ {
52290
+ "condition": "[type='hidden' i]",
52291
+ "type": "AutoCompleteAnchorMantle"
52292
+ },
52293
+ {
52294
+ "condition": ":not([type='hidden' i])",
52295
+ "type": "AutoComplete"
52296
+ }
52297
+ ],
52219
52298
  "condition": [
52220
52299
  ":not([type])",
52221
52300
  "[type='hidden' i]",
@@ -52327,7 +52406,34 @@
52327
52406
  },
52328
52407
  "max": {
52329
52408
  "description": "Valid for date, month, week, time, datetime-local, number, and range, it defines the greatest value in the range of permitted values. If the value entered into the element exceeds this, the element fails constraint validation. If the value of the max attribute isn't a number, then the element has no maximum value. There is a special case: if the data type is periodic (such as for dates or times), the value of max may be lower than the value of min, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.",
52330
- "type": ["DateTime", "Number"],
52409
+ "type": [
52410
+ {
52411
+ "condition": "[type='date' i]",
52412
+ "type": "DateString"
52413
+ },
52414
+ {
52415
+ "condition": "[type='month' i]",
52416
+ "type": "MonthString"
52417
+ },
52418
+ {
52419
+ "condition": "[type='week' i]",
52420
+ "type": "WeekString"
52421
+ },
52422
+ {
52423
+ "condition": "[type='time' i]",
52424
+ "type": "TimeString"
52425
+ },
52426
+ {
52427
+ "condition": "[type='datetime-local' i]",
52428
+ "type": "LocalDateTimeString"
52429
+ },
52430
+ {
52431
+ "condition": ["[type='number' i]", "[type='range' i]"],
52432
+ "type": {
52433
+ "type": "float"
52434
+ }
52435
+ }
52436
+ ],
52331
52437
  "condition": [
52332
52438
  "[type='date' i]",
52333
52439
  "[type='month' i]",
@@ -52352,7 +52458,34 @@
52352
52458
  },
52353
52459
  "min": {
52354
52460
  "description": "Valid for date, month, week, time, datetime-local, number, and range, it defines the most negative value in the range of permitted values. If the value entered into the element is less than this, the element fails constraint validation. If the value of the min attribute isn't a number, then the element has no minimum value. This value must be less than or equal to the value of the max attribute. If the min attribute is present but is not specified or is invalid, no min value is applied. If the min attribute is valid and a non-empty value is less than the minimum allowed by the min attribute, constraint validation will prevent form submission. See Client-side validation for more information. There is a special case: if the data type is periodic (such as for dates or times), the value of max may be lower than the value of min, which indicates that the range may wrap around; for example, this allows you to specify a time range from 10 PM to 4 AM.",
52355
- "type": ["DateTime", "Number"],
52461
+ "type": [
52462
+ {
52463
+ "condition": "[type='date' i]",
52464
+ "type": "DateString"
52465
+ },
52466
+ {
52467
+ "condition": "[type='month' i]",
52468
+ "type": "MonthString"
52469
+ },
52470
+ {
52471
+ "condition": "[type='week' i]",
52472
+ "type": "WeekString"
52473
+ },
52474
+ {
52475
+ "condition": "[type='time' i]",
52476
+ "type": "TimeString"
52477
+ },
52478
+ {
52479
+ "condition": "[type='datetime-local' i]",
52480
+ "type": "LocalDateTimeString"
52481
+ },
52482
+ {
52483
+ "condition": ["[type='number' i]", "[type='range' i]"],
52484
+ "type": {
52485
+ "type": "float"
52486
+ }
52487
+ }
52488
+ ],
52356
52489
  "condition": [
52357
52490
  "[type='date' i]",
52358
52491
  "[type='month' i]",
@@ -52381,7 +52514,10 @@
52381
52514
  "condition": ["[type='email' i]", "[type='file' i]"]
52382
52515
  },
52383
52516
  "name": {
52384
- "description": "A string specifying a name for the input control. This name is submitted along with the control's value when the form data is submitted. Consider the name a required attribute (even though it's not). If an input has no name specified, or name is empty, the input's value is not submitted with the form! (Disabled controls, unchecked radio buttons, unchecked checkboxes, and reset buttons are also not sent.) There are two special cases: _charset_ : If used as the name of an <input> element of type hidden, the input's value is automatically set by the user agent to the character encoding being used to submit the form. isindex: For historical reasons, the name isindex is not allowed. The name attribute creates a unique behavior for radio buttons. Only one radio button in a same-named group of radio buttons can be checked at a time. Selecting any radio button in that group automatically deselects any currently-selected radio button in the same group. The value of that one checked radio button is sent along with the name if the form is submitted, When tabbing into a series of same-named group of radio buttons, if one is checked, that one will receive focus. If they aren't grouped together in source order, if one of the group is checked, tabbing into the group starts when the first one in the group is encountered, skipping all those that aren't checked. In other words, if one is checked, tabbing skips the unchecked radio buttons in the group. If none are checked, the radio button group receives focus when the first button in the same name group is reached. Once one of the radio buttons in a group has focus, using the arrow keys will navigate through all the radio buttons of the same name, even if the radio buttons are not grouped together in the source order. When an input element is given a name, that name becomes a property of the owning form element's HTMLFormElement.elements property. If you have an input whose name is set to guest and another whose name is hat-size, the following code can be used: jslet form = document.querySelector(\"form\"); let guestName = form.elements.guest; let hatSize = form.elements[\"hat-size\"]; When this code has run, guestName will be the HTMLInputElement for the guest field, and hatSize the object for the hat-size field. Warning: Avoid giving form elements a name that corresponds to a built-in property of the form, since you would then override the predefined property or method with this reference to the corresponding input."
52517
+ "description": "A string specifying a name for the input control. This name is submitted along with the control's value when the form data is submitted. Consider the name a required attribute (even though it's not). If an input has no name specified, or name is empty, the input's value is not submitted with the form! (Disabled controls, unchecked radio buttons, unchecked checkboxes, and reset buttons are also not sent.) There are two special cases: _charset_ : If used as the name of an <input> element of type hidden, the input's value is automatically set by the user agent to the character encoding being used to submit the form. isindex: For historical reasons, the name isindex is not allowed. The name attribute creates a unique behavior for radio buttons. Only one radio button in a same-named group of radio buttons can be checked at a time. Selecting any radio button in that group automatically deselects any currently-selected radio button in the same group. The value of that one checked radio button is sent along with the name if the form is submitted, When tabbing into a series of same-named group of radio buttons, if one is checked, that one will receive focus. If they aren't grouped together in source order, if one of the group is checked, tabbing into the group starts when the first one in the group is encountered, skipping all those that aren't checked. In other words, if one is checked, tabbing skips the unchecked radio buttons in the group. If none are checked, the radio button group receives focus when the first button in the same name group is reached. Once one of the radio buttons in a group has focus, using the arrow keys will navigate through all the radio buttons of the same name, even if the radio buttons are not grouped together in the source order. When an input element is given a name, that name becomes a property of the owning form element's HTMLFormElement.elements property. If you have an input whose name is set to guest and another whose name is hat-size, the following code can be used: jslet form = document.querySelector(\"form\"); let guestName = form.elements.guest; let hatSize = form.elements[\"hat-size\"]; When this code has run, guestName will be the HTMLInputElement for the guest field, and hatSize the object for the hat-size field. Warning: Avoid giving form elements a name that corresponds to a built-in property of the form, since you would then override the predefined property or method with this reference to the corresponding input.",
52518
+ "type": {
52519
+ "pattern": "/^(?!isindex$).+/"
52520
+ }
52385
52521
  },
52386
52522
  "orient": {
52387
52523
  "description": "Similar to the -moz-orient non-standard CSS property impacting the <progress> and <meter> elements, the orient attribute defines the orientation of the range slider. Values include horizontal, meaning the range is rendered horizontally, and vertical, where the range is rendered vertically. See Creating vertical form controls for a modern approach to creating vertical form controls.",
@@ -52566,7 +52702,7 @@
52566
52702
  },
52567
52703
  {
52568
52704
  "condition": "[type='url' i]",
52569
- "type": "URL"
52705
+ "type": "AbsoluteURLOrEmpty"
52570
52706
  },
52571
52707
  {
52572
52708
  "condition": "[type='email' i]",
@@ -52643,7 +52779,7 @@
52643
52779
  },
52644
52780
  "datetime": {
52645
52781
  "description": "This attribute indicates the time and date of the change and must be a valid date with an optional time string. If the value cannot be parsed as a date with an optional time string, the element does not have an associated timestamp. For the format of the string without a time, see Format of a valid date string. The format of the string if it includes both date and time is covered in Format of a valid local date and time string.",
52646
- "type": "DateTime"
52782
+ "type": "DateStringWithOptionalTime"
52647
52783
  }
52648
52784
  }
52649
52785
  },
@@ -52667,7 +52803,7 @@
52667
52803
  {
52668
52804
  "name": "kbd",
52669
52805
  "cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/kbd",
52670
- "description": "The <kbd> HTML element represents a span of inline text denoting textual user input from a keyboard, voice input, or any other text entry device. By convention, the user agent defaults to rendering the contents of a <kbd> element using its default monospace font, although this is not mandated by the HTML standard.",
52806
+ "description": "The <kbd> HTML element represents user input (typically keyboard input). By default, the content text is displayed using the user agent's default monospace font. <kbd> may be nested in various combinations with the <samp> (Sample Output) element to represent various forms of input or output based on visual cues.",
52671
52807
  "categories": ["#flow", "#phrasing", "#palpable"],
52672
52808
  "contentModel": {
52673
52809
  "contents": [
@@ -52837,7 +52973,7 @@
52837
52973
  },
52838
52974
  "attributes": {
52839
52975
  "as": {
52840
- "description": "This attribute is required when rel=\"preload\" has been set on the <link> element, optional when rel=\"modulepreload\" has been set, and otherwise should not be used. It specifies the type of content being loaded by the <link>, which is necessary for request matching, application of correct content security policy, and setting of correct Accept request header. Furthermore, rel=\"preload\" uses this as a signal for request prioritization. The table below lists the valid values for this attribute and the elements or resources they apply to. Value Applies To audio <audio> elements document <iframe> and <frame> elements embed <embed> elements fetch fetch, XHR Note: This value also requires <link> to contain the crossorigin attribute, see CORS-enabled fetches. font CSS @font-face Note: This value also requires <link> to contain the crossorigin attribute, see CORS-enabled fetches. image <img> and <picture> elements with srcset or imageset attributes, SVG <image> elements, CSS *-image rules json modulepreload destinations. object <object> elements script <script> elements, Worker importScripts, and modulepreload destinations. style <link rel=stylesheet> elements, CSS @import and modulepreload destinations. track <track> elements video <video> elements worker Worker, SharedWorker",
52976
+ "description": "This attribute is required when rel=\"preload\" has been set on the <link> element, optional when rel=\"modulepreload\" has been set, and otherwise should not be used. It specifies the type of content being loaded by the <link>, which is necessary for request matching, application of correct content security policy, and setting of correct Accept request header. Furthermore, rel=\"preload\" uses this as a signal for request prioritization. The table below lists the valid values for this attribute and the elements or resources they apply to. As value Rel value Applies To audioworklet modulepreload AudioWorklet modules fetch preload fetch, XHR Note: This value also requires <link> to contain the crossorigin attribute, see CORS-enabled fetches. font preload CSS @font-face Note: This value also requires <link> to contain the crossorigin attribute, see CORS-enabled fetches. image preload <img> and <picture> elements with srcset or imageset attributes, SVG <image> elements, CSS *-image rules json modulepreload Supplementary JSON file paintworklet modulepreload PaintWorklet modules script preload or modulepreload <script> elements, Worker importScripts, and modulepreload destinations. serviceworker modulepreload ServiceWorker modules sharedworker modulepreload SharedWorker style preload or modulepreload <link rel=stylesheet> elements, CSS @import and modulepreload destinations. text modulepreload Supplementary plain text file track preload <track> elements (WebVTT, MIME type text/vtt) worker modulepreload Worker modules",
52841
52977
  "type": [
52842
52978
  {
52843
52979
  "condition": "[rel~='preload' i]",
@@ -52861,7 +52997,8 @@
52861
52997
  }
52862
52998
  }
52863
52999
  ],
52864
- "condition": ["[rel~='preload' i]", "[rel~='modulepreload' i]"]
53000
+ "condition": ["[rel~='preload' i]", "[rel~='modulepreload' i]"],
53001
+ "required": "[rel~='preload' i]"
52865
53002
  },
52866
53003
  "blocking": {
52867
53004
  "description": "This attribute explicitly indicates that certain operations should be blocked until specific conditions are met. It must only be used when the rel attribute contains the expect or stylesheet keywords. With rel=\"expect\", it indicates that operations should be blocked until a specific DOM node has been parsed. With rel=\"stylesheet\", it indicates that operations should be blocked until an external stylesheet and its critical subresources have been fetched and applied to the document. The operations that are to be blocked must be a space-separated list of blocking tokens listed below. Currently there is only one token: render: The rendering of content on the screen is blocked. Note: Only link elements in the document's <head> can possibly block rendering. By default, a link element with rel=\"stylesheet\" in the <head> blocks rendering when the browser discovers it during parsing. If such a link element is added dynamically via script, you must additionally set blocking = \"render\" for it to block rendering.",
@@ -52888,13 +53025,15 @@
52888
53025
  },
52889
53026
  "disabled": {
52890
53027
  "description": "For rel=\"stylesheet\" only, the disabled Boolean attribute indicates whether the described stylesheet should be loaded and applied to the document. If disabled is specified in the HTML when it is loaded, the stylesheet will not be loaded during page load. Instead, the stylesheet will be loaded on-demand, if and when the disabled attribute is changed to false or removed. Setting the disabled property in the DOM causes the stylesheet to be removed from the document's Document.styleSheets list.",
52891
- "type": "Boolean"
53028
+ "type": "Boolean",
53029
+ "condition": "[rel~='stylesheet' i]"
52892
53030
  },
52893
53031
  "fetchpriority": {
52894
53032
  "description": "Provides a hint of the relative priority to use when fetching a resource of a particular type. Allowed values: high Fetch the resource at a high priority relative to other resources of the same type. low Fetch the resource at a low priority relative to other resources of the same type. auto Don't set a preference for the fetch priority. This is the default. It is used if no value or an invalid value is set."
52895
53033
  },
52896
53034
  "href": {
52897
53035
  "description": "This attribute specifies the URL of the linked resource. A URL can be absolute or relative.",
53036
+ "type": "NonEmptyURL",
52898
53037
  "requiredEither": ["imagesrcset"]
52899
53038
  },
52900
53039
  "hreflang": {
@@ -52913,7 +53052,7 @@
52913
53052
  "required": "[imagesizes]"
52914
53053
  },
52915
53054
  "integrity": {
52916
- "description": "Contains inline metadata a base64-encoded cryptographic hash of the resource (file) you're telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered without unexpected manipulation. The attribute must only be specified when the rel attribute is specified to stylesheet, preload, or modulepreload. See Subresource Integrity.",
53055
+ "description": "This attribute contains one or more hashes of the resource. It is used to ensure that the content of the resource is what the developer expects it to be, and has not been replaced with a malicious copy in a supply chain attack. The attribute must only be specified when the rel attribute is set to stylesheet, preload, or modulepreload. See Subresource Integrity.",
52917
53056
  "condition": ["[rel~='stylesheet' i]", "[rel~='preload' i]", "[rel~='modulepreload' i]"]
52918
53057
  },
52919
53058
  "itemprop": {
@@ -52951,7 +53090,14 @@
52951
53090
  "deprecated": true
52952
53091
  },
52953
53092
  "title": {
52954
- "description": "The title attribute has special semantics on the <link> element. When used on a <link rel=\"stylesheet\"> it defines a default or an alternate stylesheet."
53093
+ "description": "The title attribute has special semantics on the <link> element. When used on a <link rel=\"stylesheet\"> it defines a default or an alternate stylesheet.",
53094
+ "type": [
53095
+ {
53096
+ "condition": "[rel~='alternate' i][rel~='stylesheet' i]",
53097
+ "type": "NoEmptyAny"
53098
+ }
53099
+ ],
53100
+ "required": "[rel~='alternate' i][rel~='stylesheet' i]"
52955
53101
  },
52956
53102
  "type": {
52957
53103
  "description": "This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as text/html, text/css, and so on. The common use of this attribute is to define the type of stylesheet being referenced (such as text/css), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the type attribute, but is actually now recommended practice. It is also used on rel=\"preload\" link types, to make sure the browser only downloads file types that it supports."
@@ -53062,7 +53208,7 @@
53062
53208
  {
53063
53209
  "name": "marquee",
53064
53210
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
53065
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <marquee> HTML element is used to insert a scrolling area of text. You can control what happens when the text reaches the edges of its content area using its attributes. The HTML <marquee> element is deprecated and its use is strongly discouraged. If you must create the effect of scrolling text or continuous elements, consider using CSS animations with CSS transforms instead of <marquee> elements to smoothly animate content. Additionally, include the prefers-reduced-motion CSS @media query to stop the animation based on user preference, thereby improving user experience and accessibility.",
53211
+ "description": "The <marquee> HTML element is used to insert a scrolling area of text. You can control what happens when the text reaches the edges of its content area using its attributes. The HTML <marquee> element is deprecated and its use is strongly discouraged. If you must create the effect of scrolling text or continuous elements, consider using CSS animations with CSS transforms instead of <marquee> elements to smoothly animate content. Additionally, include the prefers-reduced-motion CSS @media query to stop the animation based on user preference, thereby improving user experience and accessibility.",
53066
53212
  "categories": [],
53067
53213
  "contentModel": {
53068
53214
  "contents": true
@@ -53089,11 +53235,13 @@
53089
53235
  },
53090
53236
  "height": {
53091
53237
  "description": "Sets the height in pixels or percentage value.",
53092
- "deprecated": true
53238
+ "deprecated": true,
53239
+ "nonStandard": true
53093
53240
  },
53094
53241
  "hspace": {
53095
53242
  "description": "Sets the horizontal margin",
53096
- "deprecated": true
53243
+ "deprecated": true,
53244
+ "nonStandard": true
53097
53245
  },
53098
53246
  "loop": {
53099
53247
  "description": "Sets the number of times the marquee will scroll. If no value is specified, the default value is −1, which means the marquee will scroll continuously.",
@@ -53101,11 +53249,13 @@
53101
53249
  },
53102
53250
  "scrollamount": {
53103
53251
  "description": "Sets the amount of scrolling at each interval in pixels. The default value is 6.",
53104
- "deprecated": true
53252
+ "deprecated": true,
53253
+ "nonStandard": true
53105
53254
  },
53106
53255
  "scrolldelay": {
53107
53256
  "description": "Sets the interval between each scroll movement in milliseconds. The default value is 85. Note that any value smaller than 60 is ignored and the value 60 is used instead unless truespeed is specified.",
53108
- "deprecated": true
53257
+ "deprecated": true,
53258
+ "nonStandard": true
53109
53259
  },
53110
53260
  "truespeed": {
53111
53261
  "description": "By default, scrolldelay values lower than 60 are ignored. If truespeed is present, those values are not ignored.",
@@ -53113,11 +53263,13 @@
53113
53263
  },
53114
53264
  "vspace": {
53115
53265
  "description": "Sets the vertical margin in pixels or percentage value.",
53116
- "deprecated": true
53266
+ "deprecated": true,
53267
+ "nonStandard": true
53117
53268
  },
53118
53269
  "width": {
53119
53270
  "description": "Sets the width in pixels or percentage value.",
53120
- "deprecated": true
53271
+ "deprecated": true,
53272
+ "nonStandard": true
53121
53273
  }
53122
53274
  }
53123
53275
  },
@@ -53228,7 +53380,27 @@
53228
53380
  },
53229
53381
  "content": {
53230
53382
  "description": "This attribute contains the value for the http-equiv or name attribute, depending on which is used.",
53231
- "type": "Any",
53383
+ "type": [
53384
+ {
53385
+ "condition": "[http-equiv='refresh' i]",
53386
+ "type": "HTTPEquivRefresh"
53387
+ },
53388
+ {
53389
+ "condition": "[http-equiv='content-type' i]",
53390
+ "type": "HTTPEquivContentType"
53391
+ },
53392
+ {
53393
+ "condition": "[http-equiv='x-ua-compatible' i]",
53394
+ "type": {
53395
+ "enum": ["IE=edge"],
53396
+ "caseInsensitive": true
53397
+ }
53398
+ },
53399
+ {
53400
+ "condition": "[http-equiv='content-security-policy' i]",
53401
+ "type": "ContentSecurityPolicy"
53402
+ }
53403
+ ],
53232
53404
  "required": ["[name]", "[http-equiv]", "[itemprop]"],
53233
53405
  "condition": ["[name]", "[http-equiv]", "[itemprop]"]
53234
53406
  },
@@ -53407,7 +53579,7 @@
53407
53579
  {
53408
53580
  "name": "nobr",
53409
53581
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
53410
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <nobr> HTML element prevents the text it contains from automatically wrapping across multiple lines, potentially resulting in the user having to scroll horizontally to see the entire width of the text. Warning: Although this element is widely supported, it was never standard HTML, so you shouldn't use it. Instead, use the CSS property white-space like this: html<span class=\"nobr\">Long line with no breaks</span> css.nobr { white-space: nowrap; }",
53582
+ "description": "The <nobr> HTML element prevents the text it contains from automatically wrapping across multiple lines, potentially resulting in the user having to scroll horizontally to see the entire width of the text. Warning: Although this element is widely supported, it was never standard HTML, so you shouldn't use it. Instead, use the CSS property white-space like this: html<span class=\"nobr\">Long line with no breaks</span> css.nobr { white-space: nowrap; }",
53411
53583
  "categories": [],
53412
53584
  "contentModel": {
53413
53585
  "contents": true
@@ -53424,7 +53596,7 @@
53424
53596
  {
53425
53597
  "name": "noembed",
53426
53598
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
53427
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <noembed> HTML element is an obsolete, non-standard way to provide alternative, or \"fallback\", content for browsers that do not support the <embed> element or do not support the type of embedded content an author wishes to use. This element was deprecated in HTML 4.01 and above in favor of placing fallback content between the opening and closing tags of an <object> element. Note: While this element currently still works in many browsers, it is obsolete and should not be used. Use <object> instead, with fallback content between the opening and closing tags of the element.",
53599
+ "description": "The <noembed> HTML element is an obsolete, non-standard way to provide alternative, or \"fallback\", content for browsers that do not support the <embed> element or do not support the type of embedded content an author wishes to use. This element was deprecated in HTML 4.01 and above in favor of placing fallback content between the opening and closing tags of an <object> element. Note: While this element currently still works in many browsers, it is obsolete and should not be used. Use <object> instead, with fallback content between the opening and closing tags of the element.",
53428
53600
  "categories": [],
53429
53601
  "contentModel": {
53430
53602
  "contents": true
@@ -53441,7 +53613,7 @@
53441
53613
  {
53442
53614
  "name": "noframes",
53443
53615
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
53444
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <noframes> HTML element provides content to be presented in browsers that don't support (or have disabled support for) the <frame> element. Although most commonly-used browsers support frames, there are exceptions, including certain special-use browsers including some mobile browsers, as well as text-mode browsers. A <noframes> element can contain any HTML elements that are allowed within the body of an HTML document, except for the <frameset> and <frame> elements, since using frames when they aren't supported doesn't make sense. <noframes> can be used to present a message explaining that the user's browser doesn't support frames, but ideally should be used to present an alternate form of the site that doesn't use frames but still offers the same or similar functionality. Note: This element is obsolete and shouldn't be used, since the <frame> and <frameset> elements are also obsolete. When frames are needed at all, they should be presented using the <iframe> element.",
53616
+ "description": "The <noframes> HTML element provides content to be presented in browsers that don't support (or have disabled support for) the <frame> element. Although most commonly-used browsers support frames, there are exceptions, including certain special-use browsers including some mobile browsers, as well as text-mode browsers. A <noframes> element can contain any HTML elements that are allowed within the body of an HTML document, except for the <frameset> and <frame> elements, since using frames when they aren't supported doesn't make sense. <noframes> can be used to present a message explaining that the user's browser doesn't support frames, but ideally should be used to present an alternate form of the site that doesn't use frames but still offers the same or similar functionality. Note: This element is obsolete and shouldn't be used, since the <frame> and <frameset> elements are also obsolete. When frames are needed at all, they should be presented using the <iframe> element.",
53445
53617
  "categories": [],
53446
53618
  "contentModel": {
53447
53619
  "contents": true
@@ -53527,7 +53699,7 @@
53527
53699
  },
53528
53700
  "data": {
53529
53701
  "description": "The address of the resource as a valid URL. At least one of data and type must be defined.",
53530
- "type": "URL",
53702
+ "type": "NonEmptyURL",
53531
53703
  "requiredEither": ["type"]
53532
53704
  },
53533
53705
  "declare": {
@@ -53668,7 +53840,7 @@
53668
53840
  },
53669
53841
  "attributes": {
53670
53842
  "disabled": {
53671
- "description": "If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers grey out such control and it won't receive any browsing events, like mouse clicks or focus-related ones."
53843
+ "description": "If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers gray out such control and it won't receive any browsing events, like mouse clicks or focus-related ones."
53672
53844
  },
53673
53845
  "label": {
53674
53846
  "description": "The name of the group of options, which the browser can use when labeling the options in the user interface. This attribute is mandatory if this element is used.",
@@ -53752,7 +53924,7 @@
53752
53924
  },
53753
53925
  "attributes": {
53754
53926
  "disabled": {
53755
- "description": "If this Boolean attribute is set, this option is not checkable. Often browsers grey out such control and it won't receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled <optgroup> element."
53927
+ "description": "If this Boolean attribute is set, this option is not checkable. Often browsers gray out such control and it won't receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled <optgroup> element."
53756
53928
  },
53757
53929
  "label": {
53758
53930
  "description": "This attribute is text for the label indicating the meaning of the option. If the label attribute isn't defined, its value is that of the element text content.",
@@ -53840,7 +54012,7 @@
53840
54012
  {
53841
54013
  "name": "param",
53842
54014
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
53843
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <param> HTML element defines parameters for an <object> element. Note: Use the <object> element with a data attribute to set the URL of an external resource.",
54015
+ "description": "The <param> HTML element defines parameters for an <object> element. Note: Use the <object> element with a data attribute to set the URL of an external resource.",
53844
54016
  "categories": [],
53845
54017
  "contentModel": {
53846
54018
  "contents": true
@@ -53855,19 +54027,23 @@
53855
54027
  "attributes": {
53856
54028
  "name": {
53857
54029
  "description": "Name of the parameter.",
53858
- "deprecated": true
54030
+ "deprecated": true,
54031
+ "nonStandard": true
53859
54032
  },
53860
54033
  "type": {
53861
54034
  "description": "Only used if the valuetype is set to ref. Specifies the MIME type of values found at the URI specified by value.",
53862
- "deprecated": true
54035
+ "deprecated": true,
54036
+ "nonStandard": true
53863
54037
  },
53864
54038
  "value": {
53865
54039
  "description": "Specifies the value of the parameter.",
53866
- "deprecated": true
54040
+ "deprecated": true,
54041
+ "nonStandard": true
53867
54042
  },
53868
54043
  "valuetype": {
53869
54044
  "description": "Specifies the type of the value attribute. Possible values are: data: Default value. The value is passed to the object's implementation as a string. ref: The value is a URI to a resource where run-time values are stored. object: An ID of another <object> in the same document.",
53870
- "deprecated": true
54045
+ "deprecated": true,
54046
+ "nonStandard": true
53871
54047
  }
53872
54048
  }
53873
54049
  },
@@ -53921,7 +54097,7 @@
53921
54097
  {
53922
54098
  "name": "plaintext",
53923
54099
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
53924
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <plaintext> HTML element renders everything following the start tag as raw text, ignoring any following HTML. There is no closing tag, since everything after it is considered raw text. Warning: Do not use this element. <plaintext> is deprecated since HTML 2, and not all browsers implemented it. Browsers that did implement it didn't do so consistently. <plaintext> is obsolete; browsers that accept it may instead treat it as a <pre> element that still interprets HTML within. If <plaintext> is the first element on the page (other than any non-displayed elements, like <head>), do not use HTML at all. Instead serve a text file with the text/plain MIME-type. Instead of <plaintext>, use the <pre> element or, if semantically accurate (such as for inline text), the <code> element. Escape any <, > and & characters, to prevent browsers inadvertently parsing the element content as HTML. A monospaced font can be applied to any HTML element via a CSS font-family style with the monospace generic value.",
54100
+ "description": "The <plaintext> HTML element renders everything following the start tag as raw text, ignoring any following HTML. There is no closing tag, since everything after it is considered raw text. Warning: Do not use this element. <plaintext> is deprecated since HTML 2, and not all browsers implemented it. Browsers that did implement it didn't do so consistently. <plaintext> is obsolete; browsers that accept it may instead treat it as a <pre> element that still interprets HTML within. If <plaintext> is the first element on the page (other than any non-displayed elements, like <head>), do not use HTML at all. Instead serve a text file with the text/plain MIME-type. Instead of <plaintext>, use the <pre> element or, if semantically accurate (such as for inline text), the <code> element. Escape any <, > and & characters, to prevent browsers inadvertently parsing the element content as HTML. A monospaced font can be applied to any HTML element via a CSS font-family style with the monospace generic value.",
53925
54101
  "categories": [],
53926
54102
  "contentModel": {
53927
54103
  "contents": true
@@ -54021,11 +54197,17 @@
54021
54197
  "attributes": {
54022
54198
  "max": {
54023
54199
  "description": "This attribute describes how much work the task indicated by the progress element requires. The max attribute, if present, must have a value greater than 0 and be a valid floating point number. The default value is 1.",
54024
- "type": "Number"
54200
+ "type": {
54201
+ "type": "float",
54202
+ "gt": 0
54203
+ }
54025
54204
  },
54026
54205
  "value": {
54027
54206
  "description": "This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and max, or between 0 and 1 if max is omitted. If there is no value attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.",
54028
- "type": "Number"
54207
+ "type": {
54208
+ "type": "float",
54209
+ "gte": 0
54210
+ }
54029
54211
  }
54030
54212
  }
54031
54213
  },
@@ -54065,7 +54247,7 @@
54065
54247
  {
54066
54248
  "name": "rb",
54067
54249
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
54068
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <rb> HTML element is used to delimit the base text component of a <ruby> annotation, i.e., the text that is being annotated. One <rb> element should wrap each separate atomic segment of the base text.",
54250
+ "description": "The <rb> HTML element is used to delimit the base text component of a <ruby> annotation, i.e., the text that is being annotated. One <rb> element should wrap each separate atomic segment of the base text.",
54069
54251
  "categories": [],
54070
54252
  "contentModel": {
54071
54253
  "contents": true
@@ -54131,7 +54313,7 @@
54131
54313
  {
54132
54314
  "name": "rtc",
54133
54315
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
54134
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <rtc> HTML element embraces semantic annotations of characters presented in a ruby of <rb> elements used inside of <ruby> element. <rb> elements can have both pronunciation (<rt>) and semantic (<rtc>) annotations.",
54316
+ "description": "The <rtc> HTML element embraces semantic annotations of characters presented in a ruby of <rb> elements used inside of <ruby> element. <rb> elements can have both pronunciation (<rt>) and semantic (<rtc>) annotations.",
54135
54317
  "categories": [],
54136
54318
  "contentModel": {
54137
54319
  "contents": true
@@ -54282,14 +54464,15 @@
54282
54464
  "description": "For classic scripts, if the async attribute is present, then the classic script will be fetched in parallel to parsing and evaluated as soon as it is available. For module scripts, if the async attribute is present then the scripts and all their dependencies will be fetched in parallel to parsing and evaluated as soon as they are available. Warning: This attribute must not be used if the src attribute is absent (i.e., for inline scripts) for classic scripts, in this case it would have no effect. This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and evaluate scripts before continuing to parse. defer has a similar effect in this case. If the attribute is specified with the defer attribute, the element will act as if only the async attribute is specified. This is a boolean attribute: the presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value. See Browser compatibility for notes on browser support. See also Async scripts for asm.js.",
54283
54465
  "type": "Boolean",
54284
54466
  "condition": [
54285
- ":not([type='importmap' i]):not([type='speculationrules' i])[src]",
54467
+ ":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]",
54286
54468
  "[type='module' i]"
54287
54469
  ],
54288
54470
  "ineffective": ":not([src]):not([type='module' i])"
54289
54471
  },
54290
54472
  "attributionsrc": {
54291
54473
  "description": "Specifies that you want the browser to send an Attribution-Reporting-Eligible header along with the script resource request. On the server-side this is used to trigger sending an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header in the response, to register a JavaScript-based attribution source or attribution trigger, respectively. Which response header should be sent back depends on the value of the Attribution-Reporting-Eligible header that triggered the registration. Note: Alternatively, JavaScript-based attribution sources or triggers can be registered by sending a fetch() request containing the attributionReporting option (either set directly on the fetch() call or on a Request object passed into the fetch() call), or by sending an XMLHttpRequest with setAttributionReporting() invoked on the request object. There are two versions of this attribute that you can set: Boolean, i.e., just the attributionsrc name. This specifies that you want the Attribution-Reporting-Eligible header sent to the same server as the src attribute points to. This is fine when you are handling the attribution source or trigger registration on the same server. When registering an attribution trigger this property is optional, and an empty string value will be used if it is omitted. Value containing one or more URLs, for example: html<script src=\"myscript.js\" attributionsrc=\"https://a.example/register-source https://b.example/register-source\"></script> This is useful in cases where the requested resource is not on a server you control, or you just want to handle registering the attribution source on a different server. In this case, you can specify one or more URLs as the value of attributionsrc. When the resource request occurs the Attribution-Reporting-Eligible header will be sent to the URL(s) specified in attributionSrc in addition to the resource origin. These URLs can then respond with an Attribution-Reporting-Register-Source or Attribution-Reporting-Register-Trigger header as appropriate to complete registration. Note: Specifying multiple URLs means that multiple attribution sources can be registered on the same feature. You might for example have different campaigns that you are trying to measure the success of, which involve generating different reports on different data. See the Attribution Reporting API for more details.",
54292
- "deprecated": true
54474
+ "deprecated": true,
54475
+ "nonStandard": true
54293
54476
  },
54294
54477
  "blocking": {
54295
54478
  "description": "This attribute explicitly indicates that certain operations should be blocked until the script has executed. The operations that are to be blocked must be a space-separated list of blocking tokens. Currently there is only one token: render: The rendering of content on the screen is blocked. Note: Only script elements in the document's <head> can possibly block rendering. Scripts are not render-blocking by default; if a script element does not include type=\"module\", async, or defer, then it blocks parsing, not rendering. If such a script element is added dynamically via script, you must set blocking = \"render\" for it to block rendering.",
@@ -54300,7 +54483,7 @@
54300
54483
  "separator": "space",
54301
54484
  "unique": true
54302
54485
  },
54303
- "condition": ":not([type='importmap' i]):not([type='speculationrules' i])"
54486
+ "condition": ":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]"
54304
54487
  },
54305
54488
  "charset": {
54306
54489
  "description": "If present, its value must be an ASCII case-insensitive match for utf-8. It's unnecessary to specify the charset attribute, because documents must use UTF-8, and the script element inherits its character encoding from the document.",
@@ -54308,20 +54491,22 @@
54308
54491
  "condition": "[src]"
54309
54492
  },
54310
54493
  "crossorigin": {
54311
- "description": "Normal script elements pass minimal information to the window.onerror for scripts which do not pass the standard CORS checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments."
54494
+ "description": "Normal script elements pass minimal information to the window.onerror for scripts which do not pass the standard CORS checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments.",
54495
+ "condition": ":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])"
54312
54496
  },
54313
54497
  "defer": {
54314
54498
  "description": "This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing DOMContentLoaded event. Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has loaded and finished evaluating. Warning: This attribute must not be used if the src attribute is absent (i.e., for inline scripts), in this case it would have no effect. The defer attribute has no effect on module scripts — they defer by default. Scripts with the defer attribute will execute in the order in which they appear in the document. This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and evaluate scripts before continuing to parse. async has a similar effect in this case. If the attribute is specified with the async attribute, the element will act as if only the async attribute is specified.",
54315
54499
  "type": "Boolean",
54316
- "condition": ":not([type='importmap' i]):not([type='speculationrules' i])[src]",
54317
- "ineffective": ["[type='module' i]", ":not([src])", "[async]"]
54500
+ "condition": ":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]",
54501
+ "ineffective": [":not([src])", "[async]"]
54318
54502
  },
54319
54503
  "fetchpriority": {
54320
- "description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Fetch the external script at a high priority relative to other external scripts. low Fetch the external script at a low priority relative to other external scripts. auto Don't set a preference for the fetch priority. This is the default. It is used if no value or an invalid value is set."
54504
+ "description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Fetch the external script at a high priority relative to other external scripts. low Fetch the external script at a low priority relative to other external scripts. auto Don't set a preference for the fetch priority. This is the default. It is used if no value or an invalid value is set.",
54505
+ "condition": ":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]"
54321
54506
  },
54322
54507
  "integrity": {
54323
- "description": "This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered without unexpected manipulation. The attribute must not be specified when the src attribute is absent. See Subresource Integrity.",
54324
- "condition": ":not([type='importmap' i]):not([type='speculationrules' i])[src]"
54508
+ "description": "This attribute contains one or more hashes of the script. It is used to ensure that the content of the script is what the developer expects it to be, and has not been replaced with a malicious script in a supply chain attack. The attribute must not be specified when the src attribute is absent. See also Subresource Integrity.",
54509
+ "condition": ":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])[src]"
54325
54510
  },
54326
54511
  "language": {
54327
54512
  "description": "Like the type attribute, this attribute identifies the scripting language in use. Unlike the type attribute, however, this attribute's possible values were never standardized. The type attribute should be used instead.",
@@ -54331,21 +54516,22 @@
54331
54516
  "nomodule": {
54332
54517
  "description": "This Boolean attribute is set to indicate that the script should not be executed in browsers that support ES modules — in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code.",
54333
54518
  "type": "Boolean",
54334
- "condition": ":not([type='module' i]):not([type='importmap' i]):not([type='speculationrules' i])"
54519
+ "condition": ":is(:not([type]), [type=''], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])"
54335
54520
  },
54336
54521
  "nonce": {
54337
54522
  "description": "A cryptographic nonce (number used once) to allow scripts in a script-src Content-Security-Policy. The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial."
54338
54523
  },
54339
54524
  "referrerpolicy": {
54340
- "description": "Indicates which referrer to send when fetching the script, or resources fetched by the script: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins. Note: An empty string value (\"\") is both the default value, and a fallback value if referrerpolicy is not supported. If referrerpolicy is not explicitly specified on the <script> element, it will adopt a higher-level referrer policy, i.e., one set on the whole document or domain. If a higher-level policy is not available, the empty string is treated as being equivalent to strict-origin-when-cross-origin."
54525
+ "description": "Indicates which referrer to send when fetching the script, or resources fetched by the script: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins. Note: An empty string value (\"\") is both the default value, and a fallback value if referrerpolicy is not supported. If referrerpolicy is not explicitly specified on the <script> element, it will adopt a higher-level referrer policy, i.e., one set on the whole document or domain. If a higher-level policy is not available, the empty string is treated as being equivalent to strict-origin-when-cross-origin.",
54526
+ "condition": ":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])"
54341
54527
  },
54342
54528
  "src": {
54343
54529
  "description": "This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.",
54344
- "type": "URL",
54345
- "condition": ":not([type='importmap' i]):not([type='speculationrules' i])"
54530
+ "type": "NonEmptyURL",
54531
+ "condition": ":is(:not([type]), [type=''], [type='module' i], [type='application/ecmascript' i], [type='application/javascript' i], [type='application/x-ecmascript' i], [type='application/x-javascript' i], [type='text/ecmascript' i], [type='text/javascript' i], [type='text/javascript1.0' i], [type='text/javascript1.1' i], [type='text/javascript1.2' i], [type='text/javascript1.3' i], [type='text/javascript1.4' i], [type='text/javascript1.5' i], [type='text/jscript' i], [type='text/livescript' i], [type='text/x-ecmascript' i], [type='text/x-javascript' i])"
54346
54532
  },
54347
54533
  "type": {
54348
- "description": "This attribute indicates the type of script represented. The value of this attribute will be one of the following: Attribute is not set (default), an empty string, or a JavaScript MIME type Indicates that the script is a \"classic script\", containing JavaScript code. Authors are encouraged to omit the attribute if the script refers to JavaScript code rather than specify a MIME type. JavaScript MIME types are listed in the IANA media types specification. importmap This value indicates that the body of the element contains an import map. The import map is a JSON object that developers can use to control how the browser resolves module specifiers when importing JavaScript modules. module This value causes the code to be treated as a JavaScript module. The processing of the script contents is deferred. The charset and defer attributes have no effect. For information on using module, see our JavaScript modules guide. Unlike classic scripts, module scripts require the use of the CORS protocol for cross-origin fetching. speculationrules Experimental This value indicates that the body of the element contains speculation rules. Speculation rules take the form of a JSON object that determine what resources should be prefetched or prerendered by the browser. This is part of the Speculation Rules API. Any other value The embedded content is treated as a data block, and won't be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. All of the other attributes will be ignored, including the src attribute.",
54534
+ "description": "This attribute indicates the type of script represented. The value of this attribute will be one of the following: Attribute is not set (default), an empty string, or a JavaScript MIME type Indicates that the script is a \"classic script\", containing JavaScript code. Authors are encouraged to omit the attribute if the script refers to JavaScript code rather than specify a MIME type. JavaScript MIME types are listed in the IANA media types specification. importmap This value indicates that the body of the element contains an import map. The import map is a JSON object that developers can use to control how the browser resolves module specifiers when importing JavaScript modules. module This value causes the code to be treated as a JavaScript module. The processing of the script contents is deferred. The charset and defer attributes have no effect. For information on using module, see our JavaScript modules guide. Unlike classic scripts, module scripts require the use of the CORS protocol for cross-origin fetching. speculationrules This value indicates that the body of the element contains speculation rules. Speculation rules take the form of a JSON object that determine what resources should be prefetched or prerendered by the browser. This is part of the Speculation Rules API. Any other value The embedded content is treated as a data block, and won't be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. All of the other attributes will be ignored, including the src attribute.",
54349
54535
  "type": [
54350
54536
  "MIMEType",
54351
54537
  {
@@ -54512,7 +54698,8 @@
54512
54698
  },
54513
54699
  "attributes": {
54514
54700
  "autocomplete": {
54515
- "description": "A string providing a hint for a user agent's autocomplete feature. See The HTML autocomplete attribute for a complete list of values and details on how to use autocomplete."
54701
+ "description": "A string providing a hint for a user agent's autocomplete feature. See The HTML autocomplete attribute for a complete list of values and details on how to use autocomplete.",
54702
+ "type": "AutoCompleteNoWebauthn"
54516
54703
  },
54517
54704
  "autofocus": {
54518
54705
  "description": "This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form element in a document can have the autofocus attribute."
@@ -54524,17 +54711,17 @@
54524
54711
  "description": "The <form> element to associate the <select> with (its form owner). The value of this attribute must be the id of a <form> in the same document. (If this attribute is not set, the <select> is associated with its ancestor <form> element, if any.) This attribute lets you associate <select> elements to <form>s anywhere in the document, not just inside a <form>. It can also override an ancestor <form> element."
54525
54712
  },
54526
54713
  "multiple": {
54527
- "description": "This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time. When multiple is specified, most browsers will show a scrolling list box instead of a single line dropdown. Multiple selected options are submitted using the URLSearchParams array convention, i.e., name=value1&name=value2.",
54714
+ "description": "This Boolean attribute indicates that zero or more options can be selected in the list. If it is not specified, then only one option can be selected at a time. Multiple selected options are submitted using the URLSearchParams array convention, i.e., name=value1&name=value2. If multiple is specified, size defaults to 4 instead of 1.",
54528
54715
  "type": "Boolean"
54529
54716
  },
54530
54717
  "name": {
54531
54718
  "description": "This attribute is used to specify the name of the control."
54532
54719
  },
54533
54720
  "required": {
54534
- "description": "A Boolean attribute indicating that an option with a non-empty string value must be selected."
54721
+ "description": "This Boolean attribute indicates that the user must select at least one option before the form can be submitted. The <select> has no selected options if it has no options, multiple is specified and the user deselects all options, the select's value is programmatically set to \"\", or only the placeholder label option is selected. Any option other than the placeholder label option is considered valid, even if its value is also empty. The placeholder label option is the text shown in the box before the user makes a choice, like the \"--Please choose an option--\" in the Try it demo above. Semantically, it is considered equivalent to the placeholder attribute and is not considered an actual option. It is defined as the first option in the options list which is a direct child of the <select> (not inside an <optgroup>) and has an empty string as its value. It is only relevant when the size is 1 and multiple is not specified; in all other cases, such an <option> is just a regular option due to the way the <select> is rendered."
54535
54722
  },
54536
54723
  "size": {
54537
- "description": "If the control is presented as a scrolling list box (e.g., when multiple is specified), this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0. Note: According to the HTML specification, the default value for size should be 1; however, in practice, this has been found to break some websites, and no other browser currently does that, so Mozilla has opted to continue to return 0 for the time being with Firefox.",
54724
+ "description": "This attribute represents the number of options to show at once, and must be a positive integer. If the value is 1, browsers will render a drop-down list. If the value is greater than 1, browsers will render a scrolling list box that has the specified number of rows visible. If the attribute is not specified, the default value is 1. If the multiple attribute is specified, the default value is 4. However, due to backwards compatibility, the size property will always return 0 as the default value.",
54538
54725
  "type": {
54539
54726
  "type": "integer",
54540
54727
  "gt": 0
@@ -54545,7 +54732,7 @@
54545
54732
  {
54546
54733
  "name": "slot",
54547
54734
  "cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/slot",
54548
- "description": "The <slot> HTML element—part of the Web Components technology suite—is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.",
54735
+ "description": "The <slot> HTML element is a placeholder inside a Web Component that you can fill with your own markup when the component is used. This lets you create separate DOM trees and present them together. Slots can contain plain text, other HTML elements, or other web components. A slot can also contain default content, which is displayed if the slot is not assigned other content when the web component is used.",
54549
54736
  "categories": ["#flow", "#phrasing"],
54550
54737
  "contentModel": {
54551
54738
  "contents": [
@@ -54567,7 +54754,7 @@
54567
54754
  },
54568
54755
  "attributes": {
54569
54756
  "name": {
54570
- "description": "The slot's name. When the slot's containing component gets rendered, the slot is rendered with the custom element's child that has a matching slot attribute. A named slot is a <slot> element with a name attribute. Unnamed slots have the name default to the empty string. Names should be unique per shadow root: if you have two slots with the same name, all of the elements with a matching slot attribute will be assigned to the first slot with that name.",
54757
+ "description": "The slot's name. A named slot is a <slot> element with a name attribute, while an unnamed slot has no name attribute, and the name defaults to the empty string. When a shadow root uses named slot assignment, top-level child elements of its host are rendered in slots that have a matching name in their slot attribute. Slot names should be unique per shadow root: if you have two slots with the same name, all of the elements with a matching slot attribute are rendered in the first slot. All top-level child elements that don't have a slot attribute are rendered in the first unnamed <slot> element, which is referred to as the default slot. The name has no effect if the shadow root uses manual slot assignment. For more information see shadowrootslotassignment on the <template> element and Element.attachShadow().",
54571
54758
  "type": "NoEmptyAny"
54572
54759
  }
54573
54760
  }
@@ -54627,15 +54814,15 @@
54627
54814
  },
54628
54815
  "media": {
54629
54816
  "description": "Specifies the media query for the resource's intended media.",
54630
- "type": "<media-query-list>"
54817
+ "type": "MediaQueryList"
54631
54818
  },
54632
54819
  "sizes": {
54633
54820
  "description": "Specifies a list of source sizes that describe the final rendered width of the image. Allowed if the parent of <source> is <picture>. Not allowed if the parent is <audio> or <video>. The list consists of source sizes separated by commas. Each source size is media condition-length pair. Before laying the page out, the browser uses this information to determine which image defined in srcset to display. Note that sizes will take effect only if width descriptors are provided with srcset, not pixel density descriptors (i.e., 200w should be used instead of 2x).",
54634
- "condition": "picture > source"
54821
+ "condition": "picture > source[srcset]"
54635
54822
  },
54636
54823
  "src": {
54637
54824
  "description": "Specifies the URL of the media resource. Required if the parent of <source> is <audio> or <video>. Not allowed if the parent is <picture>.",
54638
- "type": "URL",
54825
+ "type": "NonEmptyURL",
54639
54826
  "required": ":is(video, audio) > source",
54640
54827
  "condition": ":is(video, audio) > source"
54641
54828
  },
@@ -54702,7 +54889,7 @@
54702
54889
  {
54703
54890
  "name": "strike",
54704
54891
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
54705
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <strike> HTML element places a strikethrough (horizontal line) over text. Warning: This element is deprecated in HTML 4 and XHTML 1, and obsoleted in the HTML Living Standard. If semantically appropriate, i.e., if it represents deleted content, use <del> instead. In all other cases use <s>.",
54892
+ "description": "The <strike> HTML element places a strikethrough (horizontal line) over text. Warning: This element is deprecated in HTML 4 and XHTML 1, and obsoleted in the HTML Living Standard. If semantically appropriate, i.e., if it represents deleted content, use <del> instead. In all other cases use <s>.",
54706
54893
  "categories": [],
54707
54894
  "contentModel": {
54708
54895
  "contents": true
@@ -54780,7 +54967,7 @@
54780
54967
  },
54781
54968
  "media": {
54782
54969
  "description": "This attribute defines which media the style should be applied to. Its value is a media query, which defaults to all if the attribute is missing.",
54783
- "type": "<media-query-list>"
54970
+ "type": "MediaQueryList"
54784
54971
  },
54785
54972
  "nonce": {
54786
54973
  "description": "A cryptographic nonce (number used once) used to allow inline styles in a style-src Content-Security-Policy. The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial."
@@ -54851,6 +55038,24 @@
54851
55038
  "properties": {
54852
55039
  "global": true,
54853
55040
  "role": "button"
55041
+ },
55042
+ "conditions": {
55043
+ "details > summary:not(summary ~ summary)": {
55044
+ "properties": {
55045
+ "global": true,
55046
+ "role": "button",
55047
+ "without": [
55048
+ {
55049
+ "type": "must-not",
55050
+ "name": "aria-expanded"
55051
+ },
55052
+ {
55053
+ "type": "must-not",
55054
+ "name": "aria-pressed"
55055
+ }
55056
+ ]
55057
+ }
55058
+ }
54854
55059
  }
54855
55060
  },
54856
55061
  "omission": false,
@@ -55020,7 +55225,8 @@
55020
55225
  },
55021
55226
  "bgcolor": {
55022
55227
  "description": "Defines the background color of each body cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
55023
- "deprecated": true
55228
+ "deprecated": true,
55229
+ "nonStandard": true
55024
55230
  },
55025
55231
  "char": {
55026
55232
  "description": "Specifies the alignment of the content to a character of each body cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
@@ -55096,7 +55302,7 @@
55096
55302
  "deprecated": true
55097
55303
  },
55098
55304
  "colspan": {
55099
- "description": "Contains a non-negative integer value that indicates how many columns the data cell spans or extends. The default value is 1. User agents dismiss values higher than 1000 as incorrect, setting to the default value (1)."
55305
+ "description": "Contains a non-negative integer value that indicates how many columns the data cell spans or extends. The default value is 1. Values higher than 1000 are clipped to 1000."
55100
55306
  },
55101
55307
  "headers": {
55102
55308
  "description": "Contains a list of space-separated strings, each corresponding to the id attribute of the <th> elements that provide headings for this table cell."
@@ -55125,7 +55331,7 @@
55125
55331
  {
55126
55332
  "name": "template",
55127
55333
  "cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template",
55128
- "description": "The <template> HTML element serves as a mechanism for holding HTML fragments, which can either be used later via JavaScript or generated immediately into shadow DOM.",
55334
+ "description": "The <template> HTML element serves as a mechanism for holding HTML fragments, which can either be used later via JavaScript, generated immediately and inserted into a shadow DOM, or used as part of out-of-order patching with <template for=\"...\">.",
55129
55335
  "categories": ["#metadata", "#flow", "#phrasing", "#script-supporting"],
55130
55336
  "contentModel": {
55131
55337
  "contents": true
@@ -55142,12 +55348,16 @@
55142
55348
  "#HTMLGlobalAttrs": true
55143
55349
  },
55144
55350
  "attributes": {
55351
+ "for": {
55352
+ "description": "The for attribute is used for out-of-order patching with <template for=\"...\">, matching an equivalent <?start id=\"...\"> or <?marker \"...\"> marker. See the out-of-order patching section and examples section."
55353
+ },
55145
55354
  "shadowrootclonable": {
55146
55355
  "description": "Sets the value of the clonable property of a ShadowRoot created using this element to true. If set, a clone of the shadow host (the parent element of this <template>) created with Node.cloneNode() or Document.importNode() will include a shadow root in the copy.",
55147
55356
  "type": "Boolean"
55148
55357
  },
55149
55358
  "shadowrootcustomelementregistry": {
55150
- "description": "Sets the customElementRegistry property of a ShadowRoot created using this element to null, rather than the document's custom element registry. This allows a scoped CustomElementRegistry to be attached later using CustomElementRegistry.initialize()."
55359
+ "description": "Sets the customElementRegistry property of a ShadowRoot created using this element to null, rather than the document's custom element registry. This allows a scoped CustomElementRegistry to be attached later using CustomElementRegistry.initialize().",
55360
+ "type": "Boolean"
55151
55361
  },
55152
55362
  "shadowrootdelegatesfocus": {
55153
55363
  "description": "Sets the value of the delegatesFocus property of a ShadowRoot created using this element to true. If this is set and a non-focusable element in the shadow tree is selected, then focus is delegated to the first focusable element in the tree. The value defaults to false.",
@@ -55170,6 +55380,15 @@
55170
55380
  "shadowrootserializable": {
55171
55381
  "description": "Sets the value of the serializable property of a ShadowRoot created using this element to true. If set, the shadow root may be serialized by calling the Element.getHTML() or ShadowRoot.getHTML() methods with the options.serializableShadowRoots parameter set true. The value defaults to false.",
55172
55382
  "type": "Boolean"
55383
+ },
55384
+ "shadowrootslotassignment": {
55385
+ "description": "Sets the slotAssignment property of a ShadowRoot created using this element. This is the declarative equivalent of the slotAssignment option of the Element.attachShadow() method. named Elements are automatically assigned to <slot> elements within this shadow root. This is the default value. Elements with the slot attribute are assigned to the first <slot> in the template that has the corresponding name attribute. If multiple elements specify the same slot name, they are all added to the first slot in the template that has that name, and rendered in the order they are declared. All unnamed elements — elements that don't specify a slot attribute — are assigned to the default slot in the order they are declared. This is the first unnamed <slot> in the template. manual Elements are manually assigned to particular slot elements using HTMLSlotElement.assign(). No automatic assignment takes place.",
55386
+ "experimental": true,
55387
+ "type": {
55388
+ "enum": ["named", "manual"],
55389
+ "missingValueDefault": "named",
55390
+ "invalidValueDefault": "named"
55391
+ }
55173
55392
  }
55174
55393
  }
55175
55394
  },
@@ -55271,7 +55490,7 @@
55271
55490
  "description": "Specifies whether the <textarea> is subject to spell-checking by the underlying browser/OS. The value can be: true: Indicates that the element needs to have its spelling and grammar checked. default : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own spellcheck value. false : Indicates that the element should not be spell-checked."
55272
55491
  },
55273
55492
  "wrap": {
55274
- "description": "Indicates how the control should wrap the value for form submission. Possible values are: hard: The browser automatically inserts line breaks (CR+LF) so that each line is no longer than the width of the control; the cols attribute must be specified for this to take effect soft: The browser ensures that all line breaks in the entered value are a CR+LF pair, but no additional line breaks are added to the value. off Non-standard : Like soft but changes appearance to white-space: pre so line segments exceeding cols are not wrapped and the <textarea> becomes horizontally scrollable. If this attribute is not specified, soft is its default value.",
55493
+ "description": "Indicates how the control should wrap the value for form submission. Possible values are: hard: The browser automatically inserts line breaks (CR+LF) so that each line is no longer than the width of the control; the cols attribute must be specified for this to take effect soft: The browser ensures that all line breaks in the entered value are a CR+LF pair, but no additional line breaks are added to the value. off : Like soft but changes appearance to white-space: pre so line segments exceeding cols are not wrapped and the <textarea> becomes horizontally scrollable. If this attribute is not specified, soft is its default value.",
55275
55494
  "type": {
55276
55495
  "enum": ["soft", "hard"],
55277
55496
  "missingValueDefault": "soft",
@@ -55309,7 +55528,8 @@
55309
55528
  },
55310
55529
  "bgcolor": {
55311
55530
  "description": "Defines the background color of each foot cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
55312
- "deprecated": true
55531
+ "deprecated": true,
55532
+ "nonStandard": true
55313
55533
  },
55314
55534
  "char": {
55315
55535
  "description": "Does nothing. It was originally intended to specify the alignment of the content to a character of each foot cell. Typical values for this include a period (.) when attempting to align numbers or monetary values. If align is not set to char, this attribute is ignored.",
@@ -55397,7 +55617,7 @@
55397
55617
  "deprecated": true
55398
55618
  },
55399
55619
  "colspan": {
55400
- "description": "A non-negative integer value indicating how many columns the header cell spans or extends. The default value is 1. User agents dismiss values higher than 1000 as incorrect, defaulting such values to 1."
55620
+ "description": "A non-negative integer value indicating how many columns the header cell spans or extends. The default value is 1. Values higher than 1000 are clipped to 1000."
55401
55621
  },
55402
55622
  "headers": {
55403
55623
  "description": "A list of space-separated strings corresponding to the id attributes of the <th> elements that provide the headers for this header cell."
@@ -55456,7 +55676,8 @@
55456
55676
  },
55457
55677
  "bgcolor": {
55458
55678
  "description": "Defines the background color of each head cell. The value is an HTML color; either a 6-digit hexadecimal RGB code, prefixed by a #, or a color keyword. Other CSS <color> values are not supported. Use the background-color CSS property instead, as this attribute is deprecated.",
55459
- "deprecated": true
55679
+ "deprecated": true,
55680
+ "nonStandard": true
55460
55681
  },
55461
55682
  "char": {
55462
55683
  "description": "Does nothing. It was originally intended to specify the alignment of the content to a character of each head cell. If align is not set to char, this attribute is ignored.",
@@ -55619,7 +55840,7 @@
55619
55840
  },
55620
55841
  "src": {
55621
55842
  "description": "Address of the track (.vtt file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document — unless the <audio> or <video> parent element of the track element has a crossorigin attribute.",
55622
- "type": "URL",
55843
+ "type": "NonEmptyURL",
55623
55844
  "required": true
55624
55845
  },
55625
55846
  "srclang": {
@@ -55631,7 +55852,7 @@
55631
55852
  {
55632
55853
  "name": "tt",
55633
55854
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
55634
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <tt> HTML element creates inline text which is presented using the user agent's default monospace font face. This element was created for the purpose of rendering text as it would be displayed on a fixed-width display such as a teletype, text-only screen, or line printer. The terms non-proportional, monotype, and monospace are used interchangeably and have the same general meaning: they describe a typeface whose characters are all the same number of pixels wide. This element is obsolete, however. You should use the more semantically helpful <code>, <kbd>, <samp>, or <var> elements for inline text that needs to be presented in monospace type, or the <pre> tag for content that should be presented as a separate block. Note: If none of the semantic elements are appropriate for your use case (for example, if you need to show some content in a non-proportional font), you should consider using the <span> element, styling it as desired using CSS. The font-family property is a good place to start.",
55855
+ "description": "The <tt> HTML element creates inline text which is presented using the user agent's default monospace font face. This element was created for the purpose of rendering text as it would be displayed on a fixed-width display such as a teletype, text-only screen, or line printer. The terms non-proportional, monotype, and monospace are used interchangeably and have the same general meaning: they describe a typeface whose characters are all the same number of pixels wide. This element is obsolete, however. You should use the more semantically helpful <code>, <kbd>, <samp>, or <var> elements for inline text that needs to be presented in monospace type, or the <pre> tag for content that should be presented as a separate block. Note: If none of the semantic elements are appropriate for your use case (for example, if you need to show some content in a non-proportional font), you should consider using the <span> element, styling it as desired using CSS. The font-family property is a good place to start.",
55635
55856
  "categories": [],
55636
55857
  "contentModel": {
55637
55858
  "contents": true
@@ -55856,7 +56077,7 @@
55856
56077
  "description": "A Boolean attribute; if specified, the browser will automatically seek back to the start upon reaching the end of the video."
55857
56078
  },
55858
56079
  "muted": {
55859
- "description": "A Boolean attribute that indicates the default audio mute setting contained in the video. If set, the audio will be initially silenced. Its default value is false, meaning the audio will be played when the video is played."
56080
+ "description": "A Boolean attribute that indicates the default audio mute setting contained in the video. If set, the audio will be initially silenced. Its default value is false, meaning the audio will be heard when the video is played. Note: To unmute, setting muted=\"false\" will not work; the audio will be muted if the attribute is present at all. To unmute, the attribute must be removed entirely."
55860
56081
  },
55861
56082
  "playsinline": {
55862
56083
  "description": "A Boolean attribute indicating that the video is to be played \"inline\", that is, within the element's playback area. Note that the absence of this attribute does not imply that the video will always be played in fullscreen.",
@@ -55864,7 +56085,7 @@
55864
56085
  },
55865
56086
  "poster": {
55866
56087
  "description": "A URL for an image to be shown while the video is downloading. If this attribute isn't specified, nothing is displayed until the first frame is available, then the first frame is shown as the poster frame. Note: Videos with the loading=\"lazy\" attribute set will only download the poster resource once the video is near or within the viewport.",
55867
- "type": "URL"
56088
+ "type": "NonEmptyURL"
55868
56089
  },
55869
56090
  "preload": {
55870
56091
  "description": "This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience regarding what content is loaded before the video is played. It may have one of the following values: none: Indicates that the video should not be preloaded. metadata: Indicates that only video metadata (e.g., length) is fetched. auto: Indicates that the whole video file can be downloaded, even if the user is not expected to use it. empty string: A synonym of the auto value. The default value is different for each browser. The spec advises it to be set to metadata. Note: Videos with the loading=\"lazy\" attribute set will only apply the preload behavior once the video is near or within the viewport. The autoplay attribute has precedence over preload. If autoplay is specified, the browser would obviously need to start downloading the video for playback. The specification does not force the browser to follow the value of this attribute; it is a mere hint."
@@ -55906,7 +56127,7 @@
55906
56127
  {
55907
56128
  "name": "xmp",
55908
56129
  "cite": "https://html.spec.whatwg.org/multipage/obsolete.html#non-conforming-features",
55909
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.",
56130
+ "description": "Summary The <xmp> HTML element renders text between the start and end tags without interpreting the HTML in between and using a monospaced font. The HTML2 specification recommended that it should be rendered wide enough to allow 80 characters per line. Note: Do not use this element. It has been deprecated since HTML3.2 and was not implemented in a consistent way. It was completely removed from current HTML. Use the <pre> element or, if semantically adequate, the <code> element instead. Note that you will need to escape the < character as &lt; and the & character as &amp; to make sure they are not interpreted as markup. A monospaced font can also be obtained on any element, by applying an adequate CSS style using monospace as the generic-font value for the font-family property.",
55910
56131
  "categories": [],
55911
56132
  "contentModel": {
55912
56133
  "contents": true
@@ -56000,7 +56221,7 @@
56000
56221
  "name": "mml:maction",
56001
56222
  "namespace": "http://www.w3.org/1998/Math/MathML",
56002
56223
  "cite": "https://developer.mozilla.org/en-US/docs/Web/MathML/Reference/Element/maction",
56003
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The <maction> MathML element allows to bind actions to mathematical expressions. By default, only the first child is rendered but some browsers may take into account actiontype and selection attributes to implement custom behaviors. Note: Historically, this element provided a mechanism to make MathML formulas interactive. Nowadays, it is recommended to rely on JavaScript and other Web technologies to implement this use case.",
56224
+ "description": "The <maction> MathML element allows you to bind actions to mathematical expressions. By default, only the first child is rendered but some browsers may take into account actiontype and selection attributes to implement custom behaviors. Note: Historically, this element provided a mechanism to make MathML formulas interactive. Nowadays, it is recommended to rely on JavaScript and other Web technologies to implement this use case.",
56004
56225
  "categories": [],
56005
56226
  "contentModel": {
56006
56227
  "contents": [
@@ -56050,16 +56271,7 @@
56050
56271
  "contentModel": {
56051
56272
  "contents": [
56052
56273
  {
56053
- "zeroOrMore": [
56054
- ":model(MathMLPresentation)",
56055
- "mml|semantics",
56056
- "mml|annotation",
56057
- "mml|annotation-xml",
56058
- "mml|mtr",
56059
- "mml|mtd",
56060
- "mml|mprescripts",
56061
- "#text"
56062
- ]
56274
+ "zeroOrMore": [":model(MathMLPresentation)", "mml|semantics", "#text"]
56063
56275
  }
56064
56276
  ]
56065
56277
  },
@@ -56167,7 +56379,7 @@
56167
56379
  "name": "mml:mfenced",
56168
56380
  "namespace": "http://www.w3.org/1998/Math/MathML",
56169
56381
  "cite": "https://developer.mozilla.org/en-US/docs/Web/MathML/Reference/Element/mfenced",
56170
- "description": "Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists. The <mfenced> MathML element provides the possibility to add custom opening and closing brackets (such as parentheses) and separators (such as commas or semicolons) to an expression. Note: Historically, the <mfenced> element was defined as a shorthand for writing fenced expressions and equivalent to an expanded form involving <mrow> and <mo> elements. Nowadays, it is recommended to use that equivalent form instead.",
56382
+ "description": "Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists. The <mfenced> MathML element provides the possibility to add custom opening and closing brackets (such as parentheses) and separators (such as commas or semicolons) to an expression. Note: Historically, the <mfenced> element was defined as a shorthand for writing fenced expressions and equivalent to an expanded form involving <mrow> and <mo> elements. Nowadays, it is recommended to use that equivalent form instead.",
56171
56383
  "categories": [],
56172
56384
  "contentModel": {
56173
56385
  "contents": [
@@ -56221,7 +56433,8 @@
56221
56433
  "contentModel": {
56222
56434
  "contents": [
56223
56435
  {
56224
- "oneOrMore": [":model(MathMLPresentation)", "mml|semantics", "#text"],
56436
+ "require": [":model(MathMLPresentation)", "mml|semantics", "#text"],
56437
+ "min": 2,
56225
56438
  "max": 2
56226
56439
  }
56227
56440
  ]
@@ -56284,7 +56497,7 @@
56284
56497
  },
56285
56498
  "attributes": {
56286
56499
  "mathvariant": {
56287
- "description": "The only value allowed in the current specification is normal (case insensitive): normal Use default/normal rendering, removing automatic styling of single characters to italic. Deprecated legacy values are: bold Deprecated Try and use bold characters e.g., \"𝐀\". italic Deprecated Try and use italic characters e.g., \"𝐴\". bold-italic Deprecated Try and use bold-italic characters e.g., \"𝑨\". double-struck Deprecated Try and use double-struck characters e.g., \"𝔸\". bold-fraktur Deprecated Try and use bold-fraktur characters e.g., \"𝕬\". script Deprecated Try and use script characters e.g., \"𝒜\". bold-script Deprecated Try and use bold-script characters e.g., \"𝓐\". fraktur Deprecated Try and use fraktur characters e.g., \"𝔄\". sans-serif Deprecated Try and use sans-serif characters e.g., \"𝖠\". bold-sans-serif Deprecated Try and use bold-sans-serif characters e.g., \"𝗔\". sans-serif-italic Deprecated Try and use sans-serif-italic characters e.g., \"𝘈\". sans-serif-bold-italic Deprecated Try and use sans-serif-bold-italic characters e.g., \"𝘼\". monospace Deprecated Try and use monospace characters e.g., \"𝙰\". initial Deprecated Try and use initial characters e.g., \"𞸢\". tailed Deprecated Try and use tailed characters e.g., \"𞹂\". looped Deprecated Try and use looped characters e.g., \"𞺂\". stretched Deprecated Try and use stretched characters e.g., \"𞹢\".",
56500
+ "description": "The only value allowed in the current specification is normal (case insensitive): normal Use default/normal rendering, removing automatic styling of single characters to italic. Deprecated legacy values are: bold Try and use bold characters e.g., \"𝐀\". italic Try and use italic characters e.g., \"𝐴\". bold-italic Try and use bold-italic characters e.g., \"𝑨\". double-struck Try and use double-struck characters e.g., \"𝔸\". bold-fraktur Try and use bold-fraktur characters e.g., \"𝕬\". script Try and use script characters e.g., \"𝒜\". bold-script Try and use bold-script characters e.g., \"𝓐\". fraktur Try and use fraktur characters e.g., \"𝔄\". sans-serif Try and use sans-serif characters e.g., \"𝖠\". bold-sans-serif Try and use bold-sans-serif characters e.g., \"𝗔\". sans-serif-italic Try and use sans-serif-italic characters e.g., \"𝘈\". sans-serif-bold-italic Try and use sans-serif-bold-italic characters e.g., \"𝘼\". monospace Try and use monospace characters e.g., \"𝙰\". initial Try and use initial characters e.g., \"𞸢\". tailed Try and use tailed characters e.g., \"𞹂\". looped Try and use looped characters e.g., \"𞺂\". stretched Try and use stretched characters e.g., \"𞹢\".",
56288
56501
  "type": {
56289
56502
  "enum": ["normal"],
56290
56503
  "disallowToSurroundBySpaces": false
@@ -56473,13 +56686,14 @@
56473
56686
  "contentModel": {
56474
56687
  "contents": [
56475
56688
  {
56476
- "oneOrMore": [
56689
+ "require": [
56477
56690
  ":model(MathMLPresentation)",
56478
56691
  "mml|semantics",
56479
56692
  "mml|annotation",
56480
56693
  "mml|annotation-xml",
56481
56694
  "#text"
56482
56695
  ],
56696
+ "min": 2,
56483
56697
  "max": 2
56484
56698
  }
56485
56699
  ]
@@ -56617,7 +56831,8 @@
56617
56831
  "contentModel": {
56618
56832
  "contents": [
56619
56833
  {
56620
- "oneOrMore": [":model(MathMLPresentation)", "mml|semantics", "#text"],
56834
+ "require": [":model(MathMLPresentation)", "mml|semantics", "#text"],
56835
+ "min": 2,
56621
56836
  "max": 2
56622
56837
  }
56623
56838
  ]
@@ -56824,13 +57039,14 @@
56824
57039
  "contentModel": {
56825
57040
  "contents": [
56826
57041
  {
56827
- "oneOrMore": [
57042
+ "require": [
56828
57043
  ":model(MathMLPresentation)",
56829
57044
  "mml|semantics",
56830
57045
  "mml|annotation",
56831
57046
  "mml|annotation-xml",
56832
57047
  "#text"
56833
57048
  ],
57049
+ "min": 2,
56834
57050
  "max": 2
56835
57051
  }
56836
57052
  ]
@@ -56862,13 +57078,14 @@
56862
57078
  "contentModel": {
56863
57079
  "contents": [
56864
57080
  {
56865
- "oneOrMore": [
57081
+ "require": [
56866
57082
  ":model(MathMLPresentation)",
56867
57083
  "mml|semantics",
56868
57084
  "mml|annotation",
56869
57085
  "mml|annotation-xml",
56870
57086
  "#text"
56871
57087
  ],
57088
+ "min": 3,
56872
57089
  "max": 3
56873
57090
  }
56874
57091
  ]
@@ -56905,13 +57122,14 @@
56905
57122
  "contentModel": {
56906
57123
  "contents": [
56907
57124
  {
56908
- "oneOrMore": [
57125
+ "require": [
56909
57126
  ":model(MathMLPresentation)",
56910
57127
  "mml|semantics",
56911
57128
  "mml|annotation",
56912
57129
  "mml|annotation-xml",
56913
57130
  "#text"
56914
57131
  ],
57132
+ "min": 2,
56915
57133
  "max": 2
56916
57134
  }
56917
57135
  ]
@@ -57128,13 +57346,14 @@
57128
57346
  "contentModel": {
57129
57347
  "contents": [
57130
57348
  {
57131
- "oneOrMore": [
57349
+ "require": [
57132
57350
  ":model(MathMLPresentation)",
57133
57351
  "mml|semantics",
57134
57352
  "mml|annotation",
57135
57353
  "mml|annotation-xml",
57136
57354
  "#text"
57137
57355
  ],
57356
+ "min": 2,
57138
57357
  "max": 2
57139
57358
  }
57140
57359
  ]
@@ -57168,13 +57387,14 @@
57168
57387
  "contentModel": {
57169
57388
  "contents": [
57170
57389
  {
57171
- "oneOrMore": [
57390
+ "require": [
57172
57391
  ":model(MathMLPresentation)",
57173
57392
  "mml|semantics",
57174
57393
  "mml|annotation",
57175
57394
  "mml|annotation-xml",
57176
57395
  "#text"
57177
57396
  ],
57397
+ "min": 3,
57178
57398
  "max": 3
57179
57399
  }
57180
57400
  ]
@@ -57249,14 +57469,14 @@
57249
57469
  "condition": "svg|switch > svg|a",
57250
57470
  "contents": [
57251
57471
  {
57252
- "transparent": "*"
57472
+ "transparent": ":not(svg|a, :has(svg|a))"
57253
57473
  }
57254
57474
  ]
57255
57475
  }
57256
57476
  ],
57257
57477
  "contents": [
57258
57478
  {
57259
- "transparent": "*, :model(SVGDescriptive):not(svg|a, :has(svg|a))"
57479
+ "transparent": ":not(svg|a, :has(svg|a))"
57260
57480
  }
57261
57481
  ]
57262
57482
  },
@@ -59420,7 +59640,7 @@
59420
59640
  "name": "svg:feGaussianBlur",
59421
59641
  "namespace": "http://www.w3.org/2000/svg",
59422
59642
  "cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feGaussianBlur",
59423
- "description": "The <feGaussianBlur> SVG filter primitive blurs the input image by the amount specified in stdDeviation, which defines the bell-curve. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead.",
59643
+ "description": "The <feGaussianBlur> SVG filter primitive blurs the input image by the amount specified in stdDeviation, which defines the bell-curve. Like other filter primitives, it handles color components in the linearRGB color space by default. You can use color-interpolation-filters to use sRGB instead. A Gaussian blur can extend beyond the bounds of the input image. The <filter> element's x, y, width, and height attributes define the filter region within which the blurred output is rendered; pixels outside this region are clipped. By default, x and y are -10% and width and height are 120%, providing a margin for the blur to spread. For larger stdDeviation values, expand the filter region further. For example: svg<filter x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\">",
59424
59644
  "categories": [],
59425
59645
  "contentModel": {
59426
59646
  "contents": [
@@ -59986,7 +60206,7 @@
59986
60206
  "name": "svg:fePointLight",
59987
60207
  "namespace": "http://www.w3.org/2000/svg",
59988
60208
  "cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/fePointLight",
59989
- "description": "The <fePointLight> SVG element defines a light source which allows to create a point light effect. It can be used within a lighting filter primitive: <feDiffuseLighting> or <feSpecularLighting>.",
60209
+ "description": "The <fePointLight> SVG element defines a light source which allows you to create a point light effect. It can be used within a lighting filter primitive: <feDiffuseLighting> or <feSpecularLighting>.",
59990
60210
  "categories": [],
59991
60211
  "contentModel": {
59992
60212
  "contents": [
@@ -60219,7 +60439,7 @@
60219
60439
  "name": "svg:feTile",
60220
60440
  "namespace": "http://www.w3.org/2000/svg",
60221
60441
  "cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feTile",
60222
- "description": "The <feTile> SVG filter primitive allows to fill a target rectangle with a repeated, tiled pattern of an input image. The effect is similar to the one of a <pattern>.",
60442
+ "description": "The <feTile> SVG filter primitive allows you to fill a target rectangle with a repeated, tiled pattern of an input image. The effect is similar to the one of a <pattern>.",
60223
60443
  "categories": [],
60224
60444
  "contentModel": {
60225
60445
  "contents": [
@@ -60690,7 +60910,7 @@
60690
60910
  "name": "svg:g",
60691
60911
  "namespace": "http://www.w3.org/2000/svg",
60692
60912
  "cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/g",
60693
- "description": "The <g> SVG element is a container used to group other SVG elements. Transformations applied to the <g> element are performed on its child elements, and its attributes are inherited by its children. It can also group multiple elements to be referenced later with the <use> element.",
60913
+ "description": "The <g> SVG element is a container used to group other SVG elements. Transformations applied to the <g> element are performed on its child elements, and most of its presentation attributes are inherited by its children. It can also group multiple elements to be referenced later with the <use> element.",
60694
60914
  "categories": [],
60695
60915
  "contentModel": {
60696
60916
  "contents": [
@@ -62483,7 +62703,7 @@
62483
62703
  "name": "svg:script",
62484
62704
  "namespace": "http://www.w3.org/2000/svg",
62485
62705
  "cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/script",
62486
- "description": "The <script> SVG element allows to add scripts to an SVG document. Note: While SVG's script element is equivalent to the HTML <script> element, it has some discrepancies, like it uses the href attribute instead of src and it doesn't support ECMAScript modules so far (See browser compatibility below for details)",
62706
+ "description": "The <script> SVG element allows you to add scripts to an SVG document. Note: While SVG's script element is equivalent to the HTML <script> element, it has some discrepancies, like it uses the href attribute instead of src and it doesn't support ECMAScript modules so far (See browser compatibility below for details)",
62487
62707
  "categories": [],
62488
62708
  "contentModel": {
62489
62709
  "contents": [
@@ -62503,6 +62723,11 @@
62503
62723
  "#XLinkAttrs": ["xlink:href", "xlink:title"]
62504
62724
  },
62505
62725
  "attributes": {
62726
+ "async": {
62727
+ "description": "If the async attribute is present, then the external script will be fetched in parallel to parsing and evaluated as soon as it is available. Equivalent to the async attribute on the HTML <script> element. Value type: boolean; Default value: none; Animatable: no",
62728
+ "experimental": true,
62729
+ "type": "Boolean"
62730
+ },
62506
62731
  "crossorigin": {
62507
62732
  "description": "This attribute defines CORS settings as define for the HTML <script> element. Value type: [ anonymous | use-credentials ]?; Default value: ?; Animatable: yes",
62508
62733
  "type": {
@@ -62511,6 +62736,11 @@
62511
62736
  },
62512
62737
  "animatable": true
62513
62738
  },
62739
+ "defer": {
62740
+ "description": "If the defer attribute is present, then the external script will be executed after the document has been parsed, but before firing DOMContentLoaded. Equivalent to the defer attribute on the HTML <script> element. Value type: boolean; Default value: none; Animatable: no",
62741
+ "experimental": true,
62742
+ "type": "Boolean"
62743
+ },
62514
62744
  "fetchpriority": {
62515
62745
  "description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Fetches the external script at a high priority relative to other external scripts. low Fetches the external script at a low priority relative to other external scripts. auto Doesn't set a preference for the fetch priority. It is used if no value or an invalid value is set. This is the default.",
62516
62746
  "experimental": true,
@@ -62713,7 +62943,7 @@
62713
62943
  "attributes": {
62714
62944
  "media": {
62715
62945
  "description": "This attribute defines to which media the style applies. Value type: <media-query-list>; Default value: all; Animatable: no",
62716
- "type": "<media-query-list>",
62946
+ "type": "MediaQueryList",
62717
62947
  "defaultValue": "all"
62718
62948
  },
62719
62949
  "title": {
@@ -62902,7 +63132,7 @@
62902
63132
  "name": "svg:switch",
62903
63133
  "namespace": "http://www.w3.org/2000/svg",
62904
63134
  "cite": "https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/switch",
62905
- "description": "The <switch> SVG element evaluates any requiredFeatures, requiredExtensions and systemLanguage attributes on its direct child elements in order, and then renders the first child where these attributes evaluate to true. Other direct children will be bypassed and therefore not rendered. If a child element is a container element, like <g>, then its subtree is also processed/rendered or bypassed/not rendered. Note: The display and visibility properties have no effect on <switch> element processing. In particular, setting display:none on a child has no effect on the true/false testing for <switch> processing.",
63135
+ "description": "The <switch> SVG element evaluates any requiredExtensions and systemLanguage attributes on its direct child elements in order, and then renders the first child where these attributes evaluate to true. Other direct children will be bypassed and therefore not rendered. If a child element is a container element, like <g>, then its subtree is also processed/rendered or bypassed/not rendered. Note: The display and visibility properties have no effect on <switch> element processing. In particular, setting display:none on a child has no effect on the true/false testing for <switch> processing.",
62906
63136
  "categories": [],
62907
63137
  "contentModel": {
62908
63138
  "contents": [